WSL1のcron挙動確認&サインイン時に自動起動させる【AWS】

EC2アイキャッチ画像

windowsに導入したWSL1のcronの挙動を色々確認してみました。

・windows上のcronの挙動を確認したい!
・サインイン時にwsl上のcronを自動起動させたい。

sudo設定

まずはsudoをパスワードなしで実行できるようにします。

sudo visudo

下記を追記
※%sudoより下に追記するようにしてください。

ubuntu  ALL=(ALL:ALL) NOPASSWD: ALL

cronを自動起動する

今の状態の確認コマンド

service cron status

cronの開始

sudo service cron start
service cron status
cron状態かくにn

cronの稼働確認

試しに下記を入力して、cronを毎分起動させます。

WSLにログインし、書き込むログファイルを作成

cd ~
mkdir word
cd work
touch cron.log

crontabを編集

crontab -e

下記を貼り付ける
* * * * * sudo echo sudo echo `date`>> /mnt/c/Users/Administrator/work/cron.log

毎分書き込まれていることを確認

ユーザーはサインインしたまま、wslからログアウトする。

wslをexitで抜けた後に、数分後再ログインして確認してみます。

状態確認

きちんとcronが動いているのを確認

cd work
tail -f cron.log

windowsユーザーをサインアウトする

windowsからサインアウトし、再びサインインした状態で確認

service cron status

何も設定していない状態でサインアウトすると、自動的にWSLも停止するようですね。
次はサインインしたタイミングでWSL上のcronが自動起動するように設定します。

サインイン時に自動起動するように設定する

下記のリンクに、

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

下記の内容をstartup.batという名前で保存し格納

wsl -u root -- service cron start
startpシェル

こちらの設定を仕込むことで、サインイン時にcronを自動起動してもらえます。