LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 966|回复: 5

实在不好意思,crontab的问题,我查看过论坛了,没解决才问的:(

[复制链接]
发表于 2005-1-27 12:18:58 | 显示全部楼层 |阅读模式
root用户,先 touch /etc/test 建立一个测试文件
修改过/etc/crontab后,执行了crontab /etc/crontab
查看crontab
[PHP]
less /var/spool/cron/crontabs/root
17 *    * * *   root    run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6    * * 7   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6    1 * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly

*/5 * * * *     root   /etc/3322ip
*/60 * * * * root echo `date` >>/etc/ test
[/PHP]
pstree 看过了 cron运行着,问题是  /etc/test这个文件没有变化
--------------------------------------------------------------------------------------
顺便问一个问题,/etc/crontab是 system-wide 的 crontab,那么和root用户的crontab有啥区别呢?
发表于 2005-1-27 12:29:37 | 显示全部楼层
*/60 * * * * root echo `date` >>/etc/ test

多了个空格,
而且,一般没有*/60这样写的,直接*就好了。
另外,system-wide和root的crontab实质上好象是没什么区别的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-27 12:43:48 | 显示全部楼层
谢谢楼上的,果然是多了个空格。不过在命令行直接运行时好像有没有空格都可以?
*/60是把我逼急了,原来是就用了*
回复 支持 反对

使用道具 举报

发表于 2005-3-2 22:30:44 | 显示全部楼层
* * * * * 是不是表示每分钟运行一次阿
回复 支持 反对

使用道具 举报

发表于 2005-3-2 23:09:29 | 显示全部楼层
是表示每分钟运行一次阿
最好写成 * 1 * * * root echo `date` >>/etc/test


在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。

crontab命令有三种形式的命令行结构:

crontab [-u user] [file]

crontab [-u user] [-e|-l|-r]

crontab -l -u [-e|-l|-r]
第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行 crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。

命令行中-r选项的作用是从/var/spool/cron/crontabs目录下删除用户定义的文件crontab;

命令行中-l选项的作用是显示用户crontab文件的内容。

使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。

执行命令crontab -u user -r即可删除当前用户的所有的cron作业。

作业与它们预定的时间储存在文件/var/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和 tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。

cron 程序使用两种不同类型的配置文件, 即系统 crontab 和用户 crontabs。 两种格式的唯一区别是第六个字段。 在系统 crontab 中,第六个字段是用于执行命令的用户名。 这给予了系统 crontab 以任意用户身份执行命令的能力。 在用户 crontabs 中, 第六个字段是要执行的命令,所有的命令都会以这个用户自己的身份执行;

     Note: 同其他用户一样, root 用户也可以有自己的 crontab。 它不同于 /etc/crontab (也就是系统 crontab)。由于有系统 crontab 的存在, 通常并不需要给 root 建立单独的用户 crontab。

    我们来看一下 /etc/crontab 文件:

# /etc/crontab: system-wide crontab
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin (2)
HOME=/var/log
回复 支持 反对

使用道具 举报

发表于 2005-3-2 23:10:45 | 显示全部楼层
#minute         hour            mday            month           wday            user         command
  */5         *           *           *           *           root            ls -la /usr

1)# 字符是注释。

2)等号 (=) 字符用来定义任何环境变量,像 SHELL,PATH 和 HOME 变量。如果 shell 行被忽略掉,cron 将会用默认值 sh。如果 PATH 变量被忽略, 那么就没有默认值并且需要指定文件绝对位置。如果 HOME 被忽略,cron 将用用执行者的 home 目录。

3)这一行定义了七个字段。它们是 minute、 hour、mday、 month、wday、 user 和 command。Minute 是命令要运行时的分钟,Hour 是命令要运行时的小时。Mday 是每个月的某天。Month 是命令要运行时的某月。wday 字段表示星期几。所有这些字段的值必须是数字并且用24小时制来表示。“user” 字段是特别的,并且只在 /etc/crontab 文件中存在。这个字段指定了命令应该以哪个用户的身份来运行。当一个用户添加了他的 crontab 文件的时候,他们就会没有这个字段选项。最后,是 command 字段。这是最后的一个字段,自然就是它指定要运行的程序。

0~59 表示分

1~23 表示小时

1~31 表示日

1~12 表示月份

0~7 表示星期(其中0或7表示星期日)

4)最后一行定义了上面所说的值。注意这里我们有一个 */5 列表,紧跟着是一些 * 字符。* 字符代表“开始到最后”, 也可以被解释成每次。所以,根据这行, 显然表明了无论在何时每隔 5 分钟以 root 身份来运行 ls -la /usr 命令。

   扩展到多行的命令应该用反斜线(“\”)来续行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表