Linuxでよく知られているサービスは、起動時に問題なく追加できます。これらのほとんどは、独自のスクリプトを持っており、「chkconfig」コマンドと「systemctl」コマンドを使って実行されるためです。
例えば、「Apache httpd」サービスを起動時に追加するには、システム・マネージャに基づいて以下のコマンドのいずれかを実行します。
For Sys V init system:
# chkconfig --level 35 httpd on
For systemd system:
# systemctl enable httpd
時には、起動時/終了時にカスタムスクリプト、コマンド、サービスを追加する必要があるかもしれません。 その場合、どのようにそれを行いますか。
この記事では、次の 3 つの方法を使用して実装する方法を理解しましょう。
- Using /etc/rc.d/rc.local ファイルを使用する
- crontab ファイルを使用する
- systemd サービス ユニット
Method-1: /etc/rc.d/rc.local ファイルの使用
“/etc/rc.local” は、/etc/rc.d/rc.local ファイルを使用します。local” ファイルは、伝統的にマルチユーザーランレベルに切り替えるプロセスの最後に、すべての通常のコンピューターサービスが開始された後に実行されます。
この方法は systemd システムでも機能し、起動時に実行するスクリプトの場所を ‘/etc/rc.d/rc.local’ ファイルに追加します。
ファイルに実行権限があることを確認します。
# chmod +x /etc/rc.d/rc.local
これを詳しく理解するために、以下に示すような簡単なスクリプトを作成しますが、必要に応じて任意のスクリプトを作成できます:
# vi /opt/scripts/run-script-on-boot.sh#!/bin/bashdate > /root/on-boot-output.txthostname > /root/on-boot-output.txt
スクリプトが準備できたら、以下に示すように実行可能なパーミッションをセットしてください。
# chmod +x /opt/scripts/run-script-on-boot.sh
最後にファイルの一番下にスクリプトを追加します:
# vi /etc/rc.d/rc.local/opt/scripts/run-script-on-boot.sh
これを確認するためにシステムを再起動します:
# reboot
方法2: crontabファイルを使用
cronは特定の時間にバックエンドで自動的にスケジュールされたジョブを実行するものです。
これは、cron job とともに "@reboot"
という特別な文字列を使用することで簡単に実現できます。
@reboot は特別な文字列で、起動時 (boot time) に任意のコマンドまたはスクリプトを実行することができます。
この例では、システム再起動時に ‘/opt/scripts/run-script-on-boot.sh’ ファイルを実行します。
上記の例で作成したものと同じスクリプトを使用することにします。 これを行うには、crontab ファイルに次のエントリを追加するだけです:
# crontab -e@reboot /opt/scripts/run-script-on-boot.sh
これを確認するためにシステムを再起動します:
# reboot
Method-3: Using systemd service unit
この方法は systemd システムでのみ機能するので、非常に簡単です。
そのためには、systemd スタートアップ・スクリプトを作成し、”/etc/systemd/system/” ディレクトリに配置する必要があります。
これは、私たちのサンプル systemd スタートアップ ユニット スクリプトです。
# vi sample-on-boot-script.serviceDescription=Run a Custom Script at StartupAfter=default.targetExecStart=/opt/scripts/run-script-on-boot.shWantedBy=default.target
ユニット スクリプトを systemd の場所に配置したら、次のコマンドを実行して systemd 設定ファイルを更新し、サービスを有効にします。
# systemctl daemon-reload# systemctl enable sample-on-boot-script.service
これを確認するためにシステムを再起動します:
# reboot
Bonus Tips:
スクリプトをバックグラウンドで実行したい場合、最後にアンパサンド "&"
記号を追加する必要があります。
/Path/To/My_Script &
別のユーザーとしてコマンドを実行したい場合は、次の形式を使用します:
su - $USER -c /Path/To/My_Script
Conclusion
このチュートリアルでは、スタートアップ時にカスタム スクリプトまたはコマンド、サービスを追加する方法について簡単に説明しました.
.