systemd — отключить и перезагрузить после завершения ваншота

Con respecto a la primera parte de su pregunta " ¿Hay alguna forma de salir del reloj limpiamente? ", sí, puede detener un proceso enviando una señal.

Primero necesita averiguar el ID de proceso (PID )de su ejecuciónwatch. Puede hacerlo por su nombre:

pidof watch

o por usuario y Cómo ver el proceso creado por un usuario específico en Unix/linux

ps -u ${USER} | grep -i watch | cut -d " " -f 1

y luego detener watchenviando una señal como

kill -IT ${PID}
kill -INT $(pidof watch)

La segunda parte de su pregunta es más sobre el manejo de señales .

0
27.06.2019, 17:49
2 ответа

Немного покопавшись, я нашел способ сделать это. Вот мой юнит-файл

[Unit]
Description=Custom Unit File Automation
After=default.target
DefaultDependencies=no
Before=shutdown.target

[Service]
User=veeru
Type=oneshot
RemainAfterExit=no
ExecStart=/bin/bash -c "<command> <args>"
StandardOutput=file:/var/log/command_out.log
StandardError=file:/var/log/command_err.log
ExecStartPost=/usr/bin/sudo /usr/bin/systemctl disable /etc/systemd/system/dummy.service
ExecStop=/usr/bin/sudo /usr/sbin/reboot

[Install]
WantedBy=default.target

Из службы systemd "oneshot" для запуска отключения питания я добавил DefaultDependencies=noи Before=shutdown.target, немного лучший способ остановить демон перед перезагрузкой

1
28.01.2020, 03:30

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

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

Например,:

[Unit]
ConditionPathExists=/var/Custom_command.data
0
24.04.2020, 16:15

Теги

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