Я осмотрелся и не нашел ни одного сценария для автоматизации этой задачи.
Итак, на основе предложенных здесь решений я смешал все в интерактивном сценарии Bash , который перечисляет пользователей и сеансы из who -u
, чтобы пользователь мог выбрать, что делать.
Затем вы можете:
killall -u -HUP
kill
Вся необходимая информация поступает от who -u
и затем анализируется с помощью mapfile
и awk
.
Я добавлю возможность отправки сообщения с помощью write
позже (разветвление процесса с задержкой).
Я, вероятно, добавлю возможность убить конкретный сеанс с помощью kill -9
. Но у меня не было проблем с просто kill
, и, как указывали другие, следует по возможности избегать kill -9
.
Вы можете проверить код на github, если хотите попробовать, или узнать больше о том, как я делаю это автоматически:
При загрузке с помощью curl и перенаправлении на tar простой прогресс можно распечатать с помощью:
--checkpoint[=NUMBER] display progress messages every NUMBERth record
--checkpoint-action=ACTION execute ACTION on each checkpoint
Например, это загрузит и извлечет файл gz, печатая точку каждые 10 контрольных -точек:
curl -s -L $url | tar -xz --checkpoint=.10
Для просмотра дополнительных сведений во время выполнения: