Chinaunix

标题: crontab内容无法启动 [打印本页]

作者: jiafeng521    时间: 2008-07-04 11:45
标题: crontab内容无法启动
新手求教:我的crontab 最后一项 在11.30无法执行 backupmysql
如图 各位高人路过请指点!

[ 本帖最后由 jiafeng521 于 2008-7-4 15:21 编辑 ]

crontab.jpg (21.51 KB, 下载次数: 26)

crontab.jpg

crontab.jpg (7.38 KB, 下载次数: 22)

crontab.jpg

etc下crontab.jpg (20.88 KB, 下载次数: 21)

etc下crontab.jpg

作者: jiafeng521    时间: 2008-07-04 11:59
自己顶起来  希望知道的高手们 可以帮帮忙! 3Q!
作者: jerrywjl    时间: 2008-07-04 12:25
最后一行 最后一个*后面需要加一个空格。
作者: polokus    时间: 2008-07-04 12:41
呵呵,不仔细看不出来呢
作者: jiafeng521    时间: 2008-07-04 12:53
谢谢楼上的俩位! 我去试试!
作者: jiafeng521    时间: 2008-07-04 13:06
还是不可以!
路过的高人 帮下忙!
作者: polokus    时间: 2008-07-04 13:31
backupmysql   这个文件你确认有可执行权限么?
作者: jiafeng521    时间: 2008-07-04 13:52
可以的!
我在 /usr/sbin/
./backupmysql 没有问题!
作者: happyc84    时间: 2008-07-04 13:56
工作目录 ?
$PATH?
作者: jiafeng521    时间: 2008-07-04 13:58
楼上的高人 可以详细的说一下吗! 谢谢!
作者: hahasasa    时间: 2008-07-04 13:59
注意这个etc/crontab,非我们平时书上看到的crontab格式

他只会运行 cron.daily/   cron.hourly/  cron.monthly/    cron.weekly/ 下面的脚本

你以root身份 crontab -e 编辑你的crontab,添加
30 11 * * * /usr/sbin/xxxx
试试看




《How Linux Works:What Every Super-User Should Know》中有提到

System Crontab Files

Rather than use the superuser's crontab for scheduling recurring system tasks, Linux distributions normally have an /etc/crontab file. Do not use the crontab command to edit this file; it has a slightly different format with one more field — the user that should run the job.

[ 本帖最后由 hahasasa 于 2008-7-4 14:02 编辑 ]
作者: polokus    时间: 2008-07-04 14:26
你在 /root  目录下,直接执行  /usr/sbin/backupmysql

是否可以正常执行?

我想,9楼的兄弟的意思是,你这个脚本在执行的时候,是否有工作路径的限制呢?
作者: jiafeng521    时间: 2008-07-04 14:29
回复12楼的兄弟!
谢谢帮助! 但是 执行一切正常!
作者: polokus    时间: 2008-07-04 14:30
原帖由 hahasasa 于 2008-7-4 13:59 发表
注意这个etc/crontab,非我们平时书上看到的crontab格式

他只会运行 cron.daily/   cron.hourly/  cron.monthly/    cron.weekly/ 下面的脚本

你以root身份 crontab -e 编辑你的crontab,添加
30 11 * * ...


你通过这种方式添加的记录,事实上也会保存到crontab里面吧,应该不是这个问题
我的服务器的crontab中也是有cron.hourly、cron.daily等的配置的
我也是把自己的添加到这里面,运行的很正常
作者: polokus    时间: 2008-07-04 14:35
原帖由 jiafeng521 于 2008-7-4 14:29 发表
回复12楼的兄弟!
谢谢帮助! 但是 执行一切正常!


你再测试一下,比如说把原来crontab中的那条记录修改为
40 14 * * * root /usr/sbin/backupmysql

然后看看在14点40分后是否会执行

