ウェブサイト検索

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


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

これをさらに興味深く楽しいものにしているのは、オペレーティング システムの起動時やログオンまたはログアウト時に特定のアクションを実行できることです。

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

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

再起動または起動中の Linux スクリプトの実行

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

方法 #1 – cron ジョブを使用する

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

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

  1. a) cron デーモンが実行されている必要があります (通常の状況ではこれに当てはまります)。
  2. b) スクリプトまたは crontab ファイルには、必要となる環境変数 (存在する場合) が含まれている必要があります (詳細については、この StackOverflow スレッドを参照してください)。

方法 #2 – /etc/rc.d/rc.local を使用する

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

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

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

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

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
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 を使用します。ほとんどの場合、後者のファイルを手動で作成する必要があります。前と同じ方法で各ファイルの最後にスクリプトを呼び出す行を追加するだけで準備完了です。

まとめ

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