| Linux Tips | |
|
一定の時間後にプログラムを実行するには 北浦訓行 |
|
一定の時間後にプログラムを実行するには、sleepコマンドやatコマンドを使用する。
sleepは、指定した時間だけシェルの実行を停止するコマンドだ。従って、
$ sleep 10;import -window root capture.tif |
のように指定すると、10秒後にimportコマンドが実行される。sleepでは、引数として停止する時間を指定する。デフォルトの単位は秒だが、数字の後にm(分)、h(時間)、d(日)を追加して、単位を変更することができる。例えば、以下のようにすると、10分後にlsコマンドが実行されることになる。
$ sleep 10m;ls |
sleepコマンドを実行している間は、当然のことながらそのシェルでの作業ができない。別にシェルを起動すればこの問題はクリアできるが、atコマンドを使えば、もっとスマートだ。
atは、指定した時間にジョブを実行するためのコマンドだ。atコマンドは、atdというデーモンが起動していなければ使えない。多くのディストリビューションでは自動実行されているはずだが、一応以下のコマンドで確認する。
$ ps ax | grep atd |
さて、atコマンドで実行するジョブを指定するには、標準入力から指定する方法と、ファイルに記述したコマンドを実行させる方法がある。
標準入力から指定するには、以下のように行う。
$ at now + 1 hour |
ファイルに記述したコマンドを実行させるには、
ls |
などと記述したファイル(ここでは「at-test」という名前)をテキストエディタで作成しておき、-fオプションでそのファイルを指定する。
$ at noon -f at-test |
指定したコマンドの実行結果が表示される場合は、メールでその内容が実行を指定したユーザーあてに送られる。例えば、上記の例のように、lsとdateコマンドを指定した場合は、ディレクトリの一覧とdateコマンドの結果が送られることになる。
atコマンドで予約したジョブを見るには、atqコマンドを使用する。また、予約したジョブをキャンセルするには、キャンセルしたいジョブ番号を引数として指定して、atrmコマンドを実行する。
$ atq |
時間の指定では、MM/DD/YYやhh:mmといった形式のほかにも、now、am、pm、noon、midnight、teatime、sun、mon、todayなどの時間を表す言葉が使用できる。これらは、timespecというファイルに記述してある。timespecの場所は、ディストリビューションによって異なるので、locateまたはfindコマンドで検索するとよい。ちなみに、VineLinux 2.1は/usr/doc/at-3.1.7/に、Turbolinux Workstation 6.0は/usr/share/doc/packages/at-3.1.8/にある。
| Linux Tips Index |
| Linux Squareフォーラム Linux Tipsカテゴリ別インデックス |
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
