systemd Linuxで起動時にシェルスクリプトを自動実行する方法
システム起動時にタスクを自動化することは、多くのサーバー環境で重要です。このガイドでは、サービスの起動、ディスクスペースのチェック、バックアップの作成などのタスクのために、起動時にカスタムシェルスクリプトを実行するsystemdサービスユニットの設定方法について説明します。
このチュートリアルでは、次のことを学びます。
- systemdサービスユニットの作成方法
- ディスクスペースをチェックするためのシェルスクリプトの書き方
- ブート時に実行されるようにsystemdサービスを構成して有効にする方法
Systemdサービスユニット
systemd サービスファイルの作成: まず、systemd サービスユニットファイルを作成します。サービスファイルを
/etc/systemd/system/disk-space-check.serviceに保存します。[Unit] Description=Check Disk Space on /home directory at Startup After=mysql.service [Service] ExecStart=/usr/local/bin/disk-space-check.sh [Install] WantedBy=default.targetシェルスクリプトを書く: systemdサービスが実行するシェルスクリプトを書いてください。スクリプトは
/usr/local/bin/disk-space-check.shとして保存します。#!/bin/bash echo "Checking disk space on /home directory:" date > /root/disk_space_report.txt du -sh /home/ >> /root/disk_space_report.txtこのスクリプトは現在の日付をファイルに書き込み、/home ディレクトリのディスクスペース使用量をそのファイルに追加します。
権限を設定し、サービスを有効にする: 必要な権限を設定し、システムdサービスが起動時に実行されるようにします。
sudo chmod 744 /usr/local/bin/disk-space-check.sh sudo chmod 664 /etc/systemd/system/disk-space-check.service sudo systemctl daemon-reload sudo systemctl enable disk-space-check.serviceSystemdサービスをテストする: サービスを手動で開始して、スクリプトが正常に動作することを確認してください。
sudo systemctl start disk-space-check.service sudo cat /root/disk_space_report.txtサービスを手動で実行するには、
systemctl startコマンドを使用します。サービスを実行した後は、/root/ディレクトリにあるdisk_space_report.txtファイルを確認して、ディスクスペースレポートの内容を確認してください。このファイルには、/home/ディレクトリの使用量と日付が含まれており、スクリプトが正常に実行されたことを確認できます。
このスクリプトは、MySQLサービスが起動した後に実行されるサービスを設定し、ディスクスペースをチェックするためのスクリプトを実行します。
これらのコマンドはスクリプトを実行可能にし、サービスファイルに適切な権限を設定し、systemdマネージャーの設定を再読み込みし、サービスがブート時に起動するように有効にします。
結論
これらの手順に従うことで、Linuxシステムはブート時に指定されたチェックを自動的に実行し、手動介入なしに自動的なメンテナンスと監視を容易にします。

