закрытие неиспользуемых терминалов гнома

во время работы я запускаю много гномов-терминалов и что-то с ними делаю. dd на первом терминале, 12 сеансов ssh на кучу серверов, чтобы что-то сделать. Эти сеансы завершают работу и отключаются для простоя или потому что сеанс закрывается после команды.

Однако мне нужен скрипт, который закрывает неиспользуемые процессы gnome-terminal. Я думал о мягком уничтожении всех процессов zsh без дочерних процессов. Это, мы надеемся, закроет терминал чистым способом.

 init─┬─[...] ├─gnome-terminal─┬─gnome-pty-helpe │ ├─2*[zsh───ssh] │ ├─zsh───dd │ ├─zsh───pstree │ ├─4*[zsh] <<<< │ └─{gnome-terminal} . . . 

Я думаю о написании более или менее простого сценария bash для проверки запущенных процессов и их завершения, если zsh не имеет дочерних процессов и не работает в течение 4 часов.

Я не уверен

  • Если это вообще хорошая идея.
  • Если кто-то уже опубликовал инструмент для этого
  • Если есть способ получить дочерние процессы zsh (без grep ing и awk ing pstree output;)
  • Как я получил последнее действие (подумал о команде pre и post в zsh)
  • Если есть лучший способ, чем kill -HUP <zsh pid> чтобы закончить процессы

заранее спасибо

2 Solutions collect form web for “закрытие неиспользуемых терминалов гнома”

Согласно руководству zsh

TMOUT Если этот параметр отличен от нуля, оболочка получит сигнал ALRM, если команда не вводится в течение указанного количества секунд после выдачи подсказки. Если на SIGALRM есть ловушка, он будет выполнен и новый аварийный сигнал будет запланирован с использованием значения параметра TMOUT после запуска ловушки. Если ловушка не установлена, а время простоя терминала не меньше значения параметра TMOUT, zsh завершается. В противном случае новый аварийный сигнал запланирован на TMOUT секунд после последнего нажатия клавиши.

Я тестировал

 zsh> export TMOUT=10 

и главный гном-терминал умер, когда оболочка закрылась. Тот же механизм также работает в bash. Это устраняет ваши проблемы с подключением терминалов занятости, поскольку он начинает отсчет только после выдачи приглашения оболочки

Я не думаю, что это хорошая идея вообще, поскольку она создает «волшебные» события, которые могут потенциально потерять состояние. Я бы порекомендовал лучше работать с клавишами «закрыть окно» и «сфокусировать другое окно (возможно, терминал)» вашего оконного менеджера по выбору. Но если вы хотите использовать терминалы poofing, это, вероятно, лучший способ.

Если вы используете exec для запуска вашей команды (например, exec ssh *hostname* ), терминал gnome, на котором он запущен, должен закрыться, когда процесс завершается (предполагается, что он установлен для выхода из терминала при выходе команды, что является значением по умолчанию) ,

Вам все равно придется использовать возможности тайм-аута оболочки или другие smarts для зависающих процессов, но это позаботится о нормальных выходах или отключенных пультах, если вы просто пытаетесь закрыть сеансы терминала.

  • Убийство кометы зомби
  • pkill не убивает процессы, предшествующие непосредственным потомкам процесса
  • Как закрыть все процессы без перезагрузки машины?
  • Как я могу вызвать CTRL ^ C из подсказки пароля?
  • Любой способ перезапустить машину Linux через SSH, если корневая файловая система не работает?
  • bash: разный вывод между CTRL-C и «упорядоченной очисткой»
  • kill: SIGSTOP: неверная ошибка спецификации сигнала в сценарии bash
  • Закрытие многих окон gnuplot
  • Разница между «убить | pgrep dnsspoof "и" kill `pgrep dnsspoof"
  • Альтернативный способ убить зомби-процесс
  • Попытка написать сценарий для запуска процессов, основанных на тонкости
  • Linux и Unix - лучшая ОС в мире.