下一页 上一页 目录

10. 延迟命令 cron 和 at

10.1 cron

Cron 是一个根据 /etc/crontab 和用户自定义的 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 中的一个 BUG。 这是 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

因此,crond 程序的 PATH 永远不会在用户程序中使用。 /etc/cron.* 目录中的所有脚本默认都获得此路径。 即使程序以非 root 身份执行,也会使用此路径。

10.2 at

at 是一个可以在特定时间运行一次性程序的命令。

atd 使用 init 路径运行。 但是,用户程序始终在使用 sh 命令的用户环境中运行。 因此,通常的 shell 覆盖规则适用。 请查看关于 bash 的章节。


下一页 上一页 目录