будильник для ком. строки, одноразовый cron

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

будильник для ком. строки, одноразовый cron

Сообщение yoricI »

Здравия!
Подскажите, пож-ста, буде есть такое в природе, программу, которая вызывалась бы в ком. строке и параметром бы было системное время, по ближайшему совпадению которого она сделает некое действие или просто успешно завершится. Неплохо в ожидании в фон уйти.
Просьба не предлагать:
1) crontab - дважды напрягаться, сначала пуск, потом стоп, так как надо однократно.
2) писать скрипт с проверкой date на соответствие, но если нет готового, то буду так.
3) sleep (время события минус тек. время)
Спасибо сказали:

Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: будильник для ком. строки, одноразовый cron

Сообщение Portnov »

man 1 at же :)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

Re: будильник для ком. строки, одноразовый cron

Сообщение yoricI »

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

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17454
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: будильник для ком. строки, одноразовый cron

Сообщение Bizdelnick »

yoricI писал(а):
02.10.2017 08:22
ресурсы занимает (хоть и малые)

Код: Выделить всё

  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
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

Re: будильник для ком. строки, одноразовый cron

Сообщение yoricI »

Тем не менее, был не нужен)) Запустил, оно самое, спасибо.
Спасибо сказали:

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

Re: будильник для ком. строки, одноразовый cron

Сообщение yoricI »

Вот чего ему не хватает, этому at, так это возможности хоть коротенько промаркировать задание. Чтоб по просмотру очереди заданий (atq) у каждого было осмысленное описание. И по срабатыванию бы неплохо. А то чего там в своё время назапускал, вспоминай теперь... Вроде по man нет такой возможности.
Это только, похоже, в графических органайзерах есть такое?
Спасибо сказали:

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

Re: будильник для ком. строки, одноразовый cron

Сообщение yoricI »

По срабатыванию описание научился добавлять, таким образом, нашёл в сети:

Код: Выделить всё

$ 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
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 1053
ОС: Fedora

Re: будильник для ком. строки, одноразовый cron

Сообщение s.xbatob »

описания протоколом не предусмотрены, так что придётся смириться.
Спасибо сказали:

yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: будильник для ком. строки, одноразовый cron

Сообщение yoshakar »

s.xbatob писал(а):
13.11.2017 21:04
так что придётся смириться.
Или написать средней сложности скриптик — обёртку вокруг at, который будет вести базу описаний по номерам задач, и предоставлять доступ к этой базе.
Спасибо сказали:

Аватара пользователя
yoricI
Сообщения: 1186
ОС: gentoo fluxbox

Re: будильник для ком. строки, одноразовый cron

Сообщение yoricI »

Что-то случилось с 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
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 279
ОС: debian, fedora (i3-wm)

Re: будильник для ком. строки, одноразовый cron

Сообщение olecya »

Получается что демон усыновляет все запущенные процессы. Запускаю по заданию скрипт вызывающий оболочку bash и в котором в цикле дремит sleep.

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
init усыновил все процессы как при запуске с nohup
Добавлено (19:45):
Кроме того если в nohup используется лог файл в текущей директории то в at такую же роль играет файл в диретории
/var/spool/at/spool/
Это хорошо видно в предыдущем выводе команды lsof, в самом конце списка
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17454
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: будильник для ком. строки, одноразовый cron

Сообщение Bizdelnick »

olecya писала:
21.11.2020 19:10
init усыновил все процессы как при запуске с nohup
А Вы ожидали чего-то другого? Они же не в терминале запускались.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 279
ОС: debian, fedora (i3-wm)

Re: будильник для ком. строки, одноразовый cron

Сообщение olecya »

Bizdelnick писал:
21.11.2020 20:20
А Вы ожидали чего-то другого?
Просто пока этот топик не всплыл ничего не слышала об этой утилите. Была удивлена. Обнаружила что демон запущен в федоре "из коробки". Мне она очень понравилась.
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 279
ОС: debian, fedora (i3-wm)

Re: будильник для ком. строки, одноразовый cron

Сообщение olecya »

Интересные временные рамки можно задавать. Например установить рекурсивно время задачи - в каждый понедельник но в каждом последующем на час позже:

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
Спасибо сказали: