この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
よく訓練されたアップル信者、都元です。昨日のエントリーはこちらです。組み込みの世界ってこうなんですね。デフォルトでは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秒ほど遅延があるようですね。 ↩