V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
beric
V2EX  ›  问与答

问下在crontab中执行命令的问题

  •  
  •   beric · 2014 年 1 月 20 日 · 4669 次点击
    这是一个创建于 4375 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以下是crontab的配置
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    # For details see man 4 crontabs

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # | .------------- hour (0 - 23)
    # | | .---------- day of month (1 - 31)
    # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
    # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # | | | | |
    # * * * * * user-name command to be executed
    # run-parts
    48 * * * * /alidata/server/php/bin/php /alidata/task/test.php

    /alidata/server/php/bin/php /alidata/task/test.php 这句为什么会不执行,而用SSH登陆执行就能,想问下CRONTAB配置需要注意哪些问题?
    17 条回复    1970-01-01 08:00:00 +08:00
    ijse
        1
    ijse  
       2014 年 1 月 20 日
    好多环境变量会没有,执行下/etc/profile文件试试
    randal
        2
    randal  
       2014 年 1 月 20 日
    打下日志就知道了
    macdino
        3
    macdino  
       2014 年 1 月 20 日
    看执行权限
    awanabe
        4
    awanabe  
       2014 年 1 月 20 日
    我调试的时候..设置接下去1分钟, 然后把 log >> 输出到一个文件...
    就可以知道哪里出问题了
    yangg
        5
    yangg  
       2014 年 1 月 20 日
    环境变量
    yangg
        6
    yangg  
       2014 年 1 月 20 日
    还有当前目录,
    beric
        7
    beric  
    OP
       2014 年 1 月 20 日
    @ijse
    @randal
    @macdino
    @awanabe
    今天整了一天,权限啊,目录啊,都CHECK过了。日志的话看crontab的日志发现在启动时会有这句LOG: crond[14363]: (CRON) bad username (/etc/crontab)。不知道为什么会这样。看别人写的也是这样写的。然后我放在SHELL 脚本里也不能执行:即:php /alidata/task/test.php 也没任何报错什么的。(我是这样加的php /alidata/task/test.php >> test.log)就是不跑这句。然后其它我手动执行:php xxxx或那个脚本.sh也都是能跑的……真不知道还有哪里有问题了
    YouXia
        8
    YouXia  
       2014 年 1 月 20 日 via Android
    试下crontab -u root -e root这个为对应的用户名。
    winix
        9
    winix  
       2014 年 1 月 20 日
    "bad username" 多明确的错误提示。
    命令前少了用户名
    beric
        10
    beric  
    OP
       2014 年 1 月 20 日
    @winix 48 * * * * /alidata/server/php/bin/php /alidata/task/test.php
    这样也少用户名?那应该怎样写呢?
    shiny
        11
    shiny  
    PRO
       2014 年 1 月 20 日
    @beric 很清楚了嘛,
    格式是:
    * * * * * user-name command to be executed
    所以你的可以改成
    48 * * * * root /alidata/server/php/bin/php /alidata/task/test.php

    也可以把 root 换成其他用户
    beric
        12
    beric  
    OP
       2014 年 1 月 20 日
    @YouXia 好像也木有用
    beric
        13
    beric  
    OP
       2014 年 1 月 20 日
    @shiny 是哦,但是这种写法参照网上的都要把ROOT去掉,如果不去掉反而会报这样的错误,但我刚才试了好像是OK,但是PHP还是不能执行……
    julyclyde
        14
    julyclyde  
       2014 年 1 月 21 日 via iPad
    系统crontab带用户名字段;用户crontab不带
    beric
        15
    beric  
    OP
       2014 年 1 月 22 日
    @julyclyde 啊,怎么分用户和系统的?
    julyclyde
        16
    julyclyde  
       2014 年 1 月 22 日
    @beric /etc/crontab和/etc/cron.d/* 是系统的;用户的是crontab命令编辑的那个,保存在/var/spool/cron/下面
    man 5 crontab
    beric
        17
    beric  
    OP
       2014 年 1 月 22 日
    @julyclyde 好的,谢谢,之前一直没有这样了解过, 我一般都是直接编辑 /etc/crontab 这个来使用的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    ♥ Do have faith in what you're doing.