Я випадково створив понад 1000 екранів. Як я вбиваю їх усіх за допомогою однієї команди? (Або кілька)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Я випадково створив понад 1000 екранів. Як я вбиваю їх усіх за допомогою однієї команди? (Або кілька)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Відповіді:
Ви можете використовувати:
pkill screen
Або
killall screen
У OSX процес називається ЕКРАН у всіх кришках. Отже, використовуйте:
pkill SCREEN
Або
killall SCREEN
Top
Нещодавно почав знайомитися з awk, я зібрав це, і це послужило своєму призначенню. Я розмістив його, оскільки його досить легко зрозуміти.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Де screen -ls
перераховані всі поточні екрани.
grep 'pattern'
фільтрує всі відповідні рядки. Потім ми можемо отримати ручку для всіх відокремлених екранів, і awk sys {command}
ми можемо скопіювати і вставити команду разом і виконати її sys
, $1
стосується першого аргументу, зібраного awk. Нарешті ми виконуємо команду quit за допомогою screen -X quit
.
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
краще працював для мене.
Я трохи спантеличений тим, як вам вдалося створити 1000 «екранів». Ви мали на увазі 1000 вікон екрана (1000 різних вікон терміналів протягом одного сеансу екрану)?
Якщо ви мали на увазі 1000 вікон протягом сеансу на одному екрані, то більш елегантним рішенням було б вийти з екрана за допомогою команди C-a \
(ctrl-a, за якою \).
screen -m sleep 100000
. Це сталося, і я не помітив, поки він вже створив понад 1000 екранізацій.
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill