будильник для ком. строки, одноразовый cron
Модератор: /dev/random
будильник для ком. строки, одноразовый cron
Здравия!
Подскажите, пож-ста, буде есть такое в природе, программу, которая вызывалась бы в ком. строке и параметром бы было системное время, по ближайшему совпадению которого она сделает некое действие или просто успешно завершится. Неплохо в ожидании в фон уйти.
Просьба не предлагать:
1) crontab - дважды напрягаться, сначала пуск, потом стоп, так как надо однократно.
2) писать скрипт с проверкой date на соответствие, но если нет готового, то буду так.
3) sleep (время события минус тек. время)
Подскажите, пож-ста, буде есть такое в природе, программу, которая вызывалась бы в ком. строке и параметром бы было системное время, по ближайшему совпадению которого она сделает некое действие или просто успешно завершится. Неплохо в ожидании в фон уйти.
Просьба не предлагать:
1) crontab - дважды напрягаться, сначала пуск, потом стоп, так как надо однократно.
2) писать скрипт с проверкой date на соответствие, но если нет готового, то буду так.
3) sleep (время события минус тек. время)
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: будильник для ком. строки, одноразовый cron
man 1 at же :)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Re: будильник для ком. строки, одноразовый cron
Вспомнил, был такой, я его в debian всегда удалял)) Потому что он демоном висит, ресурсы занимает (хоть и малые), а нужен не был никогда до сих пор. Спасибо.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: будильник для ком. строки, одноразовый cron
Код: Выделить всё
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
683 daemon 20 0 27964 0 0 S 0,0 0,0 0:00.05 atd
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: будильник для ком. строки, одноразовый cron
Тем не менее, был не нужен)) Запустил, оно самое, спасибо.
Re: будильник для ком. строки, одноразовый cron
Вот чего ему не хватает, этому at, так это возможности хоть коротенько промаркировать задание. Чтоб по просмотру очереди заданий (atq) у каждого было осмысленное описание. И по срабатыванию бы неплохо. А то чего там в своё время назапускал, вспоминай теперь... Вроде по man нет такой возможности.
Это только, похоже, в графических органайзерах есть такое?
Это только, похоже, в графических органайзерах есть такое?
Re: будильник для ком. строки, одноразовый cron
По срабатыванию описание научился добавлять, таким образом, нашёл в сети:
Но в очереди описания не хватает по-прежнему.
Код: Выделить всё
$ at время <<END
> echo "описание" | mail $localuser
> звонок.sh
> END
Но в очереди описания не хватает по-прежнему.
Код: Выделить всё
$ atq
24 Thu Nov 16 22:30:00 2017 a globus
25 Sat Nov 18 23:25:00 2017 a globus
Re: будильник для ком. строки, одноразовый cron
описания протоколом не предусмотрены, так что придётся смириться.
Re: будильник для ком. строки, одноразовый cron
Что-то случилось с at-подсистемой, вроде раньше было нормально, а сейчас вразнобой выдаёт задания. Понятно, что можно sort натравливать, но это ж ненормально. Никто не замечал? Причём ладно бы по дате, так и по номеру задания.
$ atq 1759 Wed Nov 25 11:05:00 2020 a globus 1760 Wed Nov 25 15:10:00 2020 a globus 1761 Wed Nov 25 23:00:00 2020 a globus 1762 Thu Nov 26 16:35:00 2020 a globus 1763 Thu Nov 26 23:00:00 2020 a globus 1764 Fri Nov 27 07:25:00 2020 a globus 1765 Fri Nov 27 18:50:00 2020 a globus 1766 Fri Nov 27 19:35:00 2020 a globus 1767 Sat Nov 28 06:55:00 2020 a globus 1768 Sat Nov 28 12:25:00 2020 a globus 1769 Sat Nov 28 19:50:00 2020 a globus 1771 Sun Nov 29 15:10:00 2020 a globus 1772 Sun Nov 29 20:00:00 2020 a globus 1742 Sat Nov 21 20:05:00 2020 a globus 1743 Sun Nov 22 10:20:00 2020 a globus 1745 Sun Nov 22 14:05:00 2020 a globus 1746 Sun Nov 22 15:00:00 2020 a globus 1747 Sun Nov 22 20:00:00 2020 a globus 1754 Mon Nov 23 11:00:00 2020 a globus 1755 Mon Nov 23 16:30:00 2020 a globus 1756 Mon Nov 23 23:00:00 2020 a globus 1757 Tue Nov 24 13:30:00 2020 a globus 1758 Tue Nov 24 23:00:00 2020 a globus 1770 Sun Nov 29 09:15:00 2020 a globus
$ atq 1759 Wed Nov 25 11:05:00 2020 a globus 1760 Wed Nov 25 15:10:00 2020 a globus 1761 Wed Nov 25 23:00:00 2020 a globus 1762 Thu Nov 26 16:35:00 2020 a globus 1763 Thu Nov 26 23:00:00 2020 a globus 1764 Fri Nov 27 07:25:00 2020 a globus 1765 Fri Nov 27 18:50:00 2020 a globus 1766 Fri Nov 27 19:35:00 2020 a globus 1767 Sat Nov 28 06:55:00 2020 a globus 1768 Sat Nov 28 12:25:00 2020 a globus 1769 Sat Nov 28 19:50:00 2020 a globus 1771 Sun Nov 29 15:10:00 2020 a globus 1772 Sun Nov 29 20:00:00 2020 a globus 1742 Sat Nov 21 20:05:00 2020 a globus 1743 Sun Nov 22 10:20:00 2020 a globus 1745 Sun Nov 22 14:05:00 2020 a globus 1746 Sun Nov 22 15:00:00 2020 a globus 1747 Sun Nov 22 20:00:00 2020 a globus 1754 Mon Nov 23 11:00:00 2020 a globus 1755 Mon Nov 23 16:30:00 2020 a globus 1756 Mon Nov 23 23:00:00 2020 a globus 1757 Tue Nov 24 13:30:00 2020 a globus 1758 Tue Nov 24 23:00:00 2020 a globus 1770 Sun Nov 29 09:15:00 2020 a globus
Re: будильник для ком. строки, одноразовый cron
Получается что демон усыновляет все запущенные процессы. Запускаю по заданию скрипт вызывающий оболочку bash и в котором в цикле дремит sleep.
Пробую остановить демон, чтобы остановить выполнение скрипта:
init усыновил все процессы как при запуске с nohup
/var/spool/at/spool/
Это хорошо видно в предыдущем выводе команды lsof, в самом конце списка
Shell
at -f '/home/nez/bin/test.sh now
ps -C test.sh #чисто
ps -o ppid= -C sleep
3877
ps -o ppid=,comm= -p 3877
3876 bash #здесь имя моего скрипта обезличивается
pstree 3877
bash───sleep
ps -o ppid=,comm= -p 3876
3875 sh #оболочка с которой работает демон atd и в которой запускается оболочка bash
ps -o ppid=,comm= -p 3875
901 atd #сам демон
lsof -p 3877
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3877 nez cwd DIR 8,1 4096 2359298 /home/nez
bash 3877 nez rtd DIR 8,1 4096 2 /
bash 3877 nez txt REG 8,1 1344328 5782368 /usr/bin/bash
bash 3877 nez mem REG 8,1 223542144 5774915 /usr/lib/locale/locale-archive
bash 3877 nez mem REG 8,1 3222128 5774932 /usr/lib64/libc-2.32.so
bash 3877 nez mem REG 8,1 37384 5774934 /usr/lib64/libdl-2.32.so
bash 3877 nez mem REG 8,1 191480 5779984 /usr/lib64/libtinfo.so.6.2
bash 3877 nez mem REG 8,1 26998 6292415 /usr/lib64/gconv/gconv-modules.cache
bash 3877 nez mem REG 8,1 264360 5772089 /usr/lib64/ld-2.32.so
bash 3877 nez 0r REG 0,46 449 160 /tmp/sh-thd.fbK3Fn (deleted)
bash 3877 nez 1u REG 8,1 67908 8519773 /var/spool/at/spool/a0001801986b7d
bash 3877 nez 2u REG 8,1 67908 8519773 /var/spool/at/spool/a0001801986b7d
Shell
sudo systemctl stop atd
ps -o ppid=,comm= -p 3875
1 atd
Добавлено (19:45):
Кроме того если в nohup используется лог файл в текущей директории то в at такую же роль играет файл в диретории/var/spool/at/spool/
Это хорошо видно в предыдущем выводе команды lsof, в самом конце списка
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: будильник для ком. строки, одноразовый cron
А Вы ожидали чего-то другого? Они же не в терминале запускались.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: будильник для ком. строки, одноразовый cron
Просто пока этот топик не всплыл ничего не слышала об этой утилите. Была удивлена. Обнаружила что демон запущен в федоре "из коробки". Мне она очень понравилась.
Re: будильник для ком. строки, одноразовый cron
Интересные временные рамки можно задавать. Например установить рекурсивно время задачи - в каждый понедельник но в каждом последующем на час позже:
Shell
cat test.sh
#!/bin/bash
notify-send $'HELLO WORLD\nAND GOODBYE'
at -f /home/nez/bash/test.sh Monday +1 hours
Shell
at -f test.sh Monday