这条记录中不应该出现 run-parts
作者: kenduest    时间: 2008-07-04 14:35
原帖由 jiafeng521 於 2008-7-4 11:45 發表
新手求教:我的crontab 最後一項 在11.30無法執行 backupmysql
如圖 各位高人路過請指點!


你的語法錯了。

/etc/crontab :

  1. 30  11   *  *  *  root  /usr/sbin/backupmysql
复制代码


你原本語法多打個 run-parts 是有點問題的,因為那程式後面是要給一個目錄,他會把該目錄內的程式文件都一一執行之。

另外一個不好習慣,你絕對不要把自己寫的 script 放 /usr/sbin 內,因為這不是系統提供的。你應該放自己 root 家目錄內的 ~/bin 這類都可以。

最後的建議不要改 /etc/crontab,多利用 crontab -e 編輯即可,自行編輯只要這樣語法即可:

  1. 30  11   *  *  *   /usr/sbin/backupmysql
复制代码


不需要指定身份。

--
作者: polokus    时间: 2008-07-04 14:38
楼上的兄弟已经解释的非常仔细了。。。
作者: jiafeng521    时间: 2008-07-04 14:39
难道我得吧/usr/sbin/backupmysql
的可执行程序 backupmysql 放到 cron.daily/   cron.hourly/  cron.monthly/    cron.weekly/ 才可以!!!


作者: jiafeng521    时间: 2008-07-04 14:54
谢谢 各位!
版主的解释很详细! 谢谢!
这就去试一试
作者: jiafeng521    时间: 2008-07-04 15:06
哎! 参考各位朋友的意见! 该改的也都改了!
改做也都做了还是 执行不了!
作者: hahasasa    时间: 2008-07-04 15:07
贴出你的/etc/crontab
贴出你以root身份crontab -l的输出
作者: jiafeng521    时间: 2008-07-04 15:22
标题: 回复 #21 hahasasa 的帖子
在1楼里面,谢谢帮助!
作者: hahasasa    时间: 2008-07-04 15:26
输出你的 chkconfig --list |grep crond
输出你的 runlevel
作者: jiafeng521    时间: 2008-07-04 15:29
标题: 回复 #23 hahasasa 的帖子
为了方便我就不贴图了!显示如下
crontab -l
10 15  *  *  *  /usr/sbin/backupmysql
crontab 是启用的!

[ 本帖最后由 jiafeng521 于 2008-7-4 15:31 编辑 ]
作者: hahasasa    时间: 2008-07-04 15:38
/var/log/messages里有crond的信息吗?
作者: kenduest    时间: 2008-07-04 15:41
我大膽推斷吧,mybackup.sh 那個 shell script 文件,第一行大概不是 #!/bin/bash 或是 #!/bin/sh 這些敘述。

--
作者: jiafeng521    时间: 2008-07-04 15:42
标题: 回复 #25 hahasasa 的帖子
奇怪啊! 没有关于crond的记录啊1
作者: hahasasa    时间: 2008-07-04 15:58
syslog配置成记cron.*了吗?
作者: jiafeng521    时间: 2008-07-04 16:03
标题: 回复 #28 hahasasa 的帖子
这个。。。
兄弟 能详细点吗!
作者: hahasasa    时间: 2008-07-04 16:07
例如我的/etc/syslog.conf里有

# Log cron stuff
cron.*                                                  /var/log/cron

# Log anything
*.*                                                     /var/log/messages


你呢?
作者: jiafeng521    时间: 2008-07-04 16:44
自己顶起来 希望那个能得到正解!
作者: 中华行者    时间: 2008-07-04 20:59
标题: 提点个人看法!
1、要确认crond正在运行,修改了 计划设置最好重启一下这个服务!
2、crontab -u root -l 查看当前的计划任务。
3、修改了file的配置后执行一下:crontab -u root file;
4、先把计划执行命令换作其它的看执行是否正常,如 40 08 * * * root /sbin/shutdown -r now
试试!如查正常重启说明crond是没问题的!
作者: dreamerx2004    时间: 2008-07-04 23:16
原帖由 kenduest 于 2008-7-4 15:41 发表
我大膽推斷吧,mybackup.sh 那個 shell script 文件,第一行大概不是 #!/bin/bash 或是 #!/bin/sh 這些敘述。

