Попытайтесь передать вывод по каналу от своего grep в
awk 'BEGIN {total=0;}{total+=$1;}END {print "Total: ",total}'
Если нет никого другого screen
сессии, выполняющие Вас, могут использовать "твердый" путь и просто 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 -ls
после первого, которое является именем сессии. Если Вы записали read -r name stuff
затем name
содержал бы целую строку (кроме ведущих пробелов), но мы только хотим первое слово.
– Gilles 'SO- stop being evil'
12.05.2016, 10:30
sh kill.sh
– Jack Nicholson
19.07.2016, 11:11
Присоедините к экрану и затем выполните другую экранную команду:
screen -x "Name" -x -X kill
Вот один -вкладыш. Вам нужно заменить your_session
на нужный.
screen -ls your_session | grep -E '\s+[0-9]+\.' | awk -F ' ' '{print $1}' | while read s; do screen -XS $s quit; done