2014-02-12 15 views
13

Ich arbeite an einem Init-Skript für Jetty auf RHEL. Versuchen, die daemon Funktion zu verwenden, die von der Initialisierungsbibliothek (/etc/rc.d/init.d/functions) bereitgestellt wird.RedHat Daemon Funktion Verwendung

Ich habe this terse documentation gefunden, und an online example (Ich habe auch andere init-Skripts auf dem System für Beispiele gesucht).

Schauen Sie sich das Snippet von Online den Daemon aufzublicken starten

daemon --user="$DAEMON_USER" --pidfile="$PIDFILE" "$DAEMON $DAEMON_ARGS &" 
RETVAL=$? 
pid=`ps -A | grep $NAME | cut -d" " -f2` 
pid=`echo $pid | cut -d" " -f2` 
if [ -n "$pid" ]; then 
     echo $pid > "$PIDFILE" 
fi 

Warum die $PID plagen, und an die $PIDFILE von Hand zu schreiben? Ich denke, ich frage mich, was der Punkt der --pidfile Option für die daemon Funktion ist.

+1

Ich habe versucht mit '--user = root' und immer noch' daemon' schreibt nicht die pid-Datei. – quickshiftin

Antwort

9

Um die Frage zu beantworten, die Sie haben, wird --pidfile verwendet, um zu überprüfen, ob der Daemon-Prozess bereits ausgeführt wird. Auf RHEL (und Derivaten) schreibt die daemon Funktion die PID-Datei nicht.

Wenn das Programm im Vordergrund bleibt, muss es explizit an den Hintergrund gesendet werden, indem & an den Befehl angehängt wird und die PID anschließend abgerufen werden muss. $! kann nicht verwendet werden, wenn daemon verwendet wird.

+0

Der Deamon-Befehl schreibt die PID-Datei nicht, UND das Programm wird nicht deamonisiert, scheint ... seltsam. –

+0

'daemon' ist eine Funktion von' initscripts', die 'einen Daemon startet, falls er nicht bereits läuft. Es gibt noch andere nützliche Dinge, wie den Dämon davon abzuhalten, Core zu entladen, wenn er unerwartet beendet wird. – jnas

+0

'startet einen Deamon' ist nicht genau, da Daemon nach Spezifikation ein Hintergrundprozess ist. Wenn ich ein Nohup oder & auf die Methode hinzufügen muss, scheint mir das sehr gegensätzlich zu sein. –