当我们在cronjobs
文件中写入:
* * * * * foo bar
系统如何知道foo
您需要执行该bar
命令的是一个用户,还是一个带有输入参数foo
的命令?bar
答案1
之间的区别是用户crontab 文件,在这种情况下没有用户名字段,并且系统crontab 文件,其中始终有用户名。用户crontab 文件是通过crontab(1)
命令访问的文件。系统相反,crontab 文件通常驻留在etc
目录下,并且不通过crontab(1)
界面进行编辑。
因此cron(8)
或者crond(8)
仅仅需要知道是否用户正在解析 crontab 文件(第六个字段是命令)或系统文件(第六个字段是用户名,也可能是组)。这可以通过一个标志来设置,具体取决于 cron 文件运行的目录。同时,系统管理员希望能够记住他们是否正在通过crontab -e
某些方式编辑文件用户或者改为编辑系统crontab 文件。
文件中通常有注释作为字段的提醒,例如默认值用户OpenBSD 上的crontab 文件root
包含:
#minute hour mday month wday [flags] command
...
或在一个系统在某些 Linux 系统的 crontab 文件中,人们可能会发现如下注释:
#minute hour mday month wday user command
# how much are the dhcp pools being used?
36 */4 * * * root ...
crontab(5)
时不时地通读一遍是个好主意,因为您可能还需要提醒自己一些其他问题。
答案2
这完全取决于您正在编辑哪个 crontab 文件。
每用户 crontab 文件没有用户字段,因为很清楚哪个用户帐户将执行该命令。另一方面,系统 crontab 文件中的条目需要一个字段来标识要运行命令的用户帐户