Убивание нескольких сеансов экрана GNU с тем же именем

Иногда мой скрипт вылетает, и создается несколько сеансов с одним и тем же именем. Есть ли способ убить все это с помощью этого имени в одной команде?

Rx:/scripts# screen -S haydoz-script -X quit There are several suitable screens on: 13372.haydoz-script (09/10/11 07:44:05) (Detached) 12287.haydoz-script (09/10/11 07:30:45) (Detached) 12230.haydoz-script (09/10/11 07:17:42) (Detached) 7824.haydoz-script (09/09/11 11:42:26) (Detached) 7764.haydoz-script (09/09/11 11:35:40) (Detached) 15753.haydoz-script (09/04/11 15:00:27) (Detached) 15744.haydoz-script (09/04/11 15:00:26) (Detached) 

Рядом с ними есть другие экраны, которые я не хочу убивать.

3 Solutions collect form web for “Убивание нескольких сеансов экрана GNU с тем же именем”

Если других сеансов сеанса нет, вы можете использовать «жесткий» способ и просто kill их с помощью killall screen .

Если вы хотите быть хорошим, вы можете перебирать список сеансов экрана и убивать их один за другим:

 # screen -S foo && screen -S foo [detached] [detached] # screen -ls There are screens on: 8350.foo (Detached) 8292.foo (Detached) 2 Sockets in /tmp/screens/S-joschi. # This is the interesting line. Just replace "foo" with the name of your session(s) # for session in $(screen -ls | grep -o '[0-9]*\.foo'); do screen -S "${session}" -X quit; done # screen -ls No Sockets found in /tmp/screens/S-joschi. 

screen -ls "$SESSION_NAME" перечисляет полные имена совпадающих сеансов на вкладках с отступом. Таким образом, вы можете перебирать эти строки, извлекать полные имена и вызывать команду quit для каждого соответствующего имени.

 SESSION_NAME='haydoz-script' screen -ls "$SESSION_NAME" | ( IFS=$(printf '\t'); sed "s/^$IFS//" | while read -r name stuff; do screen -S "$name" -X quit done ) 

Присоединитесь к экрану, а затем запустите другую команду экрана:

 screen -x "Name" -x -X kill 
  • Как терминальные эмуляторы убивают своих детей после получения SIGKILL?
  • Убивать другие процессы в трубопроводе (программно)
  • Экспортировать командную строку без оценки вывода?
  • Идентификатор процесса печати (PID) экземпляра Matlab
  • Как убить команду, выполненную из скрипта?
  • Как я могу автоматически закрыть сброшенные SSH-соединения?
  • Почему командный игрок снова начинается после того, как его убили
  • Процесс Rogue Java останавливает мой компьютер
  • Лучший способ убить процессы, созданные скриптом bash?
  • Невозможно запустить 'kill - - $$' в моем скрипте оболочки, когда я его использую
  • Завершить каждый фоновый процесс
  • Linux и Unix - лучшая ОС в мире.