人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

シェルである時刻の間なら次のコマンドを実行するというのはどう書くのが簡単なのでしょうか?
5分ごとにCRON を動かして、いろいろ実験をしたいのです。5分ごとのときもあれば、1時間ごとにしたい場合もあります。
シェル(bash)の if 分と、date をつかってなんとかできそうな気がするのですが、どうするのがいいのでしょうか?

●質問者: kaiketsu
●カテゴリ:コンピュータ インターネット
✍キーワード:bash コマンド シェル 実験
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pyopyopyo
●35ポイント

たとえば、

7月23日の8時55分から7月23日の9:00の間であればコマンドを実行、ということを bash でゴリおしするなら

start=`date --date "Jul 23 08:55" +%s`
end=`date --date "Jul 23 09:00" +%s`
now=`date +%s`
if [ $start -gt $now -a $now -gt $end ]; then
 実行したいコマンド
fi

という感じです。

同様に、毎日 10:00 から 11:00 の間であれば実行、ということなら

now=`date +%k`
if [ 10 -gt $now -a $now -gt $11 ]; then
 実行したいコマンド
fi

と言う感じです。ちょっと面倒ですね。


別解として cron で工夫する方法、atコマンドを使う方法は、検討されましたか?

cronで工夫する案

cronでも

*/5 * * * * ユーザ名 コマンド

とやれば5分毎にコマンドを起動できますし

1,3,5,7,11 * * * * ユーザ名 コマンド

とやれば毎時1,3,5,7,11分にコマンドを起動できます。

atコマンドを使う案

at コマンドを使うと、たとえば

at -f hogehoge.sh 13:00

とやれば 13:00 に hogehoge.sh を実行できます。

crontab と異なり、atで登録したjobは1回だけしか実行されませんので、あとは

at -f hogehoge.sh 13:01
at -f hogehoge.sh 13:03
at -f hogehoge.sh 13:05
at -f hogehoge.sh 13:07
at -f hogehoge.sh 13:11

などと、おもむろにjobを登録するだけは解決できませんか?

http://www.linux.or.jp/JM/html/at/man1/at.1.html

◎質問者からの返答

cron の設定はなるべく変更したくないので、やや面倒な方法を検討しています。


2 ● ko8820
●35ポイント

if [ $DATE_1 -eq $DATE_2 ]; then

echo "指定された2つの日付は同一日時です。"

http://www.geocities.jp/geo_sunisland/date.html

bashクックブック
Carl Albing JP Vossen Cameron Newham 株式会社クイープ
4873113768

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