LINUX.ORG.RU
ФорумAdmin

Скрипт на выключение


0

1

Всем привет. первый вопрос - в какой группе должен состоять пользователь, чтобы пользоваться командами halt и reboot? И второй: можно ли написать скрипт, который бы проверял текущее время, и если оно между интервалами (к примеру больше 21-00 часа и меньше 8-00 утра, то комп бы вырубался). Соответственно, хочу его засунуть в cron с интервалом в 10 минут, или пол часа. Заранее спасибо.


Ответ на: комментарий от beastie

shutdown хорошая вещь, но есть один нюанс - если я поставил shutdown 21:0 в 20-00 отключили свет, и дали в 22-00. Комп сам завелся и работает всю ночь, что не есть гуд. Поэтому и хочу наваять скрипт с проверкой текущего времени.

Slayer
() автор топика
Ответ на: комментарий от beastie

Скрипт вроде накатал. rtcwake эта прога вырубает комп через заданное время после включения?(или я не так понял английский мануал) Это тоже не то. Все же, последний вопрос - в какой группе прописать юзера, чтобы он мог выключать и перезагружать систему? Файла /etc/shutdown.allow у меня в системе нет.

Slayer
() автор топика

Всем привет. первый вопрос - в какой группе должен состоять пользователь, чтобы пользоваться командами halt и reboot?

DIAGNOSTICS
       If you're not the superuser, you will get the message `must be superuser'.

недостаточно ясно написано?

И второй: можно ли написать скрипт, который бы проверял текущее время, и если оно между интервалами (к примеру больше 21-00 часа и меньше 8-00 утра, то комп бы вырубался)

можно, проще всего засунуть его в /etc/cron.d/ (чтобы выполнялся от рута), но можно и всякими извращениями позаниматься и запускать от пользователся вот пример для гнома

DISPLAY=:0 gnome-session-quit --power-off --force --no-prompt

maloi ★★★★★
()
Ответ на: комментарий от beastie

а как ты собрался из крона Ctrl-Alt-Del вызывать?

к тому же даже при нажании этих клавиш shutdown все равно вызывается от root, просто дополнительно идут проверки, кто в данный момент залогинен в консоли.

maloi ★★★★★
()
Ответ на: комментарий от maloi

В общем вроде решил проблему - в скрипте прописал сравнение времени «date +%-H» с нужным мне через if, elif. Скрипт засунул в крон рута на каждые 20 минут. Предполагаю, что тему можно закрывать (если сегодня ночью скрипт отработает =)

Slayer
() автор топика
Ответ на: комментарий от Slayer

В общем вроде решил проблему - в скрипте прописал сравнение времени «date +%-H» с нужным мне через if, elif. Скрипт засунул в крон рута на каждые 20 минут. Предполагаю, что тему можно закрывать (если сегодня ночью скрипт отработает =)

а написать правильный cron-expression тебе религия не позволила, я так понимаю?

maloi ★★★★★
()
Ответ на: комментарий от maloi

Под@бы это кнешно хорошо, а вот дельный совет дать - это совсем другой разговор. Я не спец в этих делах, и если ты знаешь путь легче, почему бы не написать алгоритм разрешения проблемы - религия не позволяет?

Slayer
() автор топика
Ответ на: комментарий от maloi

Спасибо! Я написал так

SHELL=/bin/sh
*/20 * * * * sh /home/nikola/sdown.sh
есть сомнение, что sh перед файлом не нужен.

Slayer
() автор топика
Ответ на: комментарий от Slayer

если на файл sdown.sh есть права для выполнения, то sh в начале не нужен

ты написал выражение чтобы скрипт выполнялся каждые 20 минут, а я - чтобы каждые 20 минут между 9-ю вечера и 9-ю утра.

maloi ★★★★★
()
Ответ на: комментарий от maloi

для этого в арче отдельные пакеты делают?

за что купил  — за то продал ☺

beastie ★★★★★
()
Ответ на: комментарий от maloi

Хм, получается можно сделать ещё проще, например так: «*/20 0-8,21-23 * * * halt» " */20 0-8,21-23 * * * shutdown -h now" Правда у меня там ещё очистка старых логов стоит, но её можно в другой скрипт запихать. Спасибо за помощь =)

Slayer
() автор топика
Ответ на: комментарий от Slayer

если я поставил shutdown 21:0 в 20-00 отключили свет

дикий костыль, но почему бы и нет? сразу после бута говорим системе умереть в 9 вечера. и ни какие отключения света тут уже не помогут.

cat <<EOF>> /etc/rc.local
shutdown -hP 21:00
EOF

PS: можно добавить ещё второй shutdown 10 минут поздже, что бы перехватить ситуацию, когда свет вырубят без минуты 9 ☺

просто, надёжно и без всяких кронов и самопальных скриптов

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Соль в том, что комп поднимается по последнему состоянию, если к примеру вырубили электричество, а он работал - то при подаче питания он заведется. Если стоит выключение на 10 вечера, свет вырубили в 8, а дали в 11 - то выключение отработает в 9 вечера следующего дня, что учитывая ограниченный ресурс проектора не совсем гуд. Поэтому и хочется перестраховаться, пускай и костылями.

Slayer
() автор топика
Ответ на: комментарий от Slayer

stop, need more input

ограниченный ресурс проектора

т.е. речь об автономном устройстве с проектором, не облуживоемым человеком?

в таком случае моё следующее утверждение не имеет смысла:

Соль в том, что комп поднимается по последнему состоянию

выключить в BIOS'е + автостарт в восемь утра или когда там + xset +dpms

и мне остаётся только посоветовать прикупить UPS, дабы избежать подобных и других проблем или таки манихинации с cron и подобным.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Всем привет ещё раз. Не взлетело... Скрипт:

#!/bin/bash
function stopcomp {
  rm -f /var/log/*.gz
  echo '(PWR0)' > /dev/ttyUSB0
  echo 'go shdwn ' $(date +%c) >> /home/nikola/sdown.log
  shutdown -h now
}

STARTTIME=9;
STOPTIME=21;
DATENOW=$(date +%-H);
if [ $STOPTIME -le $DATENOW ]; then
  stopcomp
elif [ $DATENOW -le $STARTTIME ]; then
  stopcomp
fi;
В лог он сыпет текущей датой - функция отрабатывает. в /var/log/syslog повторяются следующие строки:
...
.../USR/SBIN/CRON[xxxx]:(root) CMD (/home/nikola/sdown.sh)
.../USR/SBIN/CRON[xxxx]:(CRON) info (No MTA installed, discarding output)
...
Комп соответственно не вырубается.. Подскажите, куда копать?

Slayer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.