サーバーが(再び)起動したときにシェルスクリプトを起動するためのLinuxサービスを作成しました。私のサーバーのテスト中にサービスを手動で起動すると起動できますが、「systemctl」を使用して有効にすると起動できないことがわかりました。原因は何ですか?
私のログ:
systemctlステータススクリプト。サービス
script.service - name
Loaded: loaded (/etc/systemd/system/scriptname.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2024-03-04 15:39:34 CET; 3min 45s ago
Process: 1303 ExecStart=/usr/local/bin/scriptname.sh (code=exited, status=126)
Main PID: 1303 (code=exited, status=126)
Mar 04 15:39:34 sar systemd[1]: Started ######.
Mar 04 15:39:34 sar systemd[1]: scriptname.service: main process exited, code=exited, status=126/n/a
Mar 04 15:39:34 sar systemd[1]: Unit scriptname.service entered failed state.
Mar 04 15:39:34 sar systemd[1]: scriptname.service failed.
Journalctl -uサービス名。service tail -n 50 |
-- Reboot --
Mar 04 15:39:34 sar systemd[1]: Started #####.
Mar 04 15:39:34 sar systemd[1]: scriptname.service: main process exited, code=exited, status=126/n/a
Mar 04 15:39:34 sar systemd[1]: Unit scriptname.service entered failed state.
Mar 04 15:39:34 sar systemd[1]: scriptname.service failed.
答え1
解決策は次のとおりです。
サービスファイルを次のように変更すると問題が解決しました。
Group
、Restart
および行を追加するとWantedBy
正常に起動します。- グループIDを自分のユーザーIDに変更します。
vi /etc/systemd/system/servicename.service
[Unit]
Description= app description
After=network.target
Wants=network-online.target #(optional)
[Service]
Type=simple
User=t9s1takuser
Group=208816585
ExecStart=/usr/local/bin/myscript.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target