0 0 * * 1 root hostname >> /tmp/hostname.txt
Run Code Online (Sandbox Code Playgroud)
上面的 cron 条目应该在星期一午夜运行,并在/tmp调用中创建一个文件,hostname.txt其中包含hostname命令的输出。但它只是一个创建的空白文件。为什么?
在处理 crontab 条目时,区分系统级 cron 很重要,通常在以下位置之一:
或者用户级别的品种,实际上存储在这个目录中,/var/spool/cron:
$ sudo ls -l /var/spool/cron/
total 0
-rw------- 1 saml root 0 Jun 6 06:43 saml
Run Code Online (Sandbox Code Playgroud)
您可以crontab -e作为特定用户使用命令访问这些。即使是root也可以拥有这些。
您包含的示例是您在创建系统级类型cron. 唯一的区别是包含运行命令的用户。在创建crontab -e条目类型时,这不是必需的,因为它是多余的,因为 crontab 条目已经指定给创建它的用户。
所以只需将您的行更改为:
0 0 * * 1 hostname >> /tmp/hostname.txt
Run Code Online (Sandbox Code Playgroud)
解决您的问题。
您通常会在主/etc/crontab文件中看到一个条目,如下所示:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Run Code Online (Sandbox Code Playgroud)
这些控制相应目录中的脚本何时运行。所以每天的时间是我当地时间每天早上 4 点 20 分。
因此,如果您想hostname >> /tmp/hostname.txt每天运行该命令,请将其放入脚本中,使其可执行,然后将脚本文件放入cron.daily目录中。
/etc/cron.daily/catchhostname.bash
#!/bin/bash
hostname >> /tmp/hostname.txt
Run Code Online (Sandbox Code Playgroud)
每日定时
# ls -l |grep catch
-rwxr-xr-x 1 root root 118 Feb 28 2013 catchhostname.bash
Run Code Online (Sandbox Code Playgroud)