--


可是他已经说了在bash下用./xxxx 是可以运行的,估计不是文件头的问题
作者: kingji    时间: 2008-07-05 00:43
查日志看看。把日志贴出来。
作者: kenduest    时间: 2008-07-05 02:26
原帖由 dreamerx2004 於 2008-7-4 23:16 發表
可是他已經說了在bash下用./xxxx 是可以運行的,估計不是文件頭的問題


非也,你可以自己測試一下,結果是不相同的。

cron 是使用 execlp() 來執行,這時候文件 header 的 magic information 很重要。

shell 下執行一個文件檔,shell 是可以先判斷該文件格式,猜不出來會當作自己的 script 執行,但是透過系統 execlp 這類呼叫可未必了。

--
作者: 飞哥2005    时间: 2008-07-05 10:29
问题解决了没 ?????
作者: polokus    时间: 2008-07-05 10:43
原帖由 kenduest 于 2008-7-4 15:41 发表
我大膽推斷吧,mybackup.sh 那個 shell script 文件,第一行大概不是 #!/bin/bash 或是 #!/bin/sh 這些敘述。

--


以前在什么地方好像也提过crond执行的时候环境变量的问题

楼主把检查一下你的脚本
作者: kenduest    时间: 2008-07-05 15:42
原帖由 中華行者 於 2008-7-4 20:59 發表
1、要確認crond正在運行,修改了 計劃設置最好重啟一下這個服務!


這真的不需要。

2、crontab -u root -l 查看當前的計劃任務。
3、修改了file的配置後執行一下:crontab -u root file;
4、先把計劃執行命令換作其它的看執行是否正常,如 40 08 * * * root /sbin/shutdown -r now
試試!如查正常重啟說明crond是沒問題的!


crontab -e 內已經不用 root 這個用字身份指定,前面提過了。

個人建議,若樓主真的還是不會 debug 的話,請用 crontab -e 後輸入這樣:

  1. *  *  *  *  *  /bin/echo "hello"   >  /tmp/cron-test.txt
复制代码


等一下幾分鐘過去後,去看 /tmp/cron-test.txt 是否存在。若連這個都沒有,那請先去拜拜一下,謝謝。

--
作者: ljily000    时间: 2008-07-06 11:59
应该与环境变量等有关系,楼主可以把那个脚本贴出来么?
作者: bamboo_plum    时间: 2008-07-06 12:20
脚本有问题吧?随便把格式写出来意思一下?不要写你的业务上处理就行了,呵呵
作者: nonamexz    时间: 2008-07-06 19:42
见意将脚本逐行调试,我曾遇到这样的问题,基本上问题都是出在环境变量上。
作者: motang    时间: 2008-07-06 23:07
标题: 几个建议
1。把所有的cron job都 删除,只留最后一条,如果可以运行,那说明其他的JOB改变了环紧变量,或者改变了shell. 这个情况我碰见过
2.  确定26楼说的,使否正确。这个情况我也碰见过。
3。确认那个脚本运行的路径在什么地方。如果可能,加上, cd xxx; sh; ....
作者: G65535    时间: 2008-07-06 23:25
原帖由 kenduest 于 2008-7-4 15:41 发表
我大膽推斷吧,mybackup.sh 那個 shell script 文件,第一行大概不是 #!/bin/bash 或是 #!/bin/sh 這些敘述。

--


很有可能是这个原因,之前加crontab也出现过类似的情况

期待楼主的答复。。。。
作者: jerrymy    时间: 2008-07-07 07:41
学习了,问题还没解决吗?

