crontabで秒を指定する方法

本日の「金曜ロードSHOW!」で天空の城ラピュタを放送するとかで、ネット界隈では「バルス」を言いたいがために大して興味もないラピュタを観ている人がたくさんいるんでしょう。そして左手に握りしめたスマホにはtwitterクライアントが立ち上げられ、「バルス」って打ち込んであとは送信ボタンを押すだけというスタンバイモードでテレビにカジリついてる姿を想像するとなかなかシュールです。

僕はもっとスマートに、そしてエレガントに「バルス祭り」に参加しようと思いまして、いつも金曜日の夕方に「今日は花金」とつぶやくだけの花金botを改修して「バルス」ってつぶやかせることにしました。

これの問題は、いつバルスタイムがやってくるのかわからない、ってことです。
そしたらロケットニュースに以下の記載がありました。

【みんな知ってるあたりまえ知識】『天空の城ラピュタ』の「バルス」の目安は開始から1時間55分5秒(ロケットニュース24)

なお、2013年8月2日分の『金曜ロードSHOW!』での放送では、バルスの時間は例年の傾向同様「23時22分45秒」だと言われています。しかし、何があるかわからないので見逃したくない人は遅くとも10分前集合を心がけた方がいいかもしれませんね。

そうか、23時22分45秒か。
じゃあそのタイミングでcron動かして・・・・って思ったところで、cronには秒指定ができないことに気づきました。

なんとかcronで秒刻みの起動タイミングを指定できないモノか、と思ってたら方法がありました。

crontab 秒間実行について(とあるWebエンジニアの奮闘)

crontab は基本的には秒間実行できませんが、以下のようにsleepを用いることで、秒間実行できます。

そうか、sleepで秒をしていすればいいのか。
ってことで、以下のようにcrontabを設定しました。

22     23       2       8       *       sleep 43; php hanakin.php 80

狙いは23:22:45なんだけど、sleepで1秒ロスするみたいだし、乗り遅れるくらいなら一歩前に進んでいた方がいいだろう、ということで、sleep 43としています。

で、無事予定の時間にバルスすることができました。

ただ、どうやら「バルス」のタイミングが1分ほどズレていたみたいです。テレビでは23:21:50くらいだったんですかねえ。

次の機会ではもうちょっと精度を高めて挑みたいと思います。