How to automatically execute shell script at startup boot on systemd Linux

以下の構成では、systemd Linuxで起動時にシェルスクリプトを実行する方法についての基本的な例を説明します。 例えば、特定のカスタムサービスを開始する、ディスクスペースをチェックする、バックアップを作成するなど、Linux の起動時にシェルスクリプトを実行したい理由はさまざまでしょう。
以下の例は、基本的なテンプレートとして使用できますので、必要に応じて変更してください。 この例では、起動時に/home/ディレクトリのディスク容量をチェックし、/root/ディレクトリにレポートを書き込むことにします。

Systemd service unit

まず、systemd startup script 例.disk-space-check.service を作成し、/etc/systemd/system/ ディレクトリに配置する必要があります。 以下に、systemd スタートアップ・スクリプトの例を示します。

After=mysql.serviceExecStart=/usr/local/bin/disk-space-check.shWantedBy=default.target
  • After: スクリプトがいつ実行されるかを systemd に指示します。 この例では、mysql データベースが起動した後にスクリプトが実行されます。 他の例としては network.target などがあります。
  • ExecStart: このフィールドは、実際に実行されるスクリプトのフルパスを提供します
  • WantedBy: systemd ユニットをインストールするブートターゲット

上記は、ブート時にスクリプトを実行するために systemd サービスユニットが含むべき絶対最小値です。 より詳細な情報や使用するオプションについては、systemd.service マニュアルページ を参照してください。

$ man systemd.service

Startup shell script

次に、systemd の起動時に実行されるカスタムシェルスクリプトを作成します。 場所とスクリプト名はサービス・ユニットにより /usr/local/bin/disk-space-check.sh としてすでに定義されています。 スクリプトの内容は次のようなシンプルなものになります。

#!/bin/bashdate > /root/disk_space_report.txtdu -sh /home/ >> /root/disk_space_report.txt
Linux システムアナリスト募集 !
UAF Geophysical Institute では、サイバーインフラの研究アナリストおよびエンジニアのチームに参加する経験豊かな Linux システムアナリストを募集しています。 LOCATION: Fairbanks, Alaska, USA
APPLY NOW

設定とインストール

システムを再起動する前に、スクリプトを実行可能にしておく必要があります。

# chmod 744 /usr/local/bin/disk-space-check.sh

次に、systemd サービスユニットをインストールし、ブート時に実行されるように有効にします。

# chmod 664 /etc/systemd/system/disk-space-check.service# systemctl daemon-reload# systemctl enable disk-space-check.serviceCreated symlink from /etc/systemd/system/default.target.wants/disk-space-check.service to /etc/systemd/system/disk-space-check.service.

再起動する前にスクリプトをテストしたい場合は、以下を実行してください。

# systemctl start disk-space-check.service# cat /root/disk_space_report.txt Thursday 7 July 11:30:25 AEST 20161.5G /home/

これで準備完了です。 Linux システムを再起動すると、上記の systemd ユニットが起動時にシェルスクリプトを実行するようになります。

コメントを残す

メールアドレスが公開されることはありません。