Linuxプロセス管理コマンド詳細


■at[指定時刻に1度だけコマンドを実行]

◆説明:指定時刻に一度だけコマンドを実行
*atコマンドを使用する場合使用前にatdコマンドを実行する
*複数コマンドを入力したい場合は1コマンド毎に改行の上 、全コマンド入力後改行の上[Ctrl] + [d]キーで入力終了
*時刻指定は基本的に時間−日付の順。時間はHH:MM形式/AM/PM形式にも対応(9:20や10pm等)
*midnight((0時)/noon(12時)/teatime(16時)等も指定可
*日付はMMDDYY/MM/DD/YY/MM.DD.YY形式や月の省略表示形式にも対応(5/25/04やaug 10 2004等)
*today(今日)/tomorrow(明日)や ’+日数days’で日数後という指定も可

例1.2004年の5月16日午後3時=15:00 5/16/02 | 3pm may 16 2004等
例2.明日の正午=noon tomorrow | 12:00 +1days等

◆構文:at [オプション] [時刻]
◆オプション
・-d [ジョブ番号]:指定したジョブ番号のジョブを削除(ジョブ番号はatqコマンドの行頭で確認)
・-f [ファイル名]:指定したファイルからコマンド入力
・-l:実行待ちジョブ(キュー内のジョブ)を一覧表示(atqコマンドと同じ出力)
・-m:ジョブの実行完了後ジョブの出力がなくても実行完了をメール通知
・-q [キュー名]:指定したキューにジョブを入れる(キュー名はa-z,A-Zの英字1文字。default=a)
◆例文
7日後の0時に”Happy Birthday”と画面表示

#at midnight +7days
at>echo Happy Birthday  ←コマンド入力後[Enter]
at> <EOT>  ←[Ctrl] + [d]
job 25 at 2004-03-20 00:00
#at -l
25      2004-03-20 00:00 a root

*at -lコマンドの出力はジョブ番号/実行時刻/キュー名/実行ユーザ名となっている。
*使用を制限したい場合、/etc/at.allow、/etc/at.denyファイル内に1行=1ユーザ名で記述。
*スーパーユーザはこれらのファイルに関係なくatコマンドやbatchコマンドを使用可能。
*制限方法は以下の通り。
1. /etc/at.allow が存在すれば /etc/at.deny の有無に関係なく/etc/at.allow に記述されたユーザのみatコマンドを使用可能
2. /etc/at.allow が存在せず/etc/at.deny が存在すれば /etc/at.deny に記述されたユーザ以外atコマンドを使用可能
3. /etc/at.allow が存在せず/etc/at.deny が存在するが中身が空であれば全ユーザがatコマンドを使用可能
4. どちらのファイルも存在しない場合スーパーユーザのみatコマンドを使用可能



■atq[実行待ちジョブを一覧表示]

◆説明:実行待ちのジョブ(キュー内のジョブ)を一覧表示(at -l コマンドと同じ出力)
◆構文:atq [オプション]
◆オプション
・-q [キュー名]:指定したキュー内のジョブを表示
◆例文
キューaのジョブを一覧表示

#atq -q a


■atrm[実行待ちジョブの削除]

◆説明:実行待ちのジョブ(キュー内のジョブ)を削除(at -d コマンドと同じ出力)
*ジョブ番号はatqコマンドの行頭で確認可能
◆構文:atrm [ジョブ番号] [ジョブ番号]
◆例文
ジョブ番号24のジョブを削除

#atq -q a
24      2004-03-10 04:30 a root
25      2004-03-20 00:00 a root
#atrm 24
#atq -q a
25      2004-03-20 00:00 a root


■batch[指定時刻に1度だけ平均負荷が0.8を下回った時コマンドを実行]

◆説明:指定時刻に一度だけ平均負荷が0.8を下回った時コマンドを実行
*複数コマンドを入力したい場合は1コマンド毎に改行の上 、全コマンド入力後改行の上[Ctrl] + [d]キーで入力終了
*時刻指定は基本的に時間−日付の順。時間はHH:MM形式/AM/PM形式にも対応(9:20や10pm等)
*midnight((0時)/noon(12時)/teatime(16時)等も指定可
*日付はMMDDYY/MM/DD/YY/MM.DD.YY形式や月の省略表示形式にも対応(5/25/04やaug 10 2004等)
*today(今日)/tomorrow(明日)や ’+日数days’で日数後という指定も可

例1.2004年の5月16日午後3時=15:00 5/16/02 | 3pm may 16 2004等
例2.明日の正午=noon tomorrow | 12:00 +1days等

◆構文:batch [オプション] [時刻]
◆オプション
・-f [ファイル名]:指定したファイルからコマンド入力
・-m:ジョブの実行完了後ジョブの出力がなくても実行完了をメール通知
・-q [キュー名]:指定したキューにジョブを入れる(キュー名はa-z,A-Zの英字1文字/default=b)
◆例文
7日後の0時に”Happy Birthday”と画面表示

#batch midnight +7days
at>echo Happy Birthday  ←コマンド入力後[Enter]
at> <EOT>  ←[Ctrl] + [d]
job 26 at 2004-03-20 00:00
#at -l
25      2004-03-20 00:00 a root
26      2004-03-20 00:00 b root



*使用を制限したい場合、/etc/at.allow、/etc/at.denyファイル内に1行=1ユーザ名で記述。
*スーパーユーザはこれらのファイルに関係なくatコマンドやbatchコマンドを使用可能。
*制限方法は以下の通り。
1. /etc/at.allow が存在すれば /etc/at.deny の有無に関係なく/etc/at.allow に記述されたユーザのみatコマンドを使用可能
2. /etc/at.allow が存在せず/etc/at.deny が存在すれば /etc/at.deny に記述されたユーザ以外atコマンドを使用可能
3. /etc/at.allow が存在せず/etc/at.deny が存在するが中身が空であれば全ユーザがatコマンドを使用可能
4. どちらのファイルも存在しない場合スーパーユーザのみatコマンドを使用可能



■cron[設定したタスクを定期的に繰り返し実行]

◆説明:設定したタスクを定期的に繰り返し実行
*設定したタスクの実行時刻にシステムが稼動していない場合は実行されない
*使用するにはcronデーモンを起動しておく必要あり

#/etc/rc.d/init.d/crond start

◆設定方法
1.設定ファイル/etc/crontabを開く。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

2.上の4行で環境設定を行う。
・SHELL:使用するシェルの設定
・PATH:パスの定義
・MAILTO:指定されたユーザ宛にcronの実行結果をメール送信
*空白の場合行わない。
*MAILTO自体を記述しない場合/etc/crontabの所有者にメール送信
*複数ユーザを指定したい場合ユーザ名をカンマ(,)で区切る
・HOME:コマンドを実行する際のホームディレクトリの設定


3.#run-parts以下から定期実行したいタスクを記述。

分 時 日 月 曜日 ユーザ コマンド

・分:0〜59の整数
・時:0〜23の整数
・日:1〜31の整数
・月:1〜12の整数or月の短縮名(jan等)
・曜日:0〜7の整数(0と7は日曜日)or曜日の短縮名(sun等)
・ユーザ:実行するユーザ
・コマンド:実行するコマンド
アスタリスク(*)を設定=全有効値を設定
*値をカンマ(,)で区切り複数指定可
*連続した値をハイフン(-)で範囲指定可
*値をスキップさせたい場合"/"の後にスキップする幅を指定
*"1-10/3"のように指定することも可能
◆例文
1.1月の毎週火曜日にhogeコマンドを1時間おきに実行

0 */1 * 1 2 root hoge

2.毎月1日の18時にhogeコマンドを実行

0 18 1 * * root hoge

◆その他
*設定ファイル(/etc/crontab)以外に/etc/cron.d/ディレクトリ内のスクリプトファイルでもタスク実行可能。
*上記/etc/crontabでは/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthlyディレクトリ 内のスクリプトファイルをそれぞれ毎時、毎日、毎週、毎月実行するようにスケジュールされている。
→直接/etc/crontabを 編集せず、実行したい間隔に合うディレクトリにスクリプトファイルを保存し、タスクスケジューリングはcrontabコマンドを利用すると良い。
<毎時に時間設定をするntpdateコマンドを実行したい場合>
1./etc/cron.hourlyディレクトリ内に以下のスクリプトファイルを保存

#vi ntpdate.cron
#!/bin/sh
/usr/sbin/ntpdate -b 133.100.9.2 133.100.11.8 130.69.251.23 133.31.30.8

2.パーミッションを755に設定

#chmod 755 ntpdate.cron

以上で毎時1分にntpdate.cronが実行される。



■crontab[各ユーザがそれぞれ定期的に実行するタスクの設定]

◆説明:各ユーザがそれぞれ定期的に実行するタスクの設定
*ユーザはそれぞれ自分専用のcrontabを所有可
*"/var/spool/cron/[ユーザ名]"というファイルで保存
◆構文:crontab [オプション] [ファイル名]
◆オプション
・-e:環境変数VISUALorEDITORで指定されているエディタで現在のcrontabを編集
・-l:登録されているcrontabを表示
・-r:登録されているcrontabを削除
・-u [ユーザ名]:設定するcrontabの所有者名(ユーザ名)を指定
*-uオプションを省略した場合コマンドを実行したユーザのcrontabを編集
*ファイル名を指定すると新しいcrontabに指定したファイルからインポート可能
◆例文
毎週月曜日の4時にsampleコマンドを実行しユーザtakamatyにメール通知

$crontab -e
MAILTO=takamaty
0 4 * * 1 sample
*使用を制限したい場合/etc/cron.allow、/etc/cron.denyファイルを使用
*ファイル内の1行=1ユーザ名という形式で記述
*スーパーユーザはこれらのファイルに関係なくcronを使用可
*制限方法は以下のとおり
1. /etc/cron.allow が存在すれば /etc/cron.deny の有無に関係なく/etc/cron.allow に記述されたユーザのみcronを使用可
2. /etc/cron.allow が存在するが中身が空であれば /etc/cron.deny の有無に関係なくスーパーユーザのみcronを使用可
3. /etc/cron.allow が存在せず/etc/cron.deny が存在すれば /etc/cron.deny に記述されたユーザ以外cronを使用可
4. /etc/cron.allow が存在せず/etc/cron.deny が存在するが中身が空であれば全ユーザがcronを使用可
5. どちらのファイルも存在しない場合は全ユーザがcronを使用可
<br>
<br>
**■jobs[ジョブの一覧表示]
◆説明:ジョブを一覧表示(実行中:Running/停止中:Stopped/終了:Done)
◆構文:jobs [オプション]
◆オプション
・-l:プロセスIDも表示
◆例文
現在のジョブを表示
>||
$jobs
[1]- Stopped more a.txt
[2]+ Stopped vi b.txt
[3]  Running find . -name '*.txt' -print


■kill[プロセスの終了]

◆説明:プロセスの終了
◆構文:kill [シグナルor番号] [プロセスid]
◆シグナル
・HUP:終了後再起動
・INT:割り込み/一時停止
・KILL:強制終了
・TERM:終了(デフォルト)
◆番号
・1:終了後再起動
・2:割り込み/一時停止
・9:強制終了
・15:終了(デフォルト)
◆例文
1298番のプロセスを強制終了

$kill -KILL 1298


■nice[優先度を指定しコマンドを実行]

◆説明:優先度を指定
*マイナスを指定できるのはスーパユーザのみ(優先度高-20〜+19優先度低)
◆構文:nice [オプション] [コマンド]
◆例文
grepの優先度を5にして実行

$nice -n -5 grep
$nice - -5 grep


■ps[実行中のプロセスの情報を表示]

◆説明:現在実行されているプロセスを表示
◆構文:ps [オプション]
◆オプション
・-a:全プロセスを表示
・-f:ツリー状に表示
・-l:詳細表示
・-u:ユーザも表示
・-w:1行で表示できない場合1行追加して表示
・-x:端末制御でないプロセスも表示
◆例文
実行中のプロセスを表示

$ ps aux


■pstree[実行中のプロセスをツリー表示]

◆説明:実行中のプロセスをツリー表示
◆構文:pstree [オプション] [プロセスIDorユーザ名]
◆オプション
・-a:コマンドライン引数も表示
・-G:グラフィカルに表示
・-h:現在のプロセスのツリーを強調表示
・-n:プロセスIDでソートして表示
・-p:端末制御でないプロセスも表示
◆例文
実行中のプロセスをツリー表示

$ pstree


■renice[実行中のプロセスの優先度を変更]

◆説明:実行中のプロセスの優先度を変更
*マイナスを指定できるのはスーパユーザのみ(優先度高-20〜+19優先度低)
◆構文:renice [オプション]
◆オプション
・-u:ユーザで優先度を変更
・-p:プロセスIDで優先度を変更
◆例文
1.tomユーザのプロセスの優先度を8に変更

$renice 8 -u tom

2.プロセスIDが1098のプロセスの優先度を15に変更

$renice 15 -p 1098


■top[プロセスの稼動状況などをリアルタイム表示]

◆説明:プロセスの稼動状況などをリアルタイム表示
◆構文:top [オプション]
◆オプション
・-d [秒]:チェック間隔を指定
◆例文
プロセスの稼動状況をリアルタイム表示

$top