【Linux】一時的なタスクを登録する:systemd-runコマンド

 systemd-runコマンドの基本的な使い方、主要なオプション、具体的な使用例、および設定されたタスクの確認・削除方法について解説します。

systemd-runコマンドの概要

 Linuxシステムの管理において、特定の時間に一度だけ実行したいタスクや、一時的に定期実行させたいタスクが存在することがあります。通常、こうしたタスクをスケジュールするためには.serviceファイルや.timerファイルを作成する必要がありますが、これらの設定は手間がかかることがあります。さらに、サーバの再起動時にこれらの設定が自動的に消えても構わない場合もあります。

 そんな時に便利なのが「systemd-run」コマンドです。systemd-runは、一時的なタスクを簡単にスケジュールするためのコマンドであり、メモリ上にジョブの実行スケジュールを確保します。そのため、ジョブはLinuxの起動中のみ実行され、再起動すると設定は消えてしまいます。このコマンドを使用することで、簡単かつ迅速に一時的なタスクを管理することができます。

【構文】
systemd-run [オプション] コマンド [引数]

主なオプションと説明

オプション説明
--unit=Unit名ユニット名を指定します。
--on-active=時間指定した時間が経過した後にコマンドを実行します。
--on-unit-active=時間ユニットがアクティブになってから指定した時間後にコマンドを実行します。
主なオプションと説明

systemd-runコマンドの例

 以下は、Unit名をtestとし、起動してから5分後に60秒間隔でpsコマンドを実行する一時的なタスクを登録する例です。

パスワードの入力が求められたら、パスワードを入力します。

user01@ubuntu-vm:~$ systemd-run --unit=test --on-active=5m --on-unit-active=60s ps
Running timer as unit: test.timer
Will run service as unit: test.service

設定されているタイマーの確認

設定したタイマーを確認するには、systemctlコマンドにlist-timersオブジェクトを指定します。

user01@ubuntu-vm:~$ systemctl list-timers
NEXT                        LEFT           LAST                        PASSED            UNIT                           ACTIVATES                       
Mon 2024-07-15 13:37:37 JST 4min 27s left  n/a                         n/a               test.timer                     test.service
Mon 2024-07-15 14:33:18 JST 1h 0min left   Mon 2024-07-15 13:32:17 JST 52s ago           anacron.timer                  anacron.service
(省略)
Sun 2024-07-21 03:10:53 JST 5 days left    Sun 2024-07-14 03:10:24 JST 1 day 10h ago     e2scrub_all.timer              e2scrub_all.service
Mon 2024-07-22 01:08:35 JST 6 days left    Mon 2024-07-15 01:33:26 JST 11h ago           fstrim.timer                   fstrim.service

ers listed.
Pass --all to see loaded but inactive timers, too.

表示を終了させるには、「q」キーを押します。

systemd-runコマンドで設定したスケジュールの削除

 一時的に設定したジョブを削除するには、systemctlコマンドのstopサブコマンドを使用し、「Unit名.timer」を指定します。例えば、ユニット名がtestの場合、「test.timer」を指定します。

パスワードの入力が求められたら、パスワードを入力します。

user01@ubuntu-vm:~$ systemctl stop test.timer

まとめ

 systemd-runコマンドは、一時的に定期実行するタスクを簡単に登録するための便利なツールです。以下にまとめます。

オプション説明
--unit=Unit名ユニット名を指定します。
--on-active=時間指定した時間が経過した後にコマンドを実行します。
--on-unit-active=時間ユニットがアクティブになってから指定した時間後にコマンドを実行します。
まとめ

 使用例として、起動してから5分後に60秒間隔でpsコマンドを実行する一時的なタスクを登録する方法を示しました。また、設定したタイマーの確認方法や、登録したスケジュールの削除方法も解説しました。これにより、systemd-runコマンドを活用して、効率的に一時的なタスクを管理する方法が理解できるでしょう。