よるほーなどのためにサーバの時刻がずれていると困ることがあるので時刻合わせをですね。
UbuntuしかわからないのでUbuntuの場合ですけど。
インストールは
sudo apt-get install ntp
そして設定ファイルを編集
sudo vi /etc/ntp.conf
# You do need to talk to an NTP server or two (or three).
server #IP直でもNTPサーバのドメイン記述でも
server #2件か3件の記述がルールのようです。
server
それぞれの環境で適切なサーバをご利用下さいませ。
おそらく導入直後は既に起動&海外のサーバに問い合わせしているので
sudo /etc/init.d/ntp stop
停止させて上記の編集終わったら手動で起動を
sudo /etc/init.d/ntp start
ntpq -p
で状況確認できます。基本的には起動しっぱなしのプロセスになるようです。
# !/bin/bash
ps -C ntpd -o comm= > /dev/null || /usr/sbin/ntpd
これを毎日定時にcronで起動してるか確認し、動いてなければ起動を。
基本的には一度起動すればずっと動いているはずのもののようです。。。コレを疑うなら他にもやらないとなことが沢山出てくるんですけどね。
はい。時間を安定して調整できるようになれば次はbotの一部の機能を時間で制御。
botは一つのファイルで作ってるけどリプ返しやフォロー返し、単なる自動投稿などを特定の時間だけの動作にしたりする場合に。
import datetime
# ここでbotがcronにより動作させられたなうな時間を取得
time = datetime.datetime.now()
# 7の倍数時で45分の時だけ動作させる
if time.hour % 7 == 0 and time.minute % 45 ==0:
# 何か動作内容〜
cronで動作させてる時間に合わせて適切な値を設定して下さい。
参考先サイト様より
http://docs.python.jp/2.5/lib/datetime-datetime.html
クラス datetime( year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
年、月、および日の引数は必須です。tzinfo は None または tzinfo クラスのサブクラスのインスタンス にすることができます。残りの引数は整数または長整数で、 以下のような範囲に入ります
MINYEAR <= year <= MAXYEAR
1 <= month <= 12
1 <= day <= 与えられた年と月における日数
0 <= hour < 24
0 <= minute < 60
0 <= second < 60
0 <= microsecond < 1000000
hourは24にならないのでhour % 8 == 0にすると一日に2回の動作になります。
minuteの値を30以下にすると一時間に2回割り切れる数字が出てくるのでアレです。
7:25 7:50 14:25 14:50 21:25 21:50
七時間おきに一時間で2回動くという現象を起こす可能性があります。
cronの設定にも依りますが。。
time.の後ろにhourなどつければ値を抜き出してこれます。monthやdayを使って元日やクリスマスなどにピンポイントで特定の発言や動作も仕込んだり出来ます。
今回は曜日を取得して何かさせるのは省略してます。私の休日がサービス業仕様で世間様と休日がずれてる故に。