Как заставить byobu запускаться при запуске с выполняемой команды как корень?

pkill то, что я рекомендую, если это доступно (Linux, FreeBSD, NetBSD, OpenBSD, Солярис). Можно указать процессы названием команды полной командной строкой или другими критериями. Например, pkill vi закрывает все программы, название команды которых содержит подстроку vi. Уничтожить только названные процессы vi, использовать pkill -x vi. Уничтожить только названные процессы vi с последним аргументом, заканчивающимся в .conf, использовать pkill -fx 'vi.*\.conf'.

Видеть список PIDs это pkill отправил бы сигнал в, использовать pgrep, который имеет точно тот же синтаксис за исключением того, что он не принимает имя сигнала или число. Для наблюдения большей информации об этих процессах работать

ps -p "$(pgrep …)"

В соответствии с Linux, Вам нужно ps -p $(pgrep -d, …) вместо этого (это - ошибка: Linux ps не совместимо POSIX).

Другим распространенным способом определить процессы для уничтожения являются процессы, которые имеют определенный открытый файл (который может быть исполняемым файлом процесса). Можно перечислить их с fuser; использовать fuser -k отправить им сигнал. Например, fuser -k /usr/bin/find уничтожает все рабочие экземпляры find.

Если существует безудержный процесс, который продолжает разветвляться, Вы, возможно, должны уничтожить целую группу процесса сразу. Группа процесса определяется отрицанием ее лидера, который является процессом предка всех процессов в группе. Видеть группу процесса, что процесс принадлежит, выполненный ps -o pgid (плюс любая опция выбрать, который процесс (процессы) отобразиться). Если Вы решаете, что хотите уничтожить лидера группы процесса 1234 и все его дети, работать kill -1234 или kill -HUP -1234 или любой другой сигнал.

Если Вы не можете найти лучший путь, использовать ps с надлежащими опциями перечислить все процессы и отфильтровать его с grep или некоторая другая текстовая команда фильтрации. Заботьтесь для не случайного соответствия другим процессам, которые, оказывается, выполняют команду с аналогичным именем, или с аргументом, который содержит то имя. Например:

kill $(ps -o pid -o comm | awk '$2 == "vi" {print $1}')

Помните что Ваш grep или awk сама команда может быть перечислена в ps вывод (ps и команда фильтрации запускается параллельно, поэтому обнаружится ли она или не зависит от синхронизации). Это особенно важно, если аргументы команды включены в ps вывод.

1
07.09.2013, 02:01
2 ответа

Если Вы хотите, чтобы команда была выполнена во время начальной загрузки, можно поместить ее в crontab с @reboot вместо времени. Таким образом выполненный crontab и добавьте строку как

@reboot byobu -S boot-time mycommand

Вместо того, чтобы поместить команду на командную строку byobu, можно поместить его в файл сессии Byobu.

Если Вы хотите, чтобы сессия была выполнена как корень, можно запустить его с /etc/rc.local вместо crontab корня. Обязательно запустите его в фоновом режиме, так как начальная загрузка не завершена до /etc/rc.local закончил работать.

byobu -S boot-time mycommand &
2
27.01.2020, 23:39

Теперь byobu основан на tmux, проще всего напрямую использовать tmux .

в моем случае я использую следующий синтаксис:

tmux new -d -s session-name /path/to/my/Script.sh

и подключаюсь к нему, который я использую:

tmux session has -t-name

в вашем crontab вам нужно будет ввести:

@reboot tmux new -d -s session-name /path/to/my/Script.sh
0
27.01.2020, 23:39

Теги

Похожие вопросы