Masalahnya
Skrip/perintah dalam file konfigurasi /etc/rc.d/rc.local tidak dapat bekerja saat boot dalam sistem CentOS/RHEL 7. Sama digunakan untuk bekerja di versi CentOS/RHEL sebelumnya. Apakah sudah usang atau ada solusi untuk tetap menggunakan metode ini?
Jawabannya
rc.local service dihentikan secara default di CentOS/RHEL 7. Jika Anda memeriksa file konfigurasi etc/rc.d/rc.local, ada petunjuk tentang ini.
# cat /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
Solusinya
1. Dengan systemd , skrip init sudah tidak ada lagi. Akibatnya, pelaksanaan tugas pada saat boot harus berubah. Di CentOS/RHEL 7, file /etc/rc.d/rc.local dikendalikan oleh layanan rc-local.
... [Unit] Description=/etc/rc.d/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.d/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.d/rc.local start TimeoutSec=0 RemainAfterExit=yes
2. Secara default, file /etc/rc.d/rc.local tidak memiliki izin eksekusi. Harap tambahkan izin eksekusi ke file ini.
# ls -l /etc/rc.d/rc.local -rw-r--r--. 1 root root 473 Nov 8 00:20 /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local
# ls -l /etc/rc.d/rc.local -rwxr-xr-x. 1 root root 473 Nov 8 00:20 /etc/rc.d/rc.local
3. Aktifkan layanan rc.local, untuk memastikannya dimulai setiap kali setelah reboot.
# systemctl enable rc-local
Konfirmasi apakah layanan diaktifkan:
# systemctl status rc-local.service
3. Kemudian, silakan mulai rc-local layanan.
# systemctl start rc-local