CronJobs 如何理解第一个单词是用户还是命令?

CronJobs 如何理解第一个单词是用户还是命令?

当我们在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 文件中的条目需要一个字段来标识要运行命令的用户帐户

相关内容