次に、システムを起動するときに実行したいのですが、後続の起動では実行したくないスクリプトがあります。 systemdを使用して起動したかったので、次の場所にサービスファイルを作成しました/usr/lib/systemd/system/myscript.service
。
[Unit]
Description=My script.
[Service]
Type=oneshot
ExecStart=/opt/mypackage/bin/myscript
[Install]
WantedBy=multi-user.target
systemdにsystemctl enable myscript.service
。
後続の実行時に実行を停止するにはどうすればよいですか?
systemctl disable myscript.service
スクリプトの最後に追加できますが、これは常にサービスを無効にします。可能であれば、サービスを有効にして起動してから、次回の起動時に引き続き実行したいと思います。
ベストアンサー1
このConditionPathExists=
ディレクティブ(参照systemd.unit(5)
)を使用して、条件付きでデバイスを起動できます。これにより、デバイスを永久に有効にし、単純なファイルを削除して(一時的に)無効にすることができます。
systemctl start
systemdでは、「起動時の開始」と「起動」の間に違いはありません。回避策は、スクリプトで稼働時間を確認して、次の起動時にデバイスを有効/無効にするかどうかを判断できるようにすることです(ファイルの削除/作成ConditionPathExists=
)。