2023年10月02日07時00分 / 提供:マイナビニュース
●cronでスケジュールを指定する方法
WindowsのWSL(Windows Subsystem for Linux)2で動作するUbuntuでsystemdが使えるようになったことで、これまではちょっとした手を加えて実現する必要のあった機能がスムーズに使えるようになった。
cronを使ったタスクスケジューリングもそうした機能の一つだ。WindowsのタスクスケジューラとUbuntuのcronを使うことでWindowsはさらに扱いやすくなる。今回からこの「cron」について取り上げる。→連載「WindowsでUbuntuをはじめる」のこれまでの回はこちらを参照。
Ubuntuを起動
まずは、Ubuntuを起動する。スタートメニューから「Ubuntu on Windows」を選択すればよい。
「Ubuntu on Windows」を選択すると、上のようなターミナルアプリケーションが起動してくる。ここでUbuntuのコマンドを実行する。
systemdを有効化する
続いて、WSL2で動作するUbuntuでsystemdを有効化する。これまでに説明したように、この機能は使えるようになったものの、デフォルトでは有効化されていない。このため、/etc/wsl.confに次の設定を追加して機能を明示的に有効化する。
/etc/wsl.conf
[boot]
systemd=true
設定を追加したらUbuntuを再起動するか、Windowsを一旦再起動する。
cronを有効化する
systemdが有効になったら、次はcronを有効化する。cronは最初から有効になっていると思うので、「systemctl status cron」のようにコマンドを実行すれば次のようにcronが動作していることを確認できる。
systemctlコマンドでcron(8)が動作していることを確認
daichi@VAIO-SX14:~$ systemctl status cron
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-06-21 14:18:16 JST; 10min ago
Docs: man:cron(8)
Main PID: 317 (cron)
Tasks: 1 (limit: 19002)
Memory: 476.0K
CGroup: /system.slice/cron.service
└─317 /usr/sbin/cron -f
Jun 21 14:18:16 VAIO-SX14 cron[317]: (CRON) INFO (pidfile fd = 3)
Jun 21 14:18:16 VAIO-SX14 cron[317]: (CRON) INFO (Running @reboot jobs)
Jun 21 14:23:01 VAIO-SX14 cron[317]: (daichi) RELOAD (crontabs/daichi)
Jun 21 14:23:01 VAIO-SX14 CRON[748]: pam_unix(cron:session): session opened for user daichi by (uid=0)
Jun 21 14:23:01 VAIO-SX14 CRON[749]: (daichi) CMD (/mnt/c/WINDOWS/system32/notepad.exe)
Jun 21 14:23:05 VAIO-SX14 CRON[748]: pam_unix(cron:session): session closed for user daichi
Jun 21 14:24:01 VAIO-SX14 CRON[1798]: pam_unix(cron:session): session opened for user daichi by (uid=0)
Jun 21 14:24:01 VAIO-SX14 CRON[1799]: (daichi) CMD (/mnt/c/WINDOWS/system32/notepad.exe)
Jun 21 14:24:15 VAIO-SX14 CRON[1798]: pam_unix(cron:session): session closed for user daichi
Jun 21 14:25:01 VAIO-SX14 cron[317]: (daichi) RELOAD (crontabs/daichi)
daichi@VAIO-SX14:~$
もし次のような出力が返ってきた場合、cronが無効になっている。
cron(8)が無効になっている場合の出力サンプル
daichi@VAIO-SX14:~$ systemctl status cron
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:cron(8)
daichi@VAIO-SX14:~$
その場合には次のようにコマンドを実行してcronを有効化する。
cronを有効化するコマンド実行サンプル
daichi@VAIO-SX14:~$ sudo systemctl enable cron
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
Created symlink /etc/systemd/system/multi-user.target.wants/cron.service → /lib/systemd/system/cron.service.
daichi@VAIO-SX14:~$
コマンドを実行して次のようにcronが有効化したことを確認する。
cron(8)が動作するようになったことを確認
daichi@VAIO-SX14:~$ systemctl status cron
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-06-21 14:18:16 JST; 11min ago
Docs: man:cron(8)
Main PID: 317 (cron)
Tasks: 1 (limit: 19002)
Memory: 476.0K
CGroup: /system.slice/cron.service
└─317 /usr/sbin/cron -f
Jun 21 14:18:16 VAIO-SX14 cron[317]: (CRON) INFO (pidfile fd = 3)
Jun 21 14:18:16 VAIO-SX14 cron[317]: (CRON) INFO (Running @reboot jobs)
Jun 21 14:23:01 VAIO-SX14 cron[317]: (daichi) RELOAD (crontabs/daichi)
Jun 21 14:23:01 VAIO-SX14 CRON[748]: pam_unix(cron:session): session opened for user daichi by (uid=0)
Jun 21 14:23:01 VAIO-SX14 CRON[749]: (daichi) CMD (/mnt/c/WINDOWS/system32/notepad.exe)
Jun 21 14:23:05 VAIO-SX14 CRON[748]: pam_unix(cron:session): session closed for user daichi
Jun 21 14:24:01 VAIO-SX14 CRON[1798]: pam_unix(cron:session): session opened for user daichi by (uid=0)
Jun 21 14:24:01 VAIO-SX14 CRON[1799]: (daichi) CMD (/mnt/c/WINDOWS/system32/notepad.exe)
Jun 21 14:24:15 VAIO-SX14 CRON[1798]: pam_unix(cron:session): session closed for user daichi
Jun 21 14:25:01 VAIO-SX14 cron[317]: (daichi) RELOAD (crontabs/daichi)
daichi@VAIO-SX14:~$
cronはLinuxなどのオペレーティングシステムでタスクスケジューリングを司るもっとも基本的なプログラムのひとつなので有効になっていることが多い。WindowsにインストールしたUbuntuにおいて手動でこの機能を有効化することはほとんどないと思うが、そのような設定になっているときには上記方法で有効化してもらえればと思う。