我想每 24 小时在一台 Ubuntu 11.04 机器上以 root 身份执行一条命令。这台机器并不是一直开着,但当它开着的时候,可以一次开几天。我应该如何正确配置我的 crontab 以按所需的间隔执行此命令,以及以 root 身份执行 cron 作业有什么特别之处我应该知道吗?我是唯一使用这台机器的人。
答案1
您只需将要执行的脚本添加到目录中即可/etc/cron.daily
- 它将每天执行一次anacron
。
摘录自man 8 anacron
:
Anacron 可用于定期执行命令,频率以天为单位。与 cron(8) 不同,它不假设机器连续运行。因此,它可以用于不是全天 24 小时运行的机器,以控制通常由 cron 控制的每日、每周和每月作业。
答案2
要编辑 root 的 crontab,请运行:
sudo crontab -e
填写一行,例如:
0 0 * * * /usr/sbin/ntpdate-debian -s
这将在每次午夜时分执行一次ntpdate
带有开关的指定命令(请参阅格式的文档,或可能只是 crontab 本身的注释的第一行)。-s
info 'crontab(5)'
一些小提示:
- 请注意,crontab 中的命令通常通过 执行
/bin/sh
,在基于 Debian 的系统上不是 Bash,而是 Dash。注意不要使用巴什主义在命令中。根据我的经验,经常会看到错误的重定向,以及关于哪些字符需要转义的错误假设。 给出二进制文件的完整路径通常是一个好主意,因为
PATH
root 和普通用户之间的变量可能不同。我曾见过由于变量不同而导致一个命令遮蔽另一个命令的情况PATH
,这是一种不必要的复杂情况。简单地执行路径查找中的第一个程序也可以被视为某种安全风险,因为草率的配置可能会让某人替换二进制文件(如果有人在系统上拥有这种权限,他可能在某种程度上可以这样做,但无论如何)。
只要机器在运行,Cron 就会每 24 小时执行一次命令。如果你想让机器在计划执行时“赶上”关闭的情况,你应该看看anacron
其目的正是如此。