Отложенные команды cron и at

cron

Cron это команда которая периодически исполняет команды, как указано в /etc/crontab и определенными пользователем аналогах. В Debian 1.3 есть стандартный механизм исполнения команд в /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly.

Cron запускается из инициализационных скриптов, но изменяет свой PATH на довольно странный:

/usr/bin:/binn:/sbin:/bin:/usr/sbin:/usr/bin

ПОХОЖЕ ЧТО ЭТО БАГ В CRON. Это путь унаследованный от init, где /usr/bin:/bin приписаны в начале без завершающего 0! Этот баг существует не во всех системах.

В crontab скрипте возможно указывать PATH. В Debian 1.3 существует следующая стандартная строка в начале /etc/crontab:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Из за этого, PATH crond никогда не используется в пользовательских программах. Все скрипты в директориях /etc/cron.* получают этот путь по умолчанию. Этот путь используется даже если программа исполняется не от имени root.

at

at это команда, которая может быть использована для однократного запуска программы, в указанное время.

atd исполняется с путем init. В тоже время программы пользователя всегда исполняются в окружении пользователя используя команду sh. Интерпретатор модифицирует путь в обычной манере. См. главу о bash.