CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさんこんにちは。株式会社パイプラインの濱田です。前回まではコマンドラインからプログラムを手動実行する方法、プロセス管理の手法について取り上げました。今回は、プログラムを自動実行する方法を取り上げます。
Linuxでプログラムを自動実行する方法は主に次の3つが挙げられます。
systemdが登場する以前はcronによる自動実行設定がほとんどでした。atによる未来時間のプログラム実行は、例えば帰宅間際に「ぬるぽぽぽ君、悪いけど23時にこのプログラムを実行させてよ」と言われたときのような、1回しか実行しないけれども今実行したくないプログラムを予約実行させたいときなどに役立ちますが、最近のLinuxではsystemdが導入されているディストリビューションがほとんどのため、systemdで1度きりのプログラム実行方法を覚えたほうがよいかと思いますので、今回は取り上げません。
近年では、systemdは最初からインストールされているものの、cronは別途インストールしないといけない環境もあったりしますので、systemdによる自動実行を学習するメリットは大きいのですけれども、まだまだcronで自動実行を制御する環境も多いので、本稿では cronによる自動実行方法を取り上げます。
cronによる自動実行を設定するには、まずcronの書式を理解する必要があります。以下は、毎日 00:30 に /home/nullpopopo/bin/test.bash を実行する例です。
30 00 * * * /home/nullpopopo/bin/test.bash
左から「分」「時間」「日」「月」「曜日」「コマンド」の順に記述し、それぞれの間はスペースまたはTABで区切ります。
/home/nullpopopo/bin/test.bash を15分おきに実行する例は以下の通りです。
00,15,30,45 * * * * /home/nullpopopo/bin/test.bash
または
00-45/15 * * * * /home/nullpopopo/bin/test.bash
n分おき を表現する際に時間のフィールドをカンマで区切るか、あるいは0分から45分の間で15分おき をスラッシュで区切って表現します。
cronはユーザー単位で設定する方法とシステム全体で設定する方法がありますが、今回はユーザー単位で設定する方法を取り上げます。 nullpopopo ユーザーでcronを設定したい場合は、nullpopopoユーザーでLinuxにログインし、以下コマンドを実行します。
crontab -e
すると、シェルがエディタに切り替わり、crontab編集画面となります。CentOSなどの標準エディタは vim なので、vim の操作を理解する必要がありますが、Ubuntuなどの標準エディタは nano なので、エディタのコマンドの相違に戸惑うこともあるかと思います。ですので、あらかじめ標準エディタを環境変数に設定してからcrontabコマンドを実行することをおすすめします。標準エディタを vim (vi) に設定してからcrontab コマンドを実行してcronエントリーを編集するには
export EDITOR=vi ; crontab -e
と実行します。
cronエントリーの一覧を表示する(編集せずに表示だけする)には
crontab -l
と実行します。前述の crontab -e コマンドでcronエントリーを編集する前にバックアップを取得したい場合は、
crontab -l > ${HOME}/crontab-backup.txt
と実行することで、ホームディレクトリ以下に crontab-backup.txt というファイルで保存されます。
システム全体を管理するようなコマンドを自動実行させたい場合は、rootユーザーのcronエントリーに登録することが一般的です。rootユーザーとしてcronエントリーに登録したい場合は、suコマンドでrootユーザーに昇格してからcrontabコマンドを実行するか、sudoが使える環境であれば以下のコマンドを実行することで、rootユーザーとしてcronを設定することができます。
sudo crontab -u root -e
同様に、rootユーザーのcronエントリーを表示だけして確認したい場合は
sudo crontab -u root -l
と実行します。
ここまで、コマンドの手動実行または自動実行によるプロセス管理について学びました。一般的にサーバーと呼ばれるLinuxマシンは、サービスを常駐プロセス(デーモン)として実行しています。次回はデーモンの起動 停止 再起動とOS起動時にデーモンプロセスを自動実行させる方法について取り上げます。
CTC 教育サービスではLinux をはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes