crontab のタスクは、4 種類の日付/時刻フィールドと、コマンドフィールドで構成されます。cron は毎分、現在の日付/時刻とすべての crontab のタスクとの間に、符合するものがあるかをチェックします。符合するものがあれば、そのコマンドが実行されます。システムの crontab には、どのユーザ ID でコマンドを実行すべきかを cron に知らせる“ユーザ”という追加フィールドがあります。
フィールドは以下の通りです:
分(Min) | 実行する分 、0-59 |
時(Hour) | 実行する時、0-23 |
日(Mday) | 実行する日、1-31 |
月(Month) | 実行する月、1-12(または月名) |
曜日(Wday) | 実行する曜日、0-7(0 または 7 が日曜日 、もしくは曜日名) |
コマンド(Command) | コマンドラインから実行可能なものなら何でも |
* | ワイルドカード、月の * は“毎月”となる |
x-y | x から y までの範囲に合致、日の 2-4 は“2 日、3 日、4 日”となる |
x/n | 範囲 x 内で頻度 n、時の */2 は“1 時間おきに”となる |
月は jan、Feb(大/小文字の区別なし)のような月名(英語)でも OK です。ただし範囲はサポートされません。
曜日も sun、Mon のように曜日名(英語)を使用できます。
現時点では CronniX がサポートしていない、特別なスケジュールショートカットもあります。@yearly、@daily などです(詳しくは‘man 5 crontab’をご覧ください)。これらのうち 1 つを除くすべては単なるショートカットで、例えば @daily は‘0 0 * * *’と同じです。単なるショートカットではない 1 つとは @reboot です。
これらのタグ(特に @reboot)が動作するかどうか、また CronniX によってサポートされているかどうか、いずれも確認していません。将来的にはこれらをサポートしたいと思いますが、これらを表にどうやって表示するかが主たる問題なのです。
ショートカットとその内容とを変換し、crontab を記述する際には長いバージョンを用いる、ということにしようかと考えています。CronniX による解析が済んでいれば、どのショートカットも効率的に変換されるはずです。いずれにせよ、編集ダイアログの‘間隔設定’タブ(実装が済めば、ですが)によってもこれらのスケジュールを簡単に選択できるようになりますので、機能的には利用可能になります。
@reboot についてはこの方式では扱えませんし、専用のウインドウや表示を用意したり、表を拡張したりするほどのことにもなりえませんので、私としてはどう扱ったらよいかまだわかりません。