再起動または起動時にコマンド/スクリプトを自動実行する方法


Linuxシステムを起動してログオンすると、舞台裏で起こっていることにいつも魅了されます。ベアメタルの電源ボタンを押すか、仮想マシンを起動することで、完全に機能するシステムにつながる一連のイベントを開始します。場合によっては1分もかかりません。ログオフしたり、システムをシャットダウンしたりする場合も同様です。

これをより面白くて楽しいものにしているのは、オペレーティングシステムが起動したとき、およびログオンまたはログアウトしたときに、オペレーティングシステムに特定のアクションを実行させることができるという事実です。

このディストリビューションにとらわれない記事では、Linuxでこれらの目標を達成するための従来の方法について説明します。

注:ログオンおよびログアウトイベントのメインシェルとしてBashを使用することを想定しています。別の方法を使用した場合、これらの方法の一部は機能する場合と機能しない場合があります。疑わしい場合は、シェルのドキュメントを参照してください。

再起動または起動中にLinuxスクリプトを実行する

起動時にコマンドを実行したりスクリプトを実行したりするには、2つの従来の方法があります。

スケジュールを示すために広く使用されている通常の形式(分/時間/日/月/曜日)に加えて、cronスケジューラでは @reboot を使用することもできます。このディレクティブの後にスクリプトへの絶対パスが続くと、マシンの起動時にスクリプトが実行されます。

ただし、このアプローチには2つの注意点があります。

  1. a) the cron daemon must be running (which is the case under normal circumstances), and
  2. b) the script or the crontab file must include the environment variables (if any) that will be needed (refer to this StackOverflow thread for more details).

この方法は、systemdベースのディストリビューションでも有効です。このメソッドを機能させるには、次のように /etc/rc.d/rc.local に実行権限を付与する必要があります。

# chmod +x /etc/rc.d/rc.local

ファイルの最後にスクリプトを追加します。

次の画像は、cronジョブとrcを使用して2つのサンプルスクリプト( /home/gacanepa/script1.sh /home/gacanepa/script2.sh )を実行する方法を示しています。それぞれローカル、およびそれぞれの結果。

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

両方のスクリプトに実行権限を事前に付与する必要があることに注意してください。

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

ログオンおよびログアウト時にLinuxスクリプトを実行する

ログオン時またはログアウト時にスクリプトを実行するには、それぞれ 〜.bash_profile および 〜.bash_logout を使用します。ほとんどの場合、後者のファイルを手動で作成する必要があります。以前と同じ方法で各ファイルの下部にスクリプトを呼び出す行をドロップするだけで、準備が整います。

この記事では、再起動、ログオン、およびログアウト時にスクリプトを実行する方法について説明しました。ここに含めることができた他の方法を考えられる場合は、以下のコメントフォームを使用してそれらを指摘してください。返信お待ちしています!