107.2基礎
本日17時に/usr/local/bin/reportを一度だけ実行する。
対話エディターを開かず標準入力からジョブを渡す。
適切なコマンドはどれか。
× 不正解
atは指定時刻に一度だけ実行するジョブを登録し、標準入力からコマンド列を受け取れる。
詳細解説
誤り
printf '%s\n' '/usr/local/bin/report' | atq 17:00atqは待機ジョブを一覧表示し、時刻付き登録を受け付けない。
誤り。atqは登録済みキューの読取用で、17:00を登録時刻として解釈して新しいjobを作らない。
誤り
printf '%s\n' '/usr/local/bin/report' | atrm 17:00atrmはジョブ番号を指定して既存ジョブを削除する。
誤り。atrmは既存jobの数値IDを削除するため、時刻と標準入力を受け取る登録操作ではない。
正しい
printf '%s\n' '/usr/local/bin/report' | at 17:00atは指定時刻と標準入力から一度きりのジョブを登録する。
正しい。printfの出力がatのjob本文になり、17:00を一度きりの実行予定として登録する。
誤り
printf '%s\n' '/usr/local/bin/report' | crontab 17:00crontabはこの形式で一度きりの時刻を引数に取らない。
誤り。crontabはcrontab形式の入力を登録するcommandで、時刻17:00をこの位置の引数として一度きりのjobには変換しない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' '/usr/local/bin/report' | sed -n '1p'; printf '%s\n' 'schedule: 17:00'期待される結果
/usr/local/bin/report
schedule: 17:00理解のポイント
- atは一度きり
- ジョブ本文は標準入力
- atqは一覧
確認時の注意
- 確認環境: POSIX shell / 登録せず入力形だけを確認
- 実際の登録にはatdの稼働とアクセス許可が必要である。
基礎のおさらい
atの入力
atは対話入力または標準入力から複数commandを受け取り、入力終了後にjobとしてqueueへ置く。
実行環境
job登録時の作業directoryや環境の一部が保持されるが、出力先やPATHを明示すると再現性が高い。
問題IDKP-107-695
確認環境POSIX shell / 登録せず入力形だけを確認
最終技術確認2026-08-13
誤り・権利侵害を報告