「systemctl stop service」がサービスを呼び出せないのはなぜですか?

「systemctl stop service」がサービスを呼び出せないのはなぜですか?
vim /home/mytest.sh
rm -f /home/mytest/*

削除操作を実行するサービスを作成したいと思います。
私の期待:
sudo systemctl stop mytest/home/mytestのファイルを削除し、何もできません
sudo systemctl start mytest

マイサービスファイルを編集します。

sudo vim /etc/systemd/system/mytest.service
[Unit]
Description=delete file

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/bash /home/mytest.sh

[Install]
WantedBy=multi-user.target

有効にしてください。

sudo systemctl enable mytest

これでmytestサービスに奇妙な動作があることがわかりました。

sudo systemctl start mytest/home/mytestにあるファイルを削除し、
sudo systemctl stop mytest何もできません。

なぜ?詳しく説明してください。

答え1

これについて詳しく説明します。システムサービス文書しかし、何が起こっているのかを理解するには、ほとんどすべての内容を読む必要があります。この例の中で最も関連性の高い部分は実施例3である。宣言した 1 回限りのサービスは決してアクティブ化されないため、開始ジョブが完了すると停止ジョブが実行されることを読者は理解できます。

目標を達成するには、まだアクティブなワンタイムサービスが必要です。

[Unit]
Description=delete file

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStop=/bin/bash /home/mytest.sh

[Install]
WantedBy=multi-user.target

答え2

systemdデフォルトでは、cgroupを介して開始されたすべてのプロセスを追跡し、 「はい、mytest.serviceが実行されており、RemainAfterExit=yesそのcgroupに残っているプロセスがない場合でもまだアクティブであると見なされる必要があります」を指定しない限り、ステータス情報は保持されません。

RemainAfterExit=yesそうでなければcgroupだけ見てプロセスがないので、ただ「停止されたようだから…そこにはやるべきことがない!」と思いますsystemctl stop mytestsystemdsystemd/system.slice/mytest.service

関連情報