楼主跑哪里去了。
作者: daxian195    时间: 2008-07-07 08:54
10 15  *  *  *  /usr/sbin/backupmysql 2>/var/log/cron.err.log

把错误输出到日志里,这样如果有错误,就可以在日志里查原因。如果日志没内容,很可能就没执行。
作者: catoc    时间: 2008-07-07 09:26
tail /var/log/cron

看看有没有执行的日志。
另外检查你的 root 信箱,如果脚本有错误,通常会发送邮件给你。
作者: BLZer    时间: 2008-07-07 12:28
百分之百是环境变量问题

在你的mysql脚本里增加
if [ -f /etc/profile]; then
. /etc/profile
fi

if [ -f ~/.bashrc ];then
. ~/.bashrc
fi

再试下
作者: polokus    时间: 2008-07-07 12:29
楼主又没影了,也不知道现在怎么样了
作者: linuxnature    时间: 2008-07-07 12:34
期待答案。学习了很多知识。
作者: ytjwt    时间: 2008-07-07 14:29
一是目录是否写错,看清楚了,二是你的权限问题。就这两项,你检查
作者: hero--008    时间: 2008-07-07 22:27
估计lz去忙别的东东了~哈哈
使用crontab,最值得注意的就是环境变量。你单个shell运行可能没什么问题,但放到crontab下就不一定了!建议lz先用
crontab -e新增测试条目
00 16 * * * /dir/test.sh (test.sh为一小测试脚本 echo "hello"确定是否为环境变量的问题,检查下自己的backupmysql脚本吧!
######################################Run the Incremental Procedure
INFORMIXDIR=/informix
PATH=.PATHINFORMIXDIR/bin
DBDATE=Y4MD/
INFORMIXSERVER=dm_tcp
LANG=en_US
TERM=vt100
export LANG INFORMIXDIR PATH DBDATE INFORMIXSERVER TERM
#######################################
注意路径最好为绝对路径
作者: 刘世伟    时间: 2008-07-08 01:22
2年后, 楼主会回来解答这个问题,

"这个问题,我2年前遇到过,原因是........"
作者: 世界因我而精彩    时间: 2008-07-08 08:22
1。 run-parts 后面只能跟一个目录

2。 如果你使用的是RHEL 5的话,最好重启一下 crond ,否则可能不生效。
作者: polokus    时间: 2008-07-08 08:52
原帖由 刘世伟 于 2008-7-8 01:22 发表
2年后, 楼主会回来解答这个问题,

"这个问题,我2年前遇到过,原因是........"


花儿已经谢了。。。
作者: 李某人    时间: 2008-07-08 09:41
LZ 干脆消失了~~~
作者: iask    时间: 2008-07-08 10:44
标题: 原理就不多讲了,试试这个方法好用不。
看楼主帖子,楼主的添加crontab条目应该压根没有执行,所以我的思路:先解决crontab的问题,然后在查找脚本本身的问题。
1、crontab -e,然后添加:
50 10 * * * cd /usr/sbin/; ./backupmysql
#这里的时间你可以根据情况修改,最好改完你添加crontab以后2~3分钟,这样可以快点看到结果,因为看你的脚本名字是备份mysql就没有建议你一分钟执行一次。^_^
2、然后执行:
/etc/init.d/crond restart
3、观察cron日志
tail -f /var/log/cron
看看在你指定的时间脚本有没有被cron执行。

如果日志里面backupmysql脚本执行了,说明crontab设置没有问题。剩下的就是判断你的脚本执行的结果是否正确,那就是shell范畴了。
:)

[ 本帖最后由 iask 于 2008-7-8 10:49 编辑 ]
作者: leohuangfu    时间: 2008-07-08 17:11
我们一帮热血人忙着找原因。。。 LZ竟然消失了,如果问题解决了 说明一下原因啊。。。。 唉
作者: hneng.xu    时间: 2008-07-09 03:45
是哪个用户下的crontab?
作者: bjruntest    时间: 2008-07-09 09:18
标题: 大家早上好,今天努力工作
大家早上好,今天努力工作
作者: bugouhen    时间: 2008-07-09 10:06
等着看楼主呢????

