Вы можете быстро перейти к вопросу, начиная читать «Сказав это»
Ниже приведены подробности о моих конкретных потребностях
Я нахожусь на lubuntu oneiric и пытаюсь создать настольный лаунчер для запуска / остановки tomcat. У меня проблемы, которые объясняются в этой теме, которую я открыл вчера на форуме lxde.
В основном, настольный лаунчер, который просто выполняет команду
/usr/local/tomcat6/bin/startup.sh
внутреннее окно lxterminal работает, но если я закрою окно lxterminal, открытое модулем запуска и выполнившим команду, то tomcat просто выключится.
Вместо этого я бы хотел закрыть это окно, продолжая работать с tomcat.
Окну нужно просто выполнить команду, чтобы запустить его, и больше ничего.
Поиск в коде whoooole, выполняемом вышеуказанной командой, в конце концов я обнаружил, что виновным является следующий код:
/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 (в котором я запускал длинную команду выше), то 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
а затем закройте это окно .. тогда кот все еще работает.
Не из панели запуска рабочего стола, которая просто открывает окно lxterminal и запускает ту же команду, а затем закрывается!