Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxの起動時・再起動時にコマンドやスクリプトを自動実行する方法:ステップバイステップガイド

Linuxシステムを起動してログインするとき、その裏側で何が起こっているのかを観察するのはとても興味深いものです。物理マシンの電源ボタンを押す、あるいは仮想マシンを起動するだけで、一連のイベントが連鎖的に実行され、完全に機能するシステムが立ち上がります。場合によっては1分もかからずに。ログアウトやシャットダウンの時も同様です。

さらに面白いのは、OSの起動時やログイン・ログアウト時に、特定のコマンドや処理を自動的に実行させられるという点です。

この記事では、特定のディストリビューションに依存しない形で、これらを実現するための伝統的な方法を解説します。

注意: ログイン・ログアウト時のイベントについては、Bashをメインシェルとして使用する前提で説明を進めます。別のシェルをお使いの場合、一部の方法は動作しないことがあります。不明な点があれば、お使いのシェルのドキュメントを参照してください。

再起動時・起動時にスクリプトを実行する

起動時にコマンドを実行したりスクリプトを走らせたりする伝統的な方法は、主に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

そのうえで、ファイルの末尾に実行したいスクリプトを追記します。

次の画像は、2つのサンプルスクリプト(/home/gacanepa/script1.sh/home/gacanepa/script2.sh)を、それぞれcronジョブとrc.local経由で実行した例と、その結果を示したものです。

script1.sh:

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt

script2.sh:

#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
Linuxの起動時・再起動時にコマンドやスクリプトを自動実行する方法:ステップバイステップガイド

なお、どちらのスクリプトにも事前に実行権限を付与しておく必要があります。

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

補足:systemdサービスを使う現代的な方法

最近の多くのディストリビューションでは、より堅牢な方法としてsystemdのユニットファイルを作成し、/etc/systemd/system/以下に配置してsystemctl enableで有効化する手法が推奨されています。[Install]セクションでWantedBy=multi-user.targetを指定しておけば、システム起動時に自動的にサービスが実行されます。また、一部のディストリビューションではrc.localがデフォルトで無効になっているため、rc-local.serviceを有効化する必要がある点にも注意しましょう。

ログイン時・ログアウト時にスクリプトを実行する

ログイン時にスクリプトを実行したい場合は~/.bash_profileを、ログアウト時に実行したい場合は~/.bash_logoutを使用します。後者のファイルは、環境によっては手動で作成する必要があります。それぞれのファイルの末尾に、前述の方法と同じ要領でスクリプトを呼び出す1行を追加すれば、設定は完了です。

まとめ

この記事では、Linuxの再起動時・ログイン時・ログアウト時にスクリプトを自動実行する方法を解説しました。cronの@rebootrc.localといった伝統的な手法に加え、systemdサービスを活用することで、より確実にタスクを自動化できます。他におすすめの方法があれば、ぜひコメント欄でお知らせください。皆様からのフィードバックをお待ちしています!

  1. NagiosでWindowsホストを監視する方法:ステップバイステップ完全ガイド

    本記事では、Windowsマシンの「プライベート」サービス、すなわちCPU負荷、ディスク使用量、メモリ使用量、各種サービスなどを監視する方法を解説します。これを実現するには、WindowsマシンにNSClient++アドオンをインストールする必要があります。このアドオンはWindowsマシンとNagios間のプロキシとして動作し、check_ntプラグインと通信することで実際のサービスを監視します。当サイトのNagiosインストールガイドに従っていれば、check_ntプラグインはすでにNagios監視サーバーにインストールされています。 この記事では、以下のガイドに従ってNagiosサーバー

  2. Windows 10にBash(Linuxシェル)をインストールして使う方法【WSL完全ガイド】

    Windows上でLinuxシェルをセットアップして使う方法を、Windows Subsystem for Linux(WSL)を使って解説します。 このチュートリアルは、2020年以降にリリースされた最新版のWindows 10を対象としています。古いバージョンのWindows 10でのWSLの使い方や、Windows 8/7/XP向けの別の方法については扱いません。サポートが終了したソフトウェアの使用は避けるべきだからです。どうしてもWindowsを使わなければならない場合は、必ずセキュリティ更新プログラムが提供されているバージョンを使用してください。 WSLは非常に優れたツールで、まるで