LINUX.ORG.RU

[хочу странного] скрипт для будильника

 


0

1

В биосе включаем ежедневный запуск компа в 7.50.

Необходимо, чтобы после загрузки системы завелся скрипт, который:

1) посмотрел текущее время, и если оно действительно 7.50, то проиграл alarm.mp3
2) если время действительно 7:50, а на дворе суббота или всокресение, то вырубил комп.

К сожалению башем владею крайне хреново, поэтому прошу помощи. Как я понимаю необходимо грепать текущую date`у на предмет часов:минут и дня.

★★★★★

[[ $(date +%H:%M) == 7:50 ]] && echo yes

anonymous
()

CURR_DAY=`date +%A` CURR_HOUR=`date +%H` CURR_MIN=`date +%M`

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

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

Дык тут же 4 строчки..

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

blocknote

man cron man date man mpg123 man shutdown

man man !

Можно списком писать, он проглотит ;)

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

man cron

громоздко.

Что? Это cron громоздко? Ы!
И в биосе надо на несколько минут раньше время пробуждения ставить. Мало ли, вдруг ФС почекаться захотят, и твой костыль уже не отработает правильно. Проспишь тогда. :)

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

И в биосе надо на несколько минут раньше время пробуждения ставить. Мало ли, вдруг ФС почекаться захотят, и твой костыль уже не отработает правильно. Проспишь тогда. :)

Крон на серваке хорошо. а на счет нескольких минут - в моем скрипте я это учел)

#!/bin/bash

if [ "$(date +%H:%M | grep "07:5")" = '' ]; ## Если время не 07:5{0-9}, то процедура будильник идет на три буквы:)
then echo "alarm not started!";
elif [ "$(date +%u)" -lt 6 ]; ## если с временем все путем, проверяем день недели.
then mpg123 /usr/local/alarm/alarm.mp3 & echo "alarm started!" ## менее 6-ти - играем будильник
else echo "System halt NOW!" && halt ## 6, 7 (сб/вск) - шлем нафик.
fi

Всем спасибо, надеюсь мой , кхм, код на баше кому-то пригодится)

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

Для полного счастья добавил в самом начале sleep 30 (без него писало что not started), хз чего, может из-за htpdate.

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

Крон на серваке хорошо.

Ладно, не буду спорить. Отказ от костылей приходит с возрастом.

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

1. Лишний демон в памяти.
2. Почему с точностью до минуты нежелательно писалось выше.
3. Крон благополучно потушит тазик, если я к примеру загрузился с утра пораньше поработать.

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

else echo «System halt NOW!» && halt ## 6, 7 (сб/вск) - шлем нафик.

halt - это сурово.
Было бы куда красивей /sbin/shutdown -h now или /sbin/init 0 хотя бы.
В более других системах (например в Solaris) по halt все процессы убиваются просто kill-ом без start/stop-ных скриптов.

К тому же я бы в явном виде указал бы переменную окружения
PATH=/bin:/usr/bin:/sbin:/usr/sbin

evildim
()
Ответ на: комментарий от leg0las

1. Лишний демон в памяти.

Он там при любом раскладе уже есть. И отключать его не стоит.

2. Почему с точностью до минуты нежелательно писалось выше.

Добавляем случайную задержку. Например в пределах 1 минуты (раз уж используем bash):

sleep $(( $SECONDS % 60 ))

3. Крон благополучно потушит тазик, если я к примеру загрузился с утра пораньше поработать.

Не обязательно - можно поставить проверку в скрипт на предмет а не залогинился ли кто. Например так (сходу что пришло на ум, если подумать - можно и что-то поумнее сочинить)

[ «x`w|egrep '(pts|:[:digit:])'`» != 'x' ] && exit 0

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

На счет крона:

leg0las@mirkwood-home-gentoo ~ $ ps aux | grep cron
leg0las   2559  0.0  0.0 102084   856 pts/0    S+   08:04   0:00 grep --colour=auto cron
leg0las@mirkwood-home-gentoo ~ $

крона таки нет) а остальное учтем.

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

1. ниже вижу, что крона нет, но жрет он ажно целых

root      1337  0.0  0.0   4336   264 ?        Ss   Nov21   0:01 /usr/sbin/cron 

2. в случае fsck у тебя ни один скрипт не сработает. Можешь в кронтабе вписать 45-59 в поле минут.

3. А твой скрипт не потушит?

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

Не знал про halt, но в Gentoo вроде все-таки они (процессы) останавливаются.

В любом linux дистрибутиве они останавливаются - по реалации это ближе к init 0. А вот если вызвать halt -f - будет совсем как в Solaris.
От того что народ осваивает unix like системы начиная с linux, много раз наблюдал, как останавливают солярку halt-ом, что не есть правильно.

evildim
()
Ответ на: комментарий от leave

2. в случае fsck у тебя ни один скрипт не сработает.

[    2.384701] REISERFS (device sda5): found reiserfs format "3.6" with standard journal
[    2.384711] REISERFS (device sda5): using ordered data mode
[    2.384712] reiserfs: using flush barriers
[    2.389581] REISERFS (device sda5): journal params: device sda5, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
[    2.390326] REISERFS (device sda5): checking transaction log (sda5)
[    2.464581] REISERFS (device sda5): Using r5 hash to sort names
[    2.471975] VFS: Mounted root (reiserfs filesystem) readonly on device 8:5.
...
[    8.278294] reiserfs: enabling write barrier flush mode
[    8.423541] REISERFS (device sda7): found reiserfs format "3.6" with standard journal
[    8.423553] REISERFS (device sda7): using ordered data mode
[    8.423554] reiserfs: using flush barriers
[    8.429737] REISERFS (device sda7): journal params: device sda7, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
[    8.430522] REISERFS (device sda7): checking transaction log (sda7)
[    8.496394] REISERFS (device sda7): Using r5 hash to sort names
[    8.537663] REISERFS (device sda6): found reiserfs format "3.6" with standard journal
[    8.537675] REISERFS (device sda6): using ordered data mode
[    8.537677] reiserfs: using flush barriers
[    8.553100] REISERFS (device sda6): journal params: device sda6, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
[    8.553860] REISERFS (device sda6): checking transaction log (sda6)
[    8.619463] REISERFS (device sda6): Using r5 hash to sort names
...

не?:)

3. А твой скрипт не потушит?

А если есть скрипт, зачем городить кронтаб?:)

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

Сенк, буду иметь ввиду. Исправил на init 0.

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

А зачем придумывать костыли, если есть работающее решение в две строчки? Или тебе просто хочется покопаться в баш-скриптинге?

leave ★★★★★
()

Вечером в спячку комп и на будильник:

#!/bin/sh
sudo rtcwake --verbose --mode disk --time `date +%s --date "08:00"`
mpc play

adzeitor
()

Всё это детские шалости - просыпание от компьютера.

В реальности получается так, что просыпаешься от появляющегося звука вентиляторов и заводящегося винчестера...

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

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