"systemd-run --on-calendar"を使用して生成されたタイマーを削除する

"systemd-run --on-calendar"を使用して生成されたタイマーを削除する

systemd-run --on-calendar ....「これで正しいファイルに置き換えました」を使用して.timerシステムジョブを作成しましたが、.service以前のジョブを削除することはできません。停止して無効にすることはできますが、呼び出すと、systemctl list-timersまだランダムな名前で表示されますrun-r0d0dc22...。また、その文書が見つかりまし.timerたが見つかりませんでした。

答え1

一時ファイルは最終的に表示され、/run/user/ユーザーがログオフ(使用)するか再起動(再作成)するまで削除されないようですsystemd-run --user/run

たとえば、特定の時間に一度だけ実行されるコマンドを生成する場合:

systemd-run --user --on-calendar '2017-08-12 14:46' /bin/bash -c 'echo done >/tmp/done'

次の場所からファイルを入手できます/run

/run/user/1000/systemd/user/run-28810.service
/run/user/1000/systemd/user/run-28810.service.d/50-Description.conf
/run/user/1000/systemd/user/run-28810.service.d/50-ExecStart.conf
/run/user/1000/systemd/user/run-28810.timer
/run/user/1000/systemd/user/run-28810.timer.d/50-Description.conf
/run/user/1000/systemd/user/run-28810.timer.d/50-OnCalendar.conf

--user以外のファイルの場合/run/systemd/system/

ファイルを削除しsystemctl [--user] daemon-reloadて次の操作を行うと、list-timersデバイス名のみが実行された場合は最後の履歴とともに表示されます。この情報はsystemdの内部状態またはログファイルに保存できます。

答え2

許可された回答(ファイルを削除してaを実行)が機能しませんでした。代わりに;を使用してタイマーを削除daemon-reloadできました。systemd --user stop unitfileただし、ユニットファイルを使用したため異なる場合があります。


私の質問「Systemd as atreplacement」が「まったく同じ」とマークされているので、削除して次のように投稿します。

systemdなどを使いたいですat。シェルスクリプトを実行するユニットファイルを作成しましたが(「%I」渡し)、スケジュールに問題があります。これにより、実行後にタイマーを削除するのではなく、明日実行するようにタイマーをアクティブに保ちます。~/.config/systemd/user/[email protected]systemd-run --user --unit say@'test message' --on-calendar='13:54'

今日、特定の時間に一度単位ファイルを実行するようにsystemdに指示する方法は?一時タイマーを自動的にクリーンアップして後でクリーンアップするsystemd --user stop say@'test message'必要がないようにするソリューションが必要です。


A: 完全な日付を指定する必要があります。だから- ... --on-calendar='2018-04-16 13:54:00'。これもそれ自体正しく整理されているようです。

答え3

しなければならない

systemctl --user stop Remove_Me.{service,timer}

systemd バージョン 245 を使用して一時タイマー デバイスを削除します。

この{service,timer}部分はBash機能です。支柱の拡張


イリダンの答えランニングはsystemctl --user stop Remove_Me私には適していません。私はこれを得ます:

警告:Remove_Me.serviceを停止していますが、次の機能を使用して引き続き有効にできます。Remove_Me.timer

そしてそのデバイスはまだ表示されますsystemctl --user list-timers *Remove*

読むヤヨンの答え、.timer、および.serviceファイルを/run/user/1000/systemd/transient/。ファイルを削除して操作を実行した後でも、出力はsystemctl --user daemon-reloadまだ残ります。Remove_Me.timerRemove_Me.servicesystemctl --user list-timers

単位を読んで遅いタイマーをなくしました

systemd-run --user --on-calendar=2025-01-01 -u "Remove_Me" touch ~/test_file

それから削除します

systemctl --user stop Remove_Me.{service,timer}

これでsystemctl --user list-timers *Remove*単位は表示されません。

関連情報