次回の起動時にsystemdサービスデバイスを実行しますが、後続の起動では実行しません

次回の起動時にsystemdサービスデバイスを実行しますが、後続の起動では実行しません

次に、システムを起動するときに実行したいのですが、後続の起動では実行したくないスクリプトがあります。 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 startsystemdでは、「起動時の開始」と「起動」の間に違いはありません。回避策は、スクリプトで稼働時間を確認して、次の起動時にデバイスを有効/無効にするかどうかを判断できるようにすることです(ファイルの削除/作成ConditionPathExists=)。

おすすめ記事