※この記事は、ディストリビューションRHEL9を前提に記載しています。ディストリビューションやディストリビューションのバージョンによって仕様が若干異なります。
Linux起動時にコマンドを実行させるには以下の方法があります。
- /etc/rc.d/rc.localへ実行させたいコマンドを記載する
- ~/.bashrc、~/.bash_profile または ~/.profileへ実行させたいコマンドを記載する(ユーザーログイン時にコマンドを実行する)
- /etc/systemd/systemディレクトリにサービスファイル(例:example.service)を作成する
/etc/rc.d/rc.localへ実行させたいコマンドを記載する
RHEL8,9では/etc/rc.d/rc.localへ起動時に実行したいコマンドを書き込むことで、Linuxのシステムが起動した際に指定のコマンドが実行されます。
/etc/rc.localは/etc/rc.d/rc.localへのシンボリックリンクです。
下記コマンドでviエディタを開きます。
vi /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
touch /var/lock/subsys/local以下に実行したいコマンドを記載します。
以下が記載例です。
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
#以下にLinuxのOS起動時に実行したいコマンドを記載
echo "start" >> /var/log/start.log
ESCキーを押してviエディタをコマンドモードにしたら、以下コマンドを入力して/etc/rc.d/rc.localへの記載内容を保存します。
:wq
catコマンド、もしくはmoreコマンドで記載した内容を確認します。
cat /etc/rc.d/rc.local
また、/etc/rc.d/rc.localは「chmod +x /etc/rc.d/rc.local」コマンドを実行して実行権限が付与されている必要があります。再起動して動作を試す前に必ず実行権限を付与しておきます。
chmod +x /etc/rc.d/rc.local
Linuxの再起動は下記コマンドで行います。再起動して、先ほどrc.localへ記載したコマンドが実行されていれば成功です。
shutdown -r now
syslog(/var/log/messages)を確認することで、起動時のログを確認できます。
以下のコマンドで最新の30行分のsyslogを参照します。-n の後ろの数字を10にすれば10行、100にすれば100行最新のログの確認が可能です。
taill -n 30 /var/log/messages
~/.bashrc、~/.bash_profile または ~/.profileへ実行させたいコマンドを記載する
~/.bashrc、~/.bash_profile または ~/.profileへ実行させたいコマンドを記載すると、特定のユーザーのログイン時にコマンドを実行する処理を実装することができます。