トップ «前の日記(2006-10-11) 最新 次の日記(2006-10-18)» 編集

tito Memo

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|
2010|02|04|05|06|08|
2011|01|02|03|08|10|12|
2012|01|
2013|03|04|

個人的なメモを記していくためのページです。


2006-10-12

* 夜間のランダムな時間にジョブを実行する方法

unixで指定した時間や後でマシンの負荷が低いときに仕事をさせたいときはatを使う。指定時間に繰り返すときはcron。きまぐれで 夜9時から明け方6時まで間のランダムな時刻に毎日あるジョブを実行する方法を考えた。cronとatを組み合わせた2段階方式。

  • スクリプトその1: 0〜6、21〜23の範囲のランダムな時刻にスクリプト2をatで投入する。submit.sh
  • スクリプトその2: 夜間に実行する処理 job-a.sh
以上のスクリプトを準備しておいてスクリプト1をcronで毎日実行するようにする。スクリプト1の実行時刻は昼間の時刻ならいつでもいい。
$ cat submit.sh
#/bin/bash
PATH=/usr/bin:/bin
 
HOUR=`(seq 21 23 ; seq 0 6) |  sed -n \`jot -r 1 1 11\`p`
MIN=`jot -r 1 0 59`
 
at -f /PATH_TO_JOB/job-a.sh $HOUR:$MIN
$ crontab -l
0 7 * * * /PAHT_TO_SUBMIT/submit.sh

乱数で時刻を決定する方法が何か簡単な方法がある気はするが、ここではjotというコマンドを使っている。(cf.On-line Manual of "jot") jotはBSD由来なので(多分)別途インストールしないといけないかも。debianにはパッケージがある。

問題点

  • どうも良い乱数が得られていないようで実行時間が結構偏っている。(気がする)
[]

このページ内のリンクがクリックされたことを知るのにjavascriptを使用しています。javascriptを無効にするとあなたがどのリンクをクリックしたか通知されなくなります。javascriptを無効にしてもこのページの閲覧に問題はありません。javascriptを無効にするページもご覧ください。
クラシック・ドーム クラシック・ドームソフト・ドーム ソフト・ドームソフト・リム ソフト・リム
キャップ10個入り。3種類の詰め合わせ(3種x2=6個入り)の、トラックポイント・キャップ・コレクションはIBMダイレクトで945円(税込み)