ウェブサイト検索

systemd Linuxで起動時にシェルスクリプトを自動実行する方法


システム起動時にタスクを自動化することは、多くのサーバー環境で重要です。このガイドでは、サービスの起動、ディスクスペースのチェック、バックアップの作成などのタスクのために、起動時にカスタムシェルスクリプトを実行するsystemdサービスユニットの設定方法について説明します。

このチュートリアルでは、次のことを学びます。

  • systemdサービスユニットの作成方法
  • ディスクスペースをチェックするためのシェルスクリプトの書き方
  • ブート時に実行されるようにsystemdサービスを構成して有効にする方法

Systemdサービスユニット

  1. 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
    
  2. このスクリプトは、MySQLサービスが起動した後に実行されるサービスを設定し、ディスクスペースをチェックするためのスクリプトを実行します。

  3. シェルスクリプトを書く: 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 ディレクトリのディスクスペース使用量をそのファイルに追加します。

  4. 権限を設定し、サービスを有効にする: 必要な権限を設定し、システム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.service
    
  5. これらのコマンドはスクリプトを実行可能にし、サービスファイルに適切な権限を設定し、systemdマネージャーの設定を再読み込みし、サービスがブート時に起動するように有効にします。

  6. Systemdサービスをテストする: サービスを手動で開始して、スクリプトが正常に動作することを確認してください。

    sudo systemctl start disk-space-check.service
    sudo cat /root/disk_space_report.txt
    

    サービスを手動で実行するには、systemctl start コマンドを使用します。サービスを実行した後は、/root/ ディレクトリにある disk_space_report.txt ファイルを確認して、ディスクスペースレポートの内容を確認してください。このファイルには、/home/ ディレクトリの使用量と日付が含まれており、スクリプトが正常に実行されたことを確認できます。

結論

これらの手順に従うことで、Linuxシステムはブート時に指定されたチェックを自動的に実行し、手動介入なしに自動的なメンテナンスと監視を容易にします。

関連記事: