Windows 10でLinuxを使う(その5) - cronを使ってみよう

【連載】

にわか管理者のためのLinux運用入門

【第103回】Windows 10でLinuxを使う(その5) - cronを使ってみよう

[2017/12/05 15:05]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

Linuxに限らずUNIX系のサーバでよく使う機能が「cron」だ。やりたいことをシェルスクリプトに書いておき、実行してほしいタイミングで実行されるようにcronにスケジュールを仕込んでおく。これをやりたいがためにUNIX系のサーバが欲しいというケースもあるだろう。

WSL(Windows Subsystem for Linux)のおかげで、「Windows 10 Fall Creators Update」以降はWindowsでもLinuxが実行できるのだから、ぜひこの環境でもcronを使いたい。もしここにいろいろ仕込んでおけるならば、さまざまな作業を手軽に自動化することができる。今回は、WSLでcronを使う手順について説明しよう。

WSLでcronを使う手順

まず、実行を確認するために簡単なスクリプトを作成する。

cronから実行させるサンプルスクリプト

このスクリプトは「年月日_時分秒」というファイルを/home/daichi/data/というディレクトリ以下に作成するものだ。1分ごとに起動すれば1分ごとにファイルが増えていくことになる。実行権限も与えておくことを忘れないようにしてほしい。

ユーザーレベルでcronを仕込むには「crontab -e」のようにcrontabコマンドを実行すればよい。エディタが起動してくるので、ここにスケジュールを追加していく。

crontab -eでスケジュールの編集状態に入る

最初は何も書き込まれていないので、例えば次のように1分ごとに作成したシェルスクリプトを実行するようにスケジュールを設定する。

1分ごとにmonitor.shを実行するようにスケジュールを追加

この場合、「*/1 * * * * /home/daichi/bin/monitor.sh」の設定で1分おきにスクリプトが実行されるようになる。しばらく待っていれば/home/daichi/data/の下に新しいファイルが1分おきに作成されて……いかない。cronでスケジュール通りに処理を進めるには、これを管理するcronデーモンが動作していなければならないのだが、デフォルトの状態ではこのデーモンは動作していない。そのため、「crontab -e」でスケジュールを書き込んだ後に「sudo service cron start」のようにしてcronを実行する必要がある。

この状態で初めて、cronによるスケジューリングが機能するようになる。

cronデーモンを起動するとcrontab -eで書き込んだスケジュール通りに処理が進み出す

これでWSLでもcronが利用できるのだが、ターミナルを全て終了してしまうと起動したcronデーモンも当然終了するため、追加したスケジュールは機能しなくなる。さらに、もう一度Ubuntuのターミナルを起動してもcronデーモンは起動してこないため、やはり追加したスケジュールは機能してくれない。

Ubuntuターミナルをすべて終了するとcronは機能しないし,再度Ubuntuターミナルを起動してもcronは起動していない状態になっている

MicrosoftがもともとWSLはサーバとして運用するような使い方は想定していないというように、ターミナルありきでの動作となっているため、サーバとして背後で動かし続けるというのは今のところできない。ターミナルを起動しておけばよいので、それでも構わないのであればこの使い方もありではないかと思う。

Ubuntu起動時にcronも起動するように~/.profileに追加する設定の例(最後の行)

なお、上記のように「pgrep cron > /dev/null || sudo service cron start」という設定を~/.profileの最後あたりに追加しておけば,Ubuntuを起動するごとにcronも実行することになるので、少なくともターミナルが生きている間はcronを動作させることができるようになる。

WSLはサーバとして使うケースは想定されていないので、Linuxサーバと同じような使い方をするのはちょっと無理がある(ただし、不可能ではない)。しかし、使いようによってはこれでも十分いける。WSLがもたらす可能性を見逃すのはあまりにも惜しい。WSLを使いこなし、Windowsに新たなパワーを持ち込んでほしいところだ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3302
2
【連載】にわか管理者のためのLinux運用入門 [103] Windows 10でLinuxを使う(その5) - cronを使ってみよう
Linuxに限らずUNIX系のサーバでよく使う機能が「cron」だ。WSL(Windows Subsystem for Linux)のおかげで、「Windows 10 Fall Creators Update」以降はWindowsでもLinuxが実行できるのだから、ぜひこの環境でもcronを使いたい。ここにいろいろ仕込んでおけば、さまざまな作業を手軽に自動化できる。今回は、WSLでcronを使う手順について説明しよう。
https://news.mynavi.jp/itsearch/assets_c/2017/12/Linux103_004-thumb-400xauto-15962.jpg
Linuxに限らずUNIX系のサーバでよく使う機能が「cron」だ。WSL(Windows Subsystem for Linux)のおかげで、「Windows 10 Fall Creators Update」以降はWindowsでもLinuxが実行できるのだから、ぜひこの環境でもcronを使いたい。ここにいろいろ仕込んでおけば、さまざまな作業を手軽に自動化できる。今回は、WSLでcronを使う手順について説明しよう。

会員登録(無料)

セキュリティ・キャンプ2017 - 精彩を放つ若き人材の『今』に迫る
ぼくらのディープラーニング戦争
クラウドアンケート
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
人事・経理・総務で役立つ! バックオフィス系ソリューション&解説/事例記事まとめ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る