我写了一个脚本,配置过crontab后,死活不执行,从cronab -l里粘到命令行上回车运行正常。
配置为
10 6 * * * /home/username/clean/clean.sh
/home/username/clean/clean.sh中的内容为:
##detail
cd ~username/bak/
find . -name 'detail*' -mtime +10 -type f -exec gzip {} \;
mv *.gz /data/detail
该crontab文件里的其他配置都可以执行。
什么原因?
Janson-Chen 回复于:2004-02-25 11:15:02 |
你先把你得shell,修改成一个echo,看看能不能正常显示? |
hpux 回复于:2004-02-25 11:15:32 |
你确认没执行么?在clean.sh里加一句:
echo "Run OK" >/run.result 然后看看run.result有没有。 问题可能出在“cd ~username/bak/”。 |
xanadus 回复于:2004-02-25 12:36:58 |
:lol: i think u can do like this:
10 6 * * * sh /home/username/clean/clean.sh and u can check ur UserID's mail |
freekiss 回复于:2004-02-25 14:38:54 |
[quote:422be6f806="xanadus"]:lol: i think u can do like this:
10 6 * * * sh /home/username/clean/clean.sh and u can check ur UserID's mail[/quote:422be6f806] 同意,关于cron不能执行成功的原因在该用户的mail里面有说明的。 |
rosaney 回复于:2004-02-25 15:06:07 |
唐贤勇,你说错了 |
welcome008 回复于:2004-02-25 17:56:06 |
sorry,检查了一下,crontab是执行了,但是find语句没有找到要找的文件。也就没有进行压缩。但是直接执行该find语句就可以找到要压缩的文件进行压缩。怪了。 |
hpux 回复于:2004-02-25 18:14:05 |
再重申一遍:
问题可能出在 “cd ~username/bak/”。 |
朽木可雕 回复于:2004-02-26 09:34:53 |
[quote:6083fa0f28="hpux"]再重申一遍:
问题可能出在 “cd ~username/bak/”。[/quote:6083fa0f28] 我觉得也是 |
rat326 回复于:2004-02-26 12:10:30 |
请将“~username/bak/”改成绝对路径试试。 |
沉寂 回复于:2004-02-26 16:30:28 |
crontab里面支持的环境变量很少的,~username是肯定不支持的,必须要用绝对路径。 |
Janson-Chen 回复于:2004-02-26 17:15:07 |
环境变量的解析,跟你这个运行脚本的shell有关。
#/sbin/ksh 加在第一行。 |
welcome008 回复于:2004-02-27 16:03:23 |
/sbin下没有ksh |
hpux 回复于:2004-02-27 16:07:57 |
[quote:8608d9956c="Janson-Chen"]环境变量的解析,跟你这个运行脚本的shell有关。
#/sbin/ksh 加在第一行。[/quote:8608d9956c] 1、默认就是/usr/bin/sh,ksh基本一样; 2、ksh位置在/usr/bin/ksh; 3、即使要加,第一行也是: #!/usr/bin/ksh 个人意见,关键还是变量替换上出问题了。 |
welcome008 回复于:2004-02-27 16:18:09 |
不是变量替换,我已经改成绝对路径了。好像是find的问题
现在的内容是 #!/usr/bin/ksh ##detail echo "run start" > result.txt cd /home/username/bak/163 echo "run start1" > result.txt find . -name 'detail*' -mtime +8 -type f -exec gzip {} \; echo "run start2" >> result.txt mv *.gz /data2/detailbak/163 echo "run continue" >> result.txt 结果在当前目录下生成result.txt内容是run start 在/home/username/bak/163下生成result.txt内容是 run start1 run start2 run continue 但是没有压缩,不过我把find这行单独执行是可以找到文件并进行压缩的。 |
hpux 回复于:2004-02-27 20:02:37 |
OK,这样应该可以了:
find /home/username/bak/163 -name 'detail*' -mtime 8 -type f -exec gzip {}\; |
welcome008 回复于:2004-02-28 14:02:40 |
仍是不行。
问题就是在find这一句上。 |
welcome008 回复于:2004-03-01 10:56:10 |
在顶一下 |
welcome008 回复于:2004-03-01 17:50:51 |
没有人可以帮忙解决么? |
welcome008 回复于:2004-03-02 12:11:12 |
各位老大,在自己的机器上做个测试,看能不能帮忙解决呀。搞了快两周了,仍然没有解决!垂头丧气! |
hpux 回复于:2004-03-02 12:59:30 |
你把find的条件说明一下,我试试。 |
welcome008 回复于:2004-03-02 17:38:16 |
find dir -name 'detail*' -mtype +10 gzip {} \; |
welcome008 回复于:2004-03-02 17:38:37 |
find dir -name 'detail*' -mtype +10 -type f gzip {} \; |
welcome008 回复于:2004-03-02 22:10:29 |
这一会人挺多的。大家帮忙呀,为何
find dir -name 'detail*' -mtype +10 -type f gzip {} \; 这一句在crontab里执行不成功,也不报错。 但是直接运行就能找到相应的文件并压缩? 大家在自己的机器上试一下。给个答案吧。或者给个解决办法也行。就是要找到某个目录下的n天没有修改的文件并压缩。如和做? |
pcbird 回复于:2004-03-02 23:54:31 |
是不是用户权限问题呀?
试试将 10 6 * * * /home/username/clean/clean.sh 改成 10 6 * * * su -#### -c "/home/username/clean/clean.sh" :em11: |
pcbird 回复于:2004-03-03 00:08:13 |
[color=red:3ac9cf65cf]看看下面的文章,也许你就明白了:[/color:3ac9cf65cf]
[size=24:3ac9cf65cf][url]http://bbs.caoyuan.net/viewtopic.php?t=112[/url][/size:3ac9cf65cf] |
welcome008 回复于:2004-03-03 09:59:42 |
1,用户权限没问题:
因为run_result已经生成,而且它的用户和组是和'det*'一样的。而且直接运行改脚本就可以执行。 2,我看了http://bbs.caoyuan.net/viewtopic.php?t=112这个页面,但仍然解决不了问题。 我的问题不是crontab的用法问题,而是find在crontab里执行不成功。 仍然谢谢两位热心帮忙。 仍然希望大家在自己的机器上试一下。 |
blueaut 回复于:2004-08-10 17:36:20 |
把find的完整路径写上试试 |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/