スケジューラを利用して1回のみジョブを実行します。
記事の目次
スケジューラが起動していることを確認する!
スケジューラ(atd.service)が起動していることを確認します。
$ systemctl status atd.service ● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-02-16 20:28:25 JST; 8h ago Main PID: 1214 (atd) Tasks: 1 (limit: 11263) Memory: 428.0K CGroup: /system.slice/atd.service └─1214 /usr/sbin/atd -f
時刻とコマンドを入力してジョブの実行を予約する!
時刻とコマンドを入力してジョブを予約します。時刻のみ指定すると次に訪れる指定した時刻にコマンドが実行されます。「at YY:MM」でatコマンドで時刻を指定して、「Enter」キーを押すと、コマンド入力モードになります。コマンド入力が終了したら、「Ctrl-d」を入力します。
$ at 10:00 warning: commands will be executed using /bin/sh at> sleep 60 at> <EOT> job 1 at Fri Feb 17 10:00:00 2023
実行するファイルを指定してジョブの実行を予約する!
at -fコマンドを使用すると、実行するファイルを指定してジョブの実行を予約できます。
$ at 11:00 -f /home/usradmin/sample_eval.sh warning: commands will be executed using /bin/sh job 2 at Fri Feb 17 11:00:00 2023
日時を指定してジョブの実行を予約する!
時刻だけでなく日時を指定してジョブの実行を予約します。デフォルトの日時の指定は、「HH:MM mm/dd/yyyy」のフォーマットでわかりくいです。
$ at 11:00 04012023 -f /home/usradmin/sample_eval.sh warning: commands will be executed using /bin/sh job 3 at Sat Apr 1 11:00:00 2023
「-t」オプションを指定すると、touchコマンドで使用するフォーマットで指定できます。
$ at -t 202304011100 -f /home/usradmin/sample_eval.sh warning: commands will be executed using /bin/sh job 4 at Sat Apr 1 11:00:00 2023
予約しているジョブを表示する!(atq/at -l)
予約しているジョブを表示します。
$ atq 1 Fri Feb 17 10:00:00 2023 a usradmin 2 Fri Feb 17 11:00:00 2023 a usradmin 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin $ at -l 1 Fri Feb 17 10:00:00 2023 a usradmin 2 Fri Feb 17 11:00:00 2023 a usradmin 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin
予約しているジョブを削除する!(atrm/at -d)
予約しているジョブを削除します。
$ atrm 1 $ atq 2 Fri Feb 17 11:00:00 2023 a usradmin 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin $ at -d 2 $ atq 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin
負荷が少ないタイミングでジョブを実行する!(batch/at -b)
ロードアベレージが少ないタイミングでジョブを実行するようにしていることができます。
$ batch warning: commands will be executed using /bin/sh at> sleep 10 at> <EOT> job 5 at Fri Feb 17 06:11:00 2023 $ atq 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin 5 Fri Feb 17 06:11:00 2023 = usradmin $ atq 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin $ at -b at> sleep 10 at> <EOT> job 6 at Fri Feb 17 06:13:55 2023 $ atq 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin 6 Fri Feb 17 06:13:00 2023 = usradmin $ atq 3 Sat Apr 1 11:00:00 2023 a usradmin 4 Sat Apr 1 11:00:00 2023 a usradmin
即時にジョブを実行する!
時刻の指定にnowを指定すると、即時にジョブを実行します。
$ date Fri Feb 17 06:17:31 JST 2023 $ at now -f /home/usradmin/sample_eval.sh warning: commands will be executed using /bin/sh job 8 at Fri Feb 17 06:17:00 2023
atコマンドのセキュリティを設定する!
atコマンドについては、以下のファイルで使用できるユーザを制限することができます。
特定のユーザのみatコマンドを使用可能とする!
以下のファイルを作成して、ユーザを記述します。
/etc/at.allow
特定のユーザのみatコマンドを使用不可とする!
以下のファイルのみ作成して、ユーザを記述します。「/etc/at.allow」が存在すると、こちらのファイルは無効になります。
/etc/at.deny
おわりに
1度のみスケジュールを指定してジョブを実行したい場合は、atコマンドを使用すると便利です。
関連記事
関連書籍(Amazon)