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

2014-01-20 15:56:00 +08:00
 beric
以下是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配置需要注意哪些问题?
4114 次点击
所在节点    问与答
17 条回复
ijse
2014-01-20 17:04:06 +08:00
好多环境变量会没有,执行下/etc/profile文件试试
randal
2014-01-20 17:17:34 +08:00
打下日志就知道了
macdino
2014-01-20 17:18:08 +08:00
看执行权限
awanabe
2014-01-20 17:24:18 +08:00
我调试的时候..设置接下去1分钟, 然后把 log >> 输出到一个文件...
就可以知道哪里出问题了
yangg
2014-01-20 20:13:13 +08:00
环境变量
yangg
2014-01-20 20:13:45 +08:00
还有当前目录,
beric
2014-01-20 21:02:13 +08:00
@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
2014-01-20 21:12:19 +08:00
试下crontab -u root -e root这个为对应的用户名。
winix
2014-01-20 21:24:05 +08:00
"bad username" 多明确的错误提示。
命令前少了用户名
beric
2014-01-20 21:35:49 +08:00
@winix 48 * * * * /alidata/server/php/bin/php /alidata/task/test.php
这样也少用户名?那应该怎样写呢?
shiny
2014-01-20 21:42:16 +08:00
@beric 很清楚了嘛,
格式是:
* * * * * user-name command to be executed
所以你的可以改成
48 * * * * root /alidata/server/php/bin/php /alidata/task/test.php

也可以把 root 换成其他用户
beric
2014-01-20 21:45:43 +08:00
@YouXia 好像也木有用
beric
2014-01-20 21:54:01 +08:00
@shiny 是哦,但是这种写法参照网上的都要把ROOT去掉,如果不去掉反而会报这样的错误,但我刚才试了好像是OK,但是PHP还是不能执行……
julyclyde
2014-01-21 22:44:27 +08:00
系统crontab带用户名字段;用户crontab不带
beric
2014-01-22 11:07:16 +08:00
@julyclyde 啊,怎么分用户和系统的?
julyclyde
2014-01-22 12:44:17 +08:00
@beric /etc/crontab和/etc/cron.d/* 是系统的;用户的是crontab命令编辑的那个,保存在/var/spool/cron/下面
man 5 crontab
beric
2014-01-22 13:51:33 +08:00
@julyclyde 好的,谢谢,之前一直没有这样了解过, 我一般都是直接编辑 /etc/crontab 这个来使用的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/97717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX