12: Intel Edisonの中でcronを動かしたい
よく訓練されたアップル信者、都元です。昨日のエントリーはこちらです。組み込みの世界ってこうなんですね。デフォルトではcronが入ってない…。
cronieのインストール
まぁ要は、自分でインストールせよということなので、インストールします。opkgの設定は済ませておきましょう。
opkgさえきちんと導入されていれば、コマンド一発です。
# opkg install cronie
結果として、以下のようなファイルが配置されました。
# opkg files cronie Package cronie (1.4.11-r0) is installed on root and has the following files: /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.d/ /etc/cron.deny /usr/sbin/crond /etc/cron.daily/ /etc/init.d/ /etc/crontab /etc/init.d/crond /etc/sysconfig/ /etc/cron.weekly/ /var/spool/cron/ /usr/bin/crontab /etc/sysconfig/crond
ただし、Yocto Linuxはinitではなく、systemdベースです。/etc/init.d/crondが導入されましたが、これはそのままでは使えません。
systemdへの登録
従って/lib/systemd/system/crond.serviceファイルを自前で作る必要があります。
# tee << _EOF_ >/lib/systemd/system/crond.service [Unit] Description=Command Scheduler After=syslog.target [Service] EnvironmentFile=/etc/sysconfig/crond ExecStart=/usr/sbin/crond -n $CRONDARGS [Install] WantedBy=multi-user.target _EOF_
このファイルを作っただけではまだ起動しません。disabled状態です。
# systemctl status crond ● crond.service - Command Scheduler Loaded: loaded (/lib/systemd/system/crond.service; disabled) Active: inactive (dead)
これを、有効化(chkconfig on的な)して、起動(service start的な)します。
# systemctl enable crond # systemctl start crond
するとcrondプロセスが上がります。
# ps | grep crond 1096 root 2736 S /usr/sbin/crond -n 1098 root 2416 S grep crond
ステータスも、enabled / activeになりました。
# systemctl status crond ● crond.service - Command Scheduler Loaded: loaded (/lib/systemd/system/crond.service; enabled) Active: active (running) since Thu 2014-12-12 00:29:04 UTC; 49s ago Main PID: 1096 (crond) CGroup: /system.slice/crond.service └─1096 /usr/sbin/crond -n
動作検証
では、crontab -eコマンドで、下記のような設定をしてみましょう。
* * * * * touch /tmp/hoge_`date +\%Y\%m\%d\%H\%M\%S`
以下のように、毎分 *1新しいファイルが出来上がることが確認できました。
# ls -la /tmp/hoge* -rw-r--r-- 1 root root 0 Dec 12 00:33 /tmp/hoge_20141212003301 -rw-r--r-- 1 root root 0 Dec 12 00:34 /tmp/hoge_20141212003401 -rw-r--r-- 1 root root 0 Dec 12 00:35 /tmp/hoge_20141212003501
まとめ
これで、時間に応じて周期的に何かをさせることも出来るようになりました。ちなみに、initばかりに慣れている状態で、systemdの諸々をほぼ初めて触りましたが、意外にすんなり使えましたよー。
明日のエントリーはこちらです。
脚注
- ただし、1秒ほど遅延があるようですね。 ↩