Il problema
Gli script/comandi nel file di configurazione /etc/rc.d/rc.local non potrebbe funzionare all'avvio in un sistema CentOS/RHEL 7. Lo stesso funzionava nelle versioni precedenti di CentOS/RHEL. È deprimente o esiste una soluzione alternativa per utilizzare ancora questo metodo?
La risposta
Il rc.local il servizio viene interrotto per impostazione predefinita in CentOS/RHEL 7. Se controlli il file di configurazione etc/rc.d/rc.local, ci sono suggerimenti al riguardo.
# 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
La soluzione alternativa
1. Con sistema , gli script init non ci sono più. Di conseguenza, l'esecuzione delle attività all'avvio doveva cambiare. In CentOS/RHEL 7, il file /etc/rc.d/rc.local è controllato dal servizio 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. Per impostazione predefinita, il file /etc/rc.d/rc.local non dispone del permesso di esecuzione. Aggiungi i permessi di esecuzione a questo file.
# 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. Abilita il servizio rc.local, per assicurarti che si avvii ogni volta dopo un riavvio.
# systemctl enable rc-local
Conferma se il servizio è abilitato:
# systemctl status rc-local.service
3. Quindi, avvia rc-local servizio.
# systemctl start rc-local