你可以快速回答这个问题,开始阅读“说了那么多”
以下是我的具体需求的详细信息
我正在使用lubuntu oneiric并试图创建一个桌面启动器来启动/停止tomcat。 我遇到了解释的问题 在这个帖子里 我昨天在lxde论坛上开了。
基本上是桌面启动器,它只执行命令
/usr/local/tomcat6/bin/startup.sh
在lxterminal窗口内工作,但如果我关闭由启动器打开的lxterminal窗口并执行命令..那么tomcat就会关闭。
我希望关闭那个窗口,同时让tomcat继续运行。
窗口只需要执行命令来启动它而不需要其他任何东西。
在上面命令运行的whoooole代码里面搜索我终于发现guilty是以下代码:
/opt/jdk1.6.0_22/bin/java \
-Dsolr.solr.home=/home/foo/solr/solr_config/current/master/ \
-Dsolr.data.dir=/home/foo/solr/data \
-Dsolr.solr.home=/home/foo/solr/solr_config/current/master/ \
-Dsolr.data.dir=/home/foo/solr/data \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.util.logging.config.file=/usr/local/tomcat6/conf/logging.properties \
-Djava.endorsed.dirs="/endorsed" \
-classpath ":/usr/local/tomcat6/bin/bootstrap.jar:/usr/local/tomcat6/bin/commons-logging-api.jar" \
-Dcatalina.base="/usr/local/tomcat6" \
-Dcatalina.home="/usr/local/tomcat6" \
-Djava.io.tmpdir="/usr/local/tomcat6/temp" \
org.apache.catalina.startup.Bootstrap "" start \
>> "/usr/local/tomcat6"/logs/catalina.out 2>&1 &
事实上,如果我在一个新的lxterminal窗口中运行此命令,则会注意到相同的行为:
A)tomcat启动:如果我打开一个新的lxterminal并输入:
$ ps aux | grep tomcat
foo 21492 0.4 1.5 934436 47248 pts/2 Sl 11:37 0:03 /opt/jdk1.6.0_22/bin/java -Dsolr.solr.home=/home/foo/solr/solr_config/current/master/ -Dsolr.data.dir=/home/foo/solr/data -Dsolr.solr.home=/home/foo/solr/solr_config/current/master/ -Dsolr.data.dir=/home/foo/solr/data -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat6/conf/logging.properties -Djava.endorsed.dirs=/endorsed -classpath :/usr/local/tomcat6/bin/bootstrap.jar:/usr/local/tomcat6/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/tomcat6 -Dcatalina.home=/usr/local/tomcat6 -Djava.io.tmpdir=/usr/local/tomcat6/temp org.apache.catalina.startup.Bootstrap start
foo 21666 0.0 0.0 4476 768 pts/4 S+ 11:53 0:00 grep --color=auto tomcat
B)如果我关闭第一个lxterminal窗口(我在上面执行long命令的那个窗口),那么tomcat也会关闭。如果,从第二个lxterminal窗口,我再次输入
$ ps aux | grep tomcat
foo 21694 0.0 0.0 4476 772 pts/4 S+ 11:57 0:00 grep --color=auto tomcat
话说回来
上面的looong命令只是一个后台工作:如果我打开一个lxterminal并只是输入
$ top &
[1] 21921
并且,在打开此窗口的同时,打开第二个lxterminal窗口并输入
$ ps aux | grep top
foo 21921 0.0 0.0 2452 764 pts/2 T 12:07 0:00 top
foo 21927 0.0 0.0 4476 772 pts/4 S+ 12:08 0:00 grep --color=auto top
我可以看到'top'正在运行,而如果我关闭第一个窗口然后再从第二个窗口再次打开
$ ps aux | grep top
foo 21927 0.0 0.0 4476 772 pts/4 S+ 12:08 0:00 grep --color=auto top
'top'命令也被关闭了。
那么有没有办法从lxterminal窗口启动一个作业,即使关闭了触发它的lxterminal窗口后,这个作业仍然在运行?
要明确:
我想打开一个执行命令的lxterminal窗口(如top&),关闭这个lxterminal窗口并仍然执行已执行的命令。
对于那些在首页阅读我的详细信息的人:
奇怪的是,如果我打开一个lxterminal窗口,直接键入
/usr/local/tomcat6/bin/startup.sh
然后关闭那个窗口..然后tomcat仍在运行。
不是从桌面启动器,它只是打开一个lxterminal窗口并触发相同的命令然后关闭!
exit
或按 CTRL+D
该工作将不再关闭窗口,而是保持运行(如果通过后台运行 &
)。
nohup
要么screen
,取决于流程是否是交互式的,您需要回到它。