2015-05-18 12 views
4

Я запускаю Arch-based Manjaro Linux и написал себе небольшую программу обновления, которая запускается каждые 7 часов и полностью запускается в фоновом режиме. Эта программа обновления запускается systemd.Arch Linux/systemd - предотвращает любое выключение/rebboot

Что я хочу знать: как я могу предотвратить любую остановку/перезагрузку системы за время, когда эта программа работает независимо от того, хочет ли пользователь просто отключить ее, или любая программа хочет это сделать.

Лучше всего было бы, если какое-либо действие shutdown/reboot не будет отменено, но вместо этого будет задержано, поэтому, когда программа обновления завершит свой запуск, завершение работы/перезагрузка продолжается.

Мои Systemd части:

uupgrades.timer

[Unit] 
Description=UU Upgrades Timer 

[Timer] 
OnBootSec=23min 
OnUnitActiveSec=7h 
Unit=uupgrades.target 

[Install] 
WantedBy=basic.target 

uupgrades.target

[Unit] 
Description=UU Upgrades Timer Target 
StopWhenUnneeded=yes 

и в папке uupgrades.target.wants

uupgrades.service

[Unit] 
Description=UU Update Program 

[Service] 
Nice=19 
IOSchedulingClass=2 
IOSchedulingPriority=7 
ExecStart=/usr/bin/uupgrades 

Как я могу добиться этого?

ответ

3

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

+0

не могу я просто задерживаю процесс, мне не нужен DE для этого, просто, что остановка выполняется так долго, как мой процесс выполняется? –