我試圖用systemd執行shell腳本。系統單元文件tr問題
如果我從bash運行我的腳本,一切正常。但是,如果我通過systemd運行相同的腳本,它永遠不會結束。它似乎掛的命令是:
random="$(LC_ALL=C tr -cd '[:alnum:]' < /dev/urandom | fold -w128 | head -n1)"
如果我有random="1234"
替換該行還與systemd運行。我猜'掛'命令是tr
- 它的過程永遠不會結束。
這是我使用的systemd單元文件:
[Unit]
Description=my script
[Service]
Type=forking
Restart=on-failure
ExecStart=/mypath/script.sh start
ExecStop=/bin/kill $MAINPID
ExecStopPost=/bin/rm -f /mypath/RUNNING_PID
[Install]
WantedBy=multi-user.target
您的服務叉嗎?如果不是,那麼'Type = fork'是錯誤的服務類型。請參閱'man systemd.service'獲取選項。 –
如果systemd發現腳本以非零狀態退出,那麼'Restart = on-failure'會重新啓動它。是'random =「$(LC_ALL = C tr -cd'[:alnum:]' dev/urandom | fold -w128 | head -n1)」'腳本中的最後一條命令? – alvits
@alvits是的,我想重啓服務,如果它崩潰。並且:tr不是腳本中的最後一個命令。 – Kris