Le problème
Les scripts/commandes dans le fichier de configuration /etc/rc.d/rc.local ne pouvait pas fonctionner au démarrage dans un système CentOS/RHEL 7. La même chose fonctionnait dans les versions antérieures de CentOS/RHEL. Est-ce obsolète ou existe-t-il une solution pour continuer à utiliser cette méthode ?
La réponse
Le rc.local Le service est arrêté par défaut dans CentOS/RHEL 7. Si vous vérifiez le fichier de configuration etc/rc.d/rc.local, il y a des indices à ce sujet.
# 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 solution de contournement
1. Avec systemd , les scripts d'initialisation ne sont plus là. Par conséquent, l'exécution des tâches au démarrage devait changer. Dans CentOS/RHEL 7, le fichier /etc/rc.d/rc.local est contrôlé par le service 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. Par défaut, le fichier /etc/rc.d/rc.local n'a pas la permission d'exécution. Veuillez ajouter les autorisations d'exécution à ce fichier.
# 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. Activez le service rc.local pour vous assurer qu'il démarre à chaque fois après un redémarrage.
# systemctl enable rc-local
Confirmez si le service est activé :
# systemctl status rc-local.service
3. Ensuite, veuillez démarrer le rc-local services.
# systemctl start rc-local