systemd - ワンショットが完了した後、無効にして再起動します。

systemd - ワンショットが完了した後、無効にして再起動します。

スクリプトが完了したら、コンピュータを再起動したいと思います。oneshot次の再起動時に現在のサービスを開始しないでください。次のシステム単位ファイルを作成しました。

仮想サービス

[Unit]
Description=Custom Unit File Automation
Wants=multi-user.target
After=multi-user.target
SuccessAction=reboot

[Service]
User=veeru
Type=oneshot
RemainAfterExit=no
ExecStart=/bin/bash -c "<command> <args>"
StandardOutput=/var/log/command_out.log
StandardError=/var/log/command_err.log
ExecStartPost=/bin/bash -c "/usr/bin/sudo /usr/bin/systemctl disable /etc/systemd/system/playbook_2.service"


[Install]
WantedBy=multi-user.target

サービスを無効にできましたsystemctl。ただし、コンピュータを再起動できませんstatus

Jun 28 01:45:55 hyddrogen systemd[1]: [/etc/systemd/system/dummy.service:5] Unknown lvalue 'SuccessAction' in section 'Unit'

サービスを無効にしてコンピュータを再起動するための適切なオプションはありますか?挿入できますが、reboot挿入しExecStartPostたくない

修正する

SuccessActionに選択肢がありました。文書

ベストアンサー1

少し掘り下げて、私はこれを行う方法を見つけました。これは私のユニットファイルです

[Unit]
Description=Custom Unit File Automation
After=default.target
DefaultDependencies=no
Before=shutdown.target

[Service]
User=veeru
Type=oneshot
RemainAfterExit=no
ExecStart=/bin/bash -c "<command> <args>"
StandardOutput=file:/var/log/command_out.log
StandardError=file:/var/log/command_err.log
ExecStartPost=/usr/bin/sudo /usr/bin/systemctl disable /etc/systemd/system/dummy.service
ExecStop=/usr/bin/sudo /usr/sbin/reboot

[Install]
WantedBy=default.target

~からsystemd "oneshot"サービスがシャットダウンをトリガーします。、再起動する前にデーモンを停止するより良い方法であるとDefaultDependencies=no追加しました。Before=shutdown.target

おすすめ記事