at, единоразовое выполнение задач

    Недавно столкнулся с серьезнейшей проблемой - выключить музыку в 23:00...
man cron показался слышком заумным для такой задачи. На linuxformat попалась полезная статья, ниже.
    В отличие от Cron и Anacron, обеспечивающих повторяемые действия, at используется для планирования разовых действий в будущем. Положим, вы захотите, чтобы ваш компьютер пересобрал ядро Linux, пока вы проводите вечер в баре. Вы можете сделать это таким образом:
$ at 20.30
warning: commands will be executed using /bin/sh
at> cd /usr/src/linux at> make all
at>
job 2 at Wed Feb 14 19:30:00 2007
    Как видите, at получает команды, которые вы хотите выполнить, через стандартный ввод до ожидания символа EOT (по умолчанию, ^D). Ваш список поставленных задач можно посмотреть через команду atq.
$ atq 2 Wed Feb 14 19:30:00 2007 a chris $ 
    Демон at (atd) запустит задачу в назначенный момент, экономя вам время на более интересные занятия. Правда, at не доставит вас в бар в назначенное время и не предложит напитков. Однако вы можете из вежливости купить ему пакетик чипсов.
    Подробности об очереди задач хранятся в специальном каталоге (обычно /var/spool/at). Если вы определите задачу или две, а затем посмотрите содержимое этого каталога, то заметите, что в отличие от Cron, at трудится над созданием такой же среды выполнения, как если бы вы только что зашли. Демон atd ответственен за реальное выполнение задач.
    Если вы вдруг передумаете и решите отменить задачу at, можете сделать это командой atrm:
$ atrm 2 
$
    Аргументом для atrm является номер задачи (в данном примере это 2).    Больше всего меня поражает в этой программе изобилие форм записи для задания времени выполнения команды. Верны все следующие варианты:
$ at 14.30 tomorrow
$ at noon Friday
$ at 4pm + 3 days
    Моим любимцем является ключевое слово teatime как синоним 4 часов дня:
$ at teatime tomorrow 
    Моя же проблема решилась такой задачей для atd:
at 23.00 today kill <player's PID>
Полезно, однако.

1 comment:

  1. спасибо, я это искала!

    ReplyDelete