IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第17回 Linuxのプロセス管理を学ぼう(4) プログラムを自動実行しよう (濱田康貴) 2024年1月

みなさんこんにちは。株式会社パイプラインの濱田です。前回まではコマンドラインからプログラムを手動実行する方法、プロセス管理の手法について取り上げました。今回は、プログラムを自動実行する方法を取り上げます。

Linuxでプログラムを自動実行する方法3選

Linuxでプログラムを自動実行する方法は主に次の3つが挙げられます。

  • cron : 分単位、時単位、日単位、月単位、曜日単位で定期的にプログラムを実行させる。
  • at : 未来に1度だけプログラムを実行させる。
  • systemd : Linux上で実行されるデーモンやプログラムを起動、停止、あるいはOS起動時に自動実行させる。その中の1つに、自動実行の役割がある。

systemdが登場する以前はcronによる自動実行設定がほとんどでした。atによる未来時間のプログラム実行は、例えば帰宅間際に「ぬるぽぽぽ君、悪いけど23時にこのプログラムを実行させてよ」と言われたときのような、1回しか実行しないけれども今実行したくないプログラムを予約実行させたいときなどに役立ちますが、最近のLinuxではsystemdが導入されているディストリビューションがほとんどのため、systemdで1度きりのプログラム実行方法を覚えたほうがよいかと思いますので、今回は取り上げません。

近年では、systemdは最初からインストールされているものの、cronは別途インストールしないといけない環境もあったりしますので、systemdによる自動実行を学習するメリットは大きいのですけれども、まだまだcronで自動実行を制御する環境も多いので、本稿では cronによる自動実行方法を取り上げます。

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の設定方法

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