估计是脚本的变量有问题吧
要不就是脚本里面的路径写错误 该写绝对的写相对了
结果把执行结果 弄到别的目录里面去了。。。。
作者: coffee_45    时间: 2008-07-09 11:35
原帖由 iask 于 2008-7-8 10:44 发表
看楼主帖子,楼主的添加crontab条目应该压根没有执行,所以我的思路:先解决crontab的问题,然后在查找脚本本身的问题。
1、crontab -e,然后添加:
50 10 * * * cd /usr/sbin/; ./backupmysql
#这里的时间你 ...


iask 看来是明白人,说的很对,赞同!
作者: drog1983    时间: 2008-07-09 12:18
能猜的都讲了,LZ好歹出来讲一下什么情况啊?
作者: kenduest    时间: 2008-07-09 12:49
不用再回了,發問者隔天就沒出現過了,這是普遍 cu 常看到的現象 =_=

一個 crontab 排程問題本來就很單純,為何可以討論成這樣?

--
作者: 沧月    时间: 2008-07-09 17:12
看一下日志吧!
或者手动执行一次,会有提示出来的!!
作者: chenyx    时间: 2008-07-09 17:40
LZ 不见了,鉴定完毕
作者: fmx2001    时间: 2008-07-09 18:47


楼主不见了
作者: dotone    时间: 2008-07-09 23:13
有这种情况?是你配置有问题吧.

原帖由 世界因我而精彩 于 2008-7-8 08:22 发表


2。 如果你使用的是RHEL 5的话,最好重启一下 crond ,否则可能不生效。

作者: tpli    时间: 2008-07-09 23:56
估计楼主已经解决问题了。
作者: fish2shoes    时间: 2008-07-11 08:50
最好把日志也贴出来看看!!!
作者: wstar    时间: 2008-07-11 10:23
如果LZ已经解决问题,请出来说下。
这样让大家的心都哇凉挖凉的啦。
作者: zlymoon    时间: 2008-07-12 10:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: ganer    时间: 2008-07-12 17:23
测试不顶测试不顶测试不顶测试不顶
作者: nhwuxiaojun    时间: 2008-07-14 00:44
标题: 回复 #72 ganer 的帖子
cron 应该是分两部分,一是系统,已是用户定制的。
楼主不应该加到系统中,可以加到用户中。
系统中的格式根用户定制的格式有一些差别,
作者: qxj20031984    时间: 2008-07-14 13:41
标题: 回复 #71 zlymoon 的帖子
本来就没有什么复杂的,当初我在碰到这个问题的时候花了两个小时才解决,as3,as4和redhat9中的crontab用法略有不用,具体的我也记不清了,一般的话,在该脚本加上就行了,有一个好像是需要调用的,不知道楼主是否解决了,要是未解决的话,我在详细叙述一下
作者: dongyi0516    时间: 2008-07-31 11:11
会不会需要mysql的用户名密码
作者: laonanr    时间: 2009-01-13 17:23
我遇到了相同的问题,怎么办。。。。

我可是花了10几个小时才找到这个帖子,居然没结果:em11:
作者: uljling    时间: 2009-01-14 15:07
标题: 给后来的人提个醒吧
是环境变量没带过去,所以把用户的环境变理带过去,有三种方法,我只记得前1种,
mysql用户
crontabe -e
  10 9 * * *  su - mysql -c "/usr/local/mysql/bin/backmysql "
作者: laonanr    时间: 2009-01-15 17:01
楼上大侠,我:
crontab -e
00 17 * * * su - root -c  bin/bash /etc/rc.d/rule
然后
service crond reload
不行啊。。。








欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2