at [-V] [-q キュー] [-f ファイル] [-mMlbv] 時間
at [-V] [-q キュー] [-f ファイル] [-mMlbv] –t time_arg
at –c ジョブ[ ジョブ…]
at [-rd] ジョブ[ ジョブ…]
atq [-V] [-q キュー]
atrm [-V] ジョブ[ ジョブ…]
batch
(1).概要
注意:atは通常一時的なタスクに使用され、crontabは定期的なタスクに使用されますが、どちらもスケジュールされたタスクの一種です。
atとbatchは標準入力または指定されたファイルを読み取り、後で実行されます。
atは指定された時間にコマンドを実行します。
atqはユーザーの保留中のジョブを一覧表示します。スーパーユーザーの場合、すべてのユーザーの保留中のジョブが表示されます。出力形式:ジョブ番号、日付、時間、キュー、ユーザー名。
atrmはジョブ番号で識別されるジョブを削除します。
batchはシステムの負荷レベルが許容する場合にコマンドを実行します。言い換えれば、負荷平均が0.8以下に低下した場合、またはatdで指定された値が呼び出された場合に実行されます。
atはPOSIX.2標準を拡張した複雑な時間指定を許可します。1日の特定の時間でジョブを許可するHH:MM形式の時間を受け入れます。時間が既に過ぎている場合は、翌日とみなされます。また、midnight(真夜中)、noon(正午)、teatime(午後4時のお茶の時間)を指定でき、AM、PMを使用して午前と午後を表現できます。また、月名と任意の年を持つ形式の日付、またはMMDDYY、MM/DD/YY、DD.MM.YY、YYYY-MM-DD形式の日付を指定して、ジョブが実行される日を示すこともできます。日付指定は時間指定に従う必要があります。now + count time-units(時間単位)の時間を指定することもできます。時間単位はminutes(分)、hours(時間)、days(日)、weeks(週)であり、todayやtomorrowを追加して、今日または明日ジョブを実行するようにatコマンドに指示できます。
例:現在から3日後の午後4時にジョブを実行するにはat 4pm + 3 days;7月31日の午前10時にジョブを実行するにはat 10am July 31;明日午前1時にジョブを実行するにはat 1am tomorrow。
注意:atコマンド類のサービス名はatdです
(2).オプション
-V バージョン情報を表示
-q キュー 指定されたキューを使用します。キュー名は1文字で構成され、有効なキュー名はaからzとAからZの範囲です。atはデフォルトでaキュー、batchはデフォルトでbキューを使用します。文字が大きいキューは良好に動作します。特別なキュー"="は実行中のジョブのために予約されています。ジョブが大文字で指定されたキューに提出された場合、そのジョブは提出時にbatchとして扱われます。時間が到達すると、バッチ処理のルールが負荷バランスに適用されます。atqにキューが指定された場合、そのキューの保留中のジョブのみが表示されます。
-m 出力がなくてもジョブ完了後にユーザーにメールを送信します。
-M ユーザーにメールを送信しません
-f ファイル 標準出力ではなくファイルから読み取ります
-l atqのエイリアス
-r atrmのエイリアス
-d atrmのエイリアス
-v ジョブの実行時間を、ジョブを読み取る前に表示します。表示時間形式の例:"The Feb 20 14:50:00 1997"
-c コマンドラインにリストされたジョブを標準出力としてマークします
-t time_arg time_argパラメータで指定されたジョブの実行時間を提出します。形式は[[CC]YY] MMDDhhmmです
(3).使用例
相対時間を使用してコマンドを実行
[ sysadmin@Ubuntu22 ~ ]# ls
[ sysadmin@Ubuntu22 ~ ]# at now +1 minutes
at> echo "at now +1 minutes">output.txt //デフォルトの保存場所は不明なので、自分で設定する必要があります
at> <EOT> //Ctrl+dは<EOT>と直接表示されます
job 8 at 2023-05-15 09:45
[ sysadmin@Ubuntu22 ~ ]# ls
output.txt
[ sysadmin@Ubuntu22 ~ ]# cat output.txt //output.txtの中に内容が表示されます
絶対時間を使用してコマンドを実行
[ sysadmin@Ubuntu22 ~ ]# at 15:00
at> ls />result.txt
at> <EOT>
job 9 at 2023-05-15 15:00
保留中のジョブを確認し、不要なジョブを削除
[ sysadmin@Ubuntu22 ~ ]# atq //保留中のジョブを確認、at -lでも可
9 2023-05-15 15:00 a sysadmin //9はジョブ番号、2023-05-15 15:00は実行時間、aはキュー、sysadminは実行者
[ sysadmin@Ubuntu22 ~ ]# atrm 9 //不要なジョブを削除
[ sysadmin@Ubuntu22 ~ ]# atq
[ sysadmin@Ubuntu22 ~ ]#
ジョブIDに基づいて実行詳細を確認
[sysadmin@Ubuntu22 ~]# at now +3 minutes
at> echo "at now +3 minutes">detail.txt
at> job 10 at 2023-05-15 10:02
[sysadmin@Ubuntu22 ~]# at -c 10
#!/bin/sh
# atrun uid=1000 gid=1000
# mail sysadmin 0
umask 22
PATH=/usr/local/bin:/usr/bin:/bin
HOME=/home/sysadmin
LOGNAME=sysadmin
SHELL=/bin/bash
LANG=ja_JP.UTF-8
PWD=/home/sysadmin
cd /home/sysadmin || {
echo '実行ディレクトリにアクセスできません' >&2
exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER7a8f2e3c'
echo "at now +3 minutes">detail.txt
marcinDELIMITER7a8f2e3c
説明:atコマンドでまだ実行されていないタスクはすべて/var/spool/at/ディレクトリに保存されており、このファイルを直接確認することもできます。
(4).atの特殊な記述方法
at 20:00 2023-10-1 特定の時間で実行
at now +15min 15分後に実行
at 17:00 tomorrow 明日午後5時に実行
at 6:00 pm + 3 days 3日後の午後6時に実行
at 23:00 < command.txt command.txtをインポート