In RHEL 5 und 6 haben wir die automatische Startfunktion von RHEL über /etc/rc.d/init.d verwendet, um jedes Skript beim Systemstart auszuführen. Beginnend mit RHEL 7 wird init durch systemd ersetzt und die vorherige Methode ist jetzt veraltet. In RHEL 7 gibt es eine andere Möglichkeit, dasselbe zu tun.
Erstellen des benutzerdefinierten Skripts
1. Erstellen wir zunächst ein benutzerdefiniertes Beispielskript, das beim Systemstart automatisch ausgeführt wird.
# vi /var/tmp/test_script.sh #!/bin/bash echo "This is a sample script to test auto run during boot" > /var/tmp/script.out echo "The time the script run was --> `date`" >> /var/tmp/script.out
2. Überprüfen und verifizieren Sie die Dateiberechtigung.
# ls -lrt /usr/local/sbin/myscript.sh
3. Fügen Sie die Ausführungsberechtigung hinzu (falls noch nicht festgelegt).
# chmod +x /var/tmp/test_script.sh
Neue systemd-Diensteinheit erstellen
Erstellen Sie eine neue Service-Unit-Datei unter /etc/systemd/system/sample.service mit untenstehendem Inhalt. Der Name der Serviceeinheit ist benutzerdefiniert und kann ein beliebiger Name Ihrer Wahl sein.
# vi /etc/systemd/system/sample.service [Unit] Description=Description for sample script goes here After=network.target [Service] Type=simple ExecStart=/var/tmp/test_script.sh TimeoutStartSec=0 [Install] WantedBy=default.target
Hier,
After= : If the script needs any other system facilities (networking, etc), modify the [Unit] section to include appropriate After=, Wants=, or Requires= directives. Type= : Switch Type=simple for Type=idle in the [Service] section to delay execution of the script until all other jobs are dispatched WantedBy= : target to run the sample script in
Aktivieren Sie die systemd-Diensteinheit
1. Laden Sie den systemd-Prozess neu, um neu erstelltes sample.service ODER jedes Mal zu berücksichtigen, wenn sample.service geändert wird.
# systemctl daemon-reload
2. Aktivieren Sie diesen Dienst so, dass er nach dem Neustart automatisch gestartet wird.
# systemctl enable sample.service
3. Starten Sie den Dienst.
# systemctl start sample.service
4. Starten Sie den Host neu, um zu überprüfen, ob die Skripts während des Systemstarts wie erwartet gestartet werden.
# systemctl reboot