Das Problem
Die Skripte/Befehle in der Konfigurationsdatei /etc/rc.d/rc.local konnte beim Booten in einem CentOS/RHEL 7-System nicht funktionieren. Dasselbe funktionierte früher in früheren CentOS/RHEL-Versionen. Ist es veraltet oder gibt es eine Problemumgehung, um diese Methode weiterhin zu verwenden?
Die Antwort
Die rc.local Der Dienst wird in CentOS/RHEL 7 standardmäßig gestoppt. Wenn Sie die Konfigurationsdatei etc/rc.d/rc.local überprüfen, gibt es Hinweise dazu.
# 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
Die Problemumgehung
1. Mit systemd , die Init-Skripte sind nicht mehr vorhanden. Folglich musste sich die Ausführung von Tasks beim Booten ändern. In CentOS/RHEL 7 wird die Datei /etc/rc.d/rc.local vom rc-local-Dienst gesteuert.
... [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. Standardmäßig hat die Datei /etc/rc.d/rc.local keine Ausführungsberechtigung. Bitte hängen Sie die Ausführungsberechtigungen an diese Datei an.
# 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. Aktivieren Sie den rc.local-Dienst, um sicherzustellen, dass er jedes Mal nach einem Neustart startet.
# systemctl enable rc-local
Bestätigen Sie, ob der Dienst aktiviert ist:
# systemctl status rc-local.service
3. Anschließend starten Sie bitte rc-local Dienst.
# systemctl start rc-local