Подтвердить что ты не робот

Убейте все сеансы отдельного экрана

Когда я выполняю screen -ls, я вижу следующее. Как я могу убить все отдельные сеансы?

На экране есть экраны:

    84918.ttys002.ros-mbp   (Detached)

    84944.ttys008.ros-mbp   (Detached)

    84970.ttys013.ros-mbp   (Attached)

    84998.ttys002.ros-mbp   (Detached)

    85024.ttys002.ros-mbp   (Detached) 

5 Сокеты в /var/folders/ 86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen.

4b9b3361

Ответ 1

screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill

Убить только отдельные сеансы (credit @schatten):

screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill

Ответ 2

Здесь решение, которое объединяет все ответы: Добавьте это к .bashrc или .bash_profile:

killscreens () {
    screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
}
  • это удобная функция, легко запоминающаяся
  • убивает только отдельные экраны, чтобы вы не делали что-то немое
  • не забудьте открыть новый терминал bash или запустите source .bashrc, чтобы сделать killscreens доступным

Благодаря @Rose Perrone, @Milind Shah и @schatten

Ответ 3

Включите эту функцию в свой .bash_profile:

killd () {
    for session in $(screen -ls | grep -o '[0-9]\{4\}')
    do
        screen -S "${session}" -X quit;
    done
}

Чтобы запустить его, вызовите killd. Это убьет все сеансы экрана, отключится или нет.

Ответ 4

Если экраны мертвы, используйте:

screen -wipe

Ответ 5

'[0-9]\{3,\}'

в случае

There is a screen on:
20505.blabla    (03/05/2014 22:16:25)   (Detached)
1 Socket in /var/run/screen/S-blabla.

будет соответствовать как 20505, так и 2014 годам, когда выйдет 2014, вернется "Нет сеанса сеанса связи".

[0-9]\{3,\}\.\S*

может работать.

Я всегда сталкивался с шаблоном 20505.name, где имя - имя хоста или имя сеанса, если экран был запущен с флагом -S. Работы на OS X и Debian могут быть не универсальными.