以下の構成では、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
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 ユニットが起動時にシェルスクリプトを実行するようになります。