linuxコマンド jobコントロール系
まとめてみた
fg
バックグラウンドで実行しているジョブをフォアグラウンドに切り替える。
バックグラウンドでジョブを実行するには、コマンドの後に&を入力する。
例
fg ジョブ番号
bg
ジョブをバックグランドで実行する
例
bg ジョブ番号
at
指定時刻にジョブを自動実行する
ファイルを指定しないと、標準入力でコマンドを指定。Ctrl+Dで決定
例
at -l # 一覧表示 at -f ls.sh 18:00 # ファイル内のコマンドを18時に実行 at -d 6 # 指定したジョブ削除
jobs
バックグランドジョブまたは、または停止中のジョブを表示する。
バックグランドジョブのジョブ番号、ジョブの状態、ジョブの名称の一覧を表示する。
例
jobs
atq
at、batch、crontabコマンドを実行してスケジュールされたジョブを一覧表示する
例
atq
atrm
at、batch、crontabコマンドを実行してスケジュールされたジョブを削除する
一般ユーザーは自分が実行したもののみ、削除できる
例
atrm ジョブ番号
batch
システム負荷を見ながらジョブを自動実行する
atコマンドとの違いは、指定時刻になった時に無条件にジョブが実行されるのではなく、システムの負荷が特定の値以下になるまで待機してからジョブを実行する点
例
batch -f ls.sh 18:00 # ファイル内のコマンドを18時に実行
nohup
ハングアップに反応しないようにしてコマンドを実行する(ログアウトしても処理を中断させない )
HUPシグナルを無視するようにプログラムを実行
ハングアップとは、動作していたソフトウェアが停止し、コンピュータが操作を受け付けなくなる現象や状態のこと
例
nohup ls.sh & # バックグラウンドでls.shを実行
stop
バックグランドのジョブを中断する
例
stop ジョブ番号
crontab
指定日時にジョブを繰り返し実行する
cron を使用するためにはcrondというデーモンが起動している必要がある
例
crontab -l # cronの内容を表示する crontab -e # cronを編集する crontab -r # cronをすべて削除する
設定ファイル
crond は、毎分、以下の設定ファイルの内容に変更がないかを確認し、変更があった場合には、それを反映して実行する。
ディレクトリ名 | 内容 |
---|---|
/var/spool/cron/user | ユーザの自動タスク設定ファイル |
/etc/crontab | 毎時、毎日、毎月、毎週の自動タスクのメイン設定ファイル |
/etc/cron.hourly | 毎時実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.daily | 毎日実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.monthly | 毎月実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.weekly | 毎週実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.d | 上記以外の自動タスク設定ファイルを置くディレクトリ |
書き方
分 時間 日 月 曜日 コマンド名 の順に書く
* * * * * command # 毎分commandを実行 30 17 25 * * command # 毎月25日17時30分にcommandを実行 0 12 * * 1 command # 毎週月曜日12時にcommandを実行
注意点
- 重複起動防止の機能はなく、個々のプログラムで排他制御をする必要がある
- 基本1分単位でしか起動できなく、また祝日判定などこった指定はできない
- 登録した時間にマシンが起動していないと、起動されない
- 処理が異常終了した際にこったリカバリ作業はできない