宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「Linuxの起動時に特定のスクリプトやコマンドを自動で実行させたい」
「rc.localに書いたのに起動時に実行されない」

この記事では、/etc/rc.d/rc.local ファイルを使って起動時にコマンドやスクリプトを自動実行させる方法を解説します。
CentOS 7以降での注意点(実行権限の付与)も合わせて説明します。

【この記事でわかること】
・/etc/rc.d/rc.localファイルにコマンドを記述して起動時に自動実行させる方法
・CentOS 7以降でrc.localを有効化するためにchmod 755が必要な理由
・systemdを使ったサービス自動起動(systemctl enable)との使い分け
・rc.localの実行ログを確認してエラーを調査する方法

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

/etc/rc.d/rc.localとは

/etc/rc.d/rc.local は、Linuxの起動プロセスの最後に実行されるシェルスクリプトです。
このファイルにコマンドやスクリプトのフルパスを記述することで、Linux起動時に自動実行させることができます。

rc.localにコマンドを追記して自動実行させる

1. CentOS 7の場合:実行権限の付与(必須)

CentOS 7以降では、rc.local の実行権限がデフォルトで付与されていません。
まず以下のコマンドで実行権限を付与してください。

[root@Tiger ~]# chmod 755 /etc/rc.d/rc.local

この手順を忘れると、rc.localに書いたコマンドは起動時に実行されません。

2. rc.localを編集してコマンドを追記する

[root@Tiger ~]# 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 # 起動時に実行したいコマンドをフルパスで追記 /etc/rc.d/check_process.sh

スクリプトのパスは必ずフルパスで記述してください。

systemdサービスとの使い分け

CentOS 7以降はsystemdが採用されており、サービスの自動起動には systemctl enable を使う方が推奨されます。

方法 特徴 向いている場面
rc.local に追記 シンプル。スクリプトを直接実行できる 簡単なコマンドの自動実行
systemctl enable 依存関係の制御が可能。ログ管理が容易 デーモンサービスの自動起動

rc.localが実行されない場合の確認方法

1. 実行権限を確認する

# rc.local の権限を確認 # ls -l /etc/rc.d/rc.local -rwxr-xr-x 1 root root 473 Apr 1 10:00 /etc/rc.d/rc.local

x(実行権限)がついていることを確認してください。

2. systemdのサービス状態を確認する

# rc-local サービスの状態を確認 # systemctl status rc-local

サービスが active (exited) になっていれば正常に実行されています。

本記事のまとめ

・rc.localに起動時コマンドをフルパスで追記する
・CentOS 7以降は chmod 755 /etc/rc.d/rc.local が必須
・systemdサービスの自動起動には systemctl enable が推奨

Linuxのサービス自動起動、正しく設定できていますか?

rc.localは手軽ですが、systemdの機能を活用するとより堅牢な自動起動設定ができます。Linuxサーバー管理の基礎から体系的に学ぶことで、こういったトラブルをゼロにできます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。