Рейтинг:0

Как запланировать действие, которое произойдет через 5 секунд?

флаг by

Я нахожусь в ситуации, когда требуется перезапуск сервера SSHD во всех его открытых процессах подключения. Поэтому я подумал, что смогу использовать хрон или же в команды для планирования перезапуска службы через несколько секунд в будущем (... и завершения процесса сейчас). Проблема в том, что оба планировщика не строят расписания на несколько секунд. Например: сейчас + 1 минута является законной командой, в то время как: сейчас + 5 секунд не является жизнеспособным вводом. Есть идеи, как это решить?

FedKad avatar
флаг cn
Я не думаю, что эти команды поддерживают детализацию менее минуты. Вы можете написать свой собственный сценарий: используя цикл с «сном» между ними.
muru avatar
флаг us
"(... и убить процесс сейчас)" какой процесс?
rubmz avatar
флаг by
@muru - "(... и убить процесс сейчас)" - я запускаю: "kill -1 sshd" (убивает все процессы sshd и прекращает любую возможность повторного подключения до перезапуска SSHD.
rubmz avatar
флаг by
@FedonKadifeli проблема в том, что работающий скрипт должен быть вне другого процесса/родительского процесса, а не SSHD, именно так я запускаю скрипты на сервере. В противном случае уничтожение процесса sshd также приведет к завершению этого скрипта.
muru avatar
флаг us
@rubmz, если вы это сделаете, `systemd` должен автоматически перезапустить SSH.
rubmz avatar
флаг by
@muru В прошлый раз не произошло, как ожидалось, либо: 1. статус службы был включен, когда процесс был завершен, 2. системе требуется слишком много времени, чтобы идентифицировать процесс закрыт / служба остановлена, или слишком много времени, чтобы перезапустить его (должен произошло как можно быстрее, и как минимум минуту он был недоступен) 3. почему-то служба не настроена на мониторинг/автоматический перезапуск.
muru avatar
флаг us
Ни один из них не кажется очень вероятным.Какая это версия Ubuntu? Вы изменили службу ssh? Что показывает `systemctl status ssh.service`?
danzel avatar
флаг cn
Разве вы не можете просто `systemctl перезапустить ssh`?
rubmz avatar
флаг by
@muru Это Ubuntu 18. Я только что снова отключил свою службу sshd и, похоже, не могу снова подключиться ... Я проверил файл инициализации systemd и изменил его параметр перезапуска с «Restart = on-failure» на « Перезагружать=всегда". Остальные параметры казались довольно стандартными (это машина AWS...)
rubmz avatar
флаг by
Служба @danzel sshd намеренно поддерживает свои процессы при перезапуске. Это так, потому что легче держать открытые соединения открытыми. Проблема в том, что иногда вам нужно выполнить полную перезагрузку одного из подключений (в нашем случае не очень различимо, какой это процесс sshd...)
Рейтинг:3
флаг cn

Отвечая на исходный вопрос:

Вместо того, чтобы планировать выполнение задания через несколько секунд, вы можете запланировать его запуск в настоящее время и отложить выполнение в начале задания. Например:

echo "sleep 5; стена Работа выполнена" | сейчас

Обратите внимание, что всправочная страница говорит о в настоящее время:

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

Так что возможно, что сейчас не сразу выполнит задание, но, по крайней мере, на моей установке 18.04.

rubmz avatar
флаг by
Хороший и полезный ответ! Поэтому я отметил его как правильный.

Ответить или комментировать

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