Кто-либо знает, как остановить сервис, когда существует сбой питания с помощью ГАЙКИ?
Я сделал пользовательский сценарий как это, проблема состоит в том, что у пользователя сценария (ГАЙКА) нет корневых полномочий остановить сервис.
Я хочу остановить boinc-клиент прямо после сбоя питания, так, чтобы я не истощал батареи и запускал генератор, прежде чем это будет действительно необходимо.
#! /bin/bash
# UPS notify script.
if [$NOTIFYTYPE == "ONBATT"]
then
/etc/init.d/boinc-client stop
fi
/usr/bin/mail -s "UPS '$UPSNAME': $NOTIFYTYPE" bla@shee.com <<END
$*
END
Wygląda dobrze.
Masz dwie opcje, jedna lepsza od drugiej.
Pierwszą i najlepszą opcją jest użycie sudo. Zezwól na nieinteraktywne sudo nopasswd dla użytkownika, jako którego działa skrypt (określ ścieżkę skryptu jako dozwolone polecenie) i umieść sudo
przed poleceniem zatrzymania.
Inną opcją jest użyj uprawnień unix. Upewnij się, że właścicielem skryptu jest root, a jego grupa jest czymś, do czego ma dostęp działający użytkownik (może być konieczne utworzenie nowej grupy). Zrób to suid, daj grupie dostęp do wykonywania i jesteś gotowy (ale upewnij się, że grupa nie ma uprawnień do zapisu, w przeciwnym razie będziesz mieć lukę w zabezpieczeniach).
У вас может быть задание cron с проверкой прав root для файла / tmp / poweroutage каждые 10 секунд и убить boinc, как только вы его увидите. Я согласен, что работа с разрешениями может быть предпочтительнее.