2012-03-29 4 views
3

Ich versuche, ein Skript zum Starten von Tomcat-Server zu schreiben, die von der Shell getrennt werden, sobald die Ausführung des Skripts abgeschlossen ist. Zum Beispiel sehen Sie bitte unten Snapshot des Bildschirms.Disown Shell, sobald ein Prozess mit Shell-Skript gestartet

bash-3.00# ./startup.sh 
Using CATALINA_BASE: /opt/tomcat/6.0.32 
Using CATALINA_HOME: /opt/tomcat/6.0.32 
Using CATALINA_TMPDIR: /opt/tomcat/6.0.32/temp 
Using JRE_HOME:  /opt/jdk1.6.0_26/ 
Using CLASSPATH:  /opt/tomcat/6.0.32/bin/bootstrap.jar 
bash-3.00# ps -eaf | grep tomcat 
    root 4737 2945 0 02:45:53 pts/24  0:00 grep tomcat 
    root 4734 29777 1 02:45:42 pts/24  0:19 /opt/jdk1.6.0_26//bin/java -Djava.util.logging.config.file=/opt/tomcat/6.0.32/c 

Jetzt können, wie Sie einmal die Ausführung des Skripts sehen, dass der Kater Prozess abgeschlossen ist mit pts assoziiert/24, bis ich die Schale schließen. Aber was ich will, ist, dass selbst wenn die Schale offen gehalten wird, der Prozess ein Verhalten wie

bash-3.00# ps -eaf | grep tomcat 
    root 13985 2945 0 22:40:13 pts/24  0:00 grep tomcat 
    root 13977 29777 1 22:40:01 ?   0:22 /opt/jdk1.6.0_26//bin/java -Djava.util.logging.config.file=/opt/tomcat/6.0.32// 

Das Betriebssystem ist Solaris unter

zeigen soll. Die verschiedenen Optionen, die ich verwendet habe, um dasselbe zu erreichen, sind nohup und disown, aber der Prozess ist immer noch mit Shell verbunden. Der andere Mechanismus besteht darin, crontab zu verwenden oder svc zu verwenden, um den Prozess zu starten, wenn das System hochfährt, d. H. Daemon oder wir können ein kleines C-Programm schreiben, das einen Prozess forkiert und weggeht.

Bitte beachten Sie, dass der Prozess im Hintergrund läuft.

Aber ich möchte das gleiche mit einer Shell oder Perl-Skript erreichen. Also wird mir jeder Gedanke viel helfen.

Vielen Dank im Voraus.

+1

haben Sie versucht Kombination von nohup und & –

+1

Yup immer noch bekomme ich den Prozess mit der Shell verbunden. Grundsätzlich habe ich etwas wie unten bash-3.00 # nohup ./startup.sh & Aber immer noch mit Shell verbunden. – Abhinav

+1

Wir verwenden Solaris nicht, sondern "wickeln" Tomcat mit dem [Java Service Wrapper] (http://wrapper.tanukisoftware.com/doc/english/download.jsp), wir zeigen das Verhalten, das Sie unter Linux suchen. –

Antwort

2

Nun, könnten Sie sich all die harte Arbeit gehen und tun, aber warum, wenn es ein Modul für die: Proc::Daemon (nicht sicher, ob es auf solaris arbeitet)

Die Dokumentation auch den Prozess verwendet wird, beschreibt, das ist nützlich für Sie, um irgendwie zu verstehen, wenn Sie beschlossen haben, Ihren eigenen Daemonizing-Code zu erstellen.

2
(nohup ./script.bash &) 

Die geklammerten Unter Shell beendet sofort und ps -ef |grep script.bash kehrt:

501 59614  1 0 0:00.00 ttys005 0:00.00 /bin/bash ./script.bash