SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

atコマンド

問題

atコマンドとは?

答え

cronは「毎日x時に実行」などジョブのスケジュールを管理する感じになるが、

atは「(この後1度だけ)x時に実行」といった感じでジョブを管理、実行してくれる。

実行する処理は、atコマンドに標準入力でシェルスクリプトを渡すか、-fオプションでシェルスクリプトを書いたファイルを指定する。

例1) この後13時にこのコマンドを実行してください(ファイル指定)

$ at 13:00 -f script.sh

例2) この後13時にこのコマンドを実行してください(コマンド入力)

$ at 13:00
warning: commands will be executed using /bin/sh (← sh で実行しますよーとのこと)
at> date > /tmp/at.log (← 時間になると at.log に日時が書きこまれる)
at> <EOT> (← Ctrl+D で終了)
job 6 at Sun Oct 16 13:00:00 2022

なお、時刻だけを指定する場合、今日の13時前なら今日の13時に実行。今日の13時を過ぎてから13時に実行するよう依頼すると、明日の13時の実行になる。

例3)2022年10月16日13時にこのコマンドを実行してください

$ at '13:00 2022-10-16' -f test.sh

年月日の指定の仕方は様々あるので、好みの書き方を覚えておくとよい。

$ at 9AM
$ at 4pm + 3days
$ at 3pm Mon
$ at '20:00 10/16/22'
$ at '20:00 2022-10-16'

確認、取り消し

atに依頼しているジョブの状況は以下のコマンドで確認できる。(at -l は atq と同じ)

$ atq
6       Sun Oct 16 13:00:00 2022 a username

各ジョブの詳細は以下のコマンドで確認できる。

$ at -c 6
#!/bin/sh
……
(環境変数の設定等 略)
……
(実行される内容が表示される)

ジョブを削除するのは以下のコマンドでできる。(at -r, at -d は atrm と同じ)

$ atrm 6

関連するメモ

コメント