質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Q&A

解決済

2回答

6564閲覧

cronで、基本的には5分毎ですが、0時0分は実行しないような設定を簡潔に書きたい

退会済みユーザー

退会済みユーザー

総合スコア0

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

1グッド

2クリップ

投稿2015/08/05 09:51

編集2015/08/05 09:54

cronで、基本的には5分毎ですが、0時0分は実行しないような設定を
簡潔に書きたいと思っています。

分をカンマで区切ったり、複数行に渡って実現することは可能だと思いますが、
できるだけ簡潔に、分かりやすく記載する方法があれば、ご教授ください。

5分毎という仕様は、0,5,10,15,...ではなく、3,8,13,18...でも問題ありません。

よろしくお願い致します。

fumi35👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

cronで試してはないですが、こんな感じでいかがでしょうか?
5分毎に実行し、testdateを使用し、0時0分以外の時に実行します。

*/5 * * * * /bin/test $( date +%H%M ) -ne 0000 && 実行したいコマンド

参考: crontabの書き方 | server-memo.net
参考: Linuxコマンド集 - 【 date 】 日付や時刻を表示、設定する:ITpro

-- 追記
%記号のエスケープ処理とtestコマンドのパスに関する指摘を取り込み。
(/bin/testOS Xの場合でした。)

*/5 * * * * test $( date +\%H\%M ) -ne 0000 && 実行したいコマンド

参考: crontab ではパーセント記号をエスケープする

投稿2015/08/05 10:05

編集2015/08/05 12:53
ryunix

総合スコア1656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2015/08/05 12:46

%は、crontabの特殊文字なので、\ でエスケープが必要です。 あと、testのありかもOSによっては/usr/bin/testですね。フルパスで書く必要は無くtestと書けばいいと思います。
ryunix

2015/08/05 13:00

%がcrontabの特殊文字であることを知りませんでした... 勉強になります! testコマンドのパスに関しては、手元にあるOS Xでしか確認していませんでした。 おっしゃる通り、パスが通っていればフルパスで書く必要はないですね。 (以前パスが通っていないコマンドを記載し、一日中エラーになっていた記憶があり、フルパスで書いてしまいました...) 一応、回答に追記しておきました。 ご指摘ありがとうございます :)
otn

2015/08/05 13:49

先のコメントが、ちょっとわかりにくかったかもしれませんが、crontabファイルのコマンド部分はシェル($SHELL)が実行するので、単にtestと書くと$SHELL組み込みのtestがあればそれが動いて、PATHは探索しないです。SHELLのデフォルトは/bin/shでLinuxだと/bin/shは/bin/bashと同じなので、bash組み込みのtestが動きます。ということで、パスを付ける必要は無いと書きました。
ryunix

2015/08/05 19:19

なるほど、PATHを探索しないのですね。 組み込みでないコマンドの場合は、フルパスで書く必要があるんですね。 理解しました :D
otn

2015/08/05 22:41

> 組み込みでないコマンドの場合は、フルパスで書く必要があるんですね。 いえ、そんなことは無いです。パスが通っていれば不要。回答に書かれたケースだと、dateはそうですよね。
ryunix

2015/08/05 22:50

何度もありがとうございます、ようやく分かりました... crontab用のパスは/usr/bin, /binくらいにしか通っていない。 testもdateも/binに存在するのでフルパスで書かなくてOKなんですね!
guest

0

ベストアンサー

3,8,13,18...でも問題ありません。

うろ覚えですがこんな感じでできたような気がします。

3-59/5 * * * *

投稿2015/08/05 10:03

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2015/08/05 12:44

これだと「毎時0分には実行しない」では? 「基本的には5分毎ですが、0時0分は実行しない」だとryunixさんの回答のような方法しか無いと思います。
ngyuki

2015/08/06 01:02

確かにそうですね。 なにかしらの事情で 0時0分 だけは避けたくて(別の何かの処理があるとか)、 それ以外に特別な要件がないなら(0時以外は0分にも実行しなければならないとか)、 こういうのもありかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問