Problém
Skripty/příkazy v konfiguračním souboru /etc/rc.d/rc.local nemohl fungovat v době spouštění v systému CentOS/RHEL 7. Totéž fungovalo v dřívějších verzích CentOS/RHEL. Je zastaralá nebo existuje řešení, jak tuto metodu nadále používat?
Odpověď
rc.local služba je ve výchozím nastavení v CentOS/RHEL 7 zastavena. Pokud se podíváte do konfiguračního souboru etc/rc.d/rc.local, jsou zde rady.
# 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
Řešení
1. Pomocí systemd , init skripty už tam nejsou. V důsledku toho se muselo změnit provádění úloh při spouštění. V CentOS/RHEL 7 je soubor /etc/rc.d/rc.local řízen službou 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. Ve výchozím nastavení nemá soubor /etc/rc.d/rc.local oprávnění ke spuštění. Připojte k tomuto souboru oprávnění k provedení.
# 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. Povolte službu rc.local, abyste se ujistili, že se spustí pokaždé po restartu.
# systemctl enable rc-local
Potvrďte, zda je služba povolena:
# systemctl status rc-local.service
3. Poté prosím spusťte rc-local službu.
# systemctl start rc-local