Ich starte einen Dienst (httpd) mit diesem Befehl:
/etc/init.d/'name of service' start
Wie kann ich mit dem folgenden Befehl einen Dienst starten, wenn das Dienstschlüsselwort für den oben genannten httpd-Dienst nicht konfiguriert ist?
2)Dienst 'Dienstname' starten, z. B.: Dienst httpd starten
Wie kann ich einen Dienst konfigurieren, der mit dem Dienstschlüsselwort gestartet und gestoppt werden kann, z. B.: „service ‚nameofservice‘ start“ (Dienstschlüsselwort wie in Option 2) anstelle von /etc/init.d/nameofservice?
Antwort1
Der Befehl service(8) sucht in /etc/init.d nach einem Skript. Wenn kein solches Skript existiert, müssen Sie möglicherweise ein eigenes schreiben. Im Web finden SieAnleitungen, die Ihnen dabei helfen.
Antwort2
Das folgende Skript wurde in Centos 5 getestet. Wir werden ein Skript erstellen, das das aktuelle Datum und die aktuelle Uhrzeit druckt, die Ausgabe in eine Protokolldatei leitet und unter dem Namen „timed“ speichert.
vim /opt/timed
#!/bin/bash
while true;do
echo `date` >> /tmp/timed.log
done #script finish here below line enable execute permission of script
chmod +x /opt/timed
Jetzt schreiben wir ein System-V-Skript, um das zeitgesteuerte Skript zu starten und zu stoppen.
vim /etc/init.d/time (save the script only in /etc/init.d directory only with the name of your choice we use name time here)
#!/bin/bash
# chkconfig: 345 80 20
# description: startup script for /opt/timed daemon
start() {
nohup /opt/timed &
}
stop() {
pkill timed
}
case "$1" in
start)
start #calling the start () function
;;
stop)
stop # calling the stop() function
;;
*)
echo "Usage: $0 {start|stop}"
RETVAL=1 #we return the value 1 bcz cmd is not sucessfull
esac
exit 0
chmod +x /etc/init.d/time (enabling the execute permission of script)
service time start (it will start the script timed)
ps –ef | grep timed (we can check that script is running with this command)
Erklärung des Skripts
Das Zeitskript muss sich im /etc/init.d
Verzeichnis befinden. chkconfig: 345 80 20
ist eine notwendige Komponente des Skripts 345, das die Runlevel 3, 4 und 5 darstellt. 20 bedeutet, dass der Startbefehl die Nummer 20 (S20) im Verzeichnis /etc/rc3/ hat. 80 bedeutet, dass der Stoppbefehl die Nummer 80 (k80) im Verzeichnis /etc/rc3/ hat.
start()
und stop()
sind Funktionen zum Starten und Stoppen des Daemons. Wenn Sie einen Unix-Job im Hintergrund ausführen (mit &, bg-Befehl) und sich von der Sitzung abmelden, wird Ihr Prozess beendet. Sie können dies mit mehreren Methoden vermeiden – indem Sie den Job mit nohup ausführen oder ihn als Batch-Job mit dem at-, batch- oder cron-Befehl ausführen. Mit dem PKill-Befehl können Sie ein Programm beenden, indem Sie einfach den Namen angeben. $1 nimmt das erste Argument. $0 bedeutet den Namen des Skripts. RETVAL ist die Umgebungsvariable, die dem Beendigungsstatus des Skripts entspricht. Wenn sie 0 ist, wurde das Skript erfolgreich ausgeführt, und 1 bedeutet, dass das Skript nicht erfolgreich ausgeführt wurde. Wenn wir einen anderen Befehl als start oder stop angeben, wird die Verwendungsmeldung ausgegeben.