Я запускаю скрипт, который в основном запускает кучу серверов для локального тестирования.убийственный экран, но процесс java не заканчивается
Эти банки работают на разных экранах, потому что им необходимо независимо принимать ввод с клавиатуры. Для этого я использовал экран.
command1="java -jar $fullPath"
screen -d -m -S "${screenName[$i]}" bash -c "$command1"
Все отлично!
тогда мне нужен способ, чтобы убить все сервера
поэтому я написал скрипт, который делает что
for session in $(screen -ls | grep -o "[0-9]*\.${screenName[$i]}")
do
screen -X -S "$session" quit
echo "killing screen $session"
done
Он отлично работает на экраны убивают. НО, второй, я делаю, что java внезапно занимает 100% моего процессора.
Перед тем, как использовать бросить команду экрана
После я использую экран командной бросить
Они также принимают навсегда, чтобы убить через помощью силы графического интерфейса бросить
Дополнительная информация:
- серверы используют Jetty, которые работают на одном Java нить. а затем другой поток просто сидит и ждет ввода клавиатуры.
- Очевидно, что это работает на mac, а скрипт находится в bash, поэтому я бы хотел, чтобы bash-решение работало для mac и linux.
- Кроме того, они построены с использованием Java 7, но работать с использованием Java 8
, поскольку серверы принимают ввод с клавиатуры все команды, посылаемые на экран поглощаются серверов. У них есть вход, который завершает работу, но я не хочу доверять серверам, чтобы они ушли.
Так что мои вопросы:
Есть ли способ, чтобы иметь экран прекратить все запущенные процессы в нем, когда он заканчивается?
Если нет способа отправить ctrl-c на конкретный экран?
Если нет способа узнать, что работает на определенном экране без запуска команд на самом экране? (Тогда я могу просто использовать убийство)
Т.Л., Др, когда я убиваю экран запущенный процесс начинает использовать весь мой процессор и не прекращается. Я хочу, чтобы он закончил.
Вы могли бы убить каждую программу Java, вызвав 'killall -9 java'. – Tom
Хорошо, хорошо, что я буду использовать в качестве наихудшего решения, поскольку он убивает любые другие программы java, которые у меня есть ... Но это мешает мне играть в миниатюру, когда я должен работать: P Но, надеюсь, решение, которое только приходит на ум. :) – dtracers
Если вы найдете способ определить идентификатор процесса вашего 'screen' (или даже лучше сохранить их при их появлении), вы можете использовать опцию' -ppid' 'ps' для уничтожения всех процессов порожденных процессами 'screen'. –