Systemd為什麼
為什麼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
什麼都不做。為什麼?請詳細說明。
這在systemd 服務文件中有詳細解釋,但您幾乎需要閱讀所有內容才能了解發生了什麼。在這種情況下,最相關的部分是範例 3;從中,讀者可以收集到您聲明的 oneshot 服務永遠不會啟動,因此它的停止操作將在其啟動操作完成後執行。
為了實現您所追求的,您需要一個仍然啟動的 oneshot 服務:
[Unit] Description=delete file [Service] Type=oneshot RemainAfterExit=yes ExecStop=/bin/bash /home/mytest.sh [Install] WantedBy=multi-user.target