免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4879 | 回复: 16
打印 上一主题 下一主题

为什么CRONTAB 执行SHELL脚本,有的可以有的就不行呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-30 20:14 |只看该作者 |倒序浏览
本帖最后由 Shrek618 于 2010-05-31 22:11 编辑

例如,我用CRONTAB 执行两个shell脚本,一个叫test1.sh,另一个叫test2.sh

test1.sh 内容如下:
#!/bin/bash

echo "testtest" >> /root/first.txt


test2.sh 内容:

#!/bin/bash

pidlist=`/bin/ps -ef|/bin/grep xclock|/bin/grep $USER|/bin/grep -v "grep"|/usr/bin/awk '{print $2}'`
#ps -u $USER|grep "java"|grep -v "grep"

if [ "$pidlist" = "" ]
then
#/usr/bin/xclock
echo "no xclock pid alive, new clock started" >> /home/two.txt
/usr/bin/xclock
else
for pid in ${pidlist}
{
kill -9 $pid
#echo "KILL $pid:"
#echo "xclock kill success"

}
fi


Crontab

*/1 * * * *  /home/test1.sh
*/1 * * * *  /home/test2.sh

为什么简单的test1就可以运行工作正常,而test2.sh 就不行。test2 直接在/home 下运行 ./test2.sh 就没有问题
我知道test2有ps, 又if 条件。是太复杂了,还是有别的运行方法呢。。。请指教。。。多谢

更新:

上面从新测试,添加了所有全路径给脚本里用到的命令,而且ECHO 输出也不用出现在屏幕里,是输出到txt 文件。。。这些都没有问题,现在用crontab...运行脚本。。就是/usr/bin/xclock 启动不了。。。这是什么原因?

论坛徽章:
0
2 [报告]
发表于 2010-05-30 21:00 |只看该作者
test2.sh直接跑报错不?

论坛徽章:
0
3 [报告]
发表于 2010-05-30 21:18 |只看该作者
直接在/home 下运行 ./test2.sh 一点问题都没有

论坛徽章:
0
4 [报告]
发表于 2010-05-30 21:20 |只看该作者
test2.sh直接跑报错不?
lkk2003rty 发表于 2010-05-30 21:00



    直接在/home 下运行 ./test2.sh 一点问题都没有

论坛徽章:
0
5 [报告]
发表于 2010-05-30 23:24 |只看该作者
建议用crontab调度时追加出一个log,看报什么错

论坛徽章:
0
6 [报告]
发表于 2010-05-31 08:41 |只看该作者
crontab filename 执行就可以看到错误在哪了

论坛徽章:
0
7 [报告]
发表于 2010-05-31 09:13 |只看该作者
crontab下运行shell脚本时加上一句试试
  1. source /etc/init.d/functions
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2010-05-31 11:48 |只看该作者
这样行吗?
  1. #!/bin/bash
  2. pidlist=`/usr/bin/ps -ef|/usr/bin/grep xclock|/usr/bin/grep $USER|/usr/bin/grep -v "/usr/bin/grep"|/usr/bin/awk '{print $2}'`
  3. if [ "$pidlist" = "" ]; then
  4.     echo "no xclock pid alive, new clock started"
  5.     /usr/bin/xclock
  6. else
  7.     for pid in ${pidlist}; do
  8.     {
  9.         /usr/bin/kill -9 $pid
  10.         echo "KILL $pid:"
  11.         echo "xclock kill success"
  12.     }
  13.     done
  14. fi
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-05-31 19:06 |只看该作者
crontab filename 执行就可以看到错误在哪了
liang3391 发表于 2010-05-31 08:41



    你指的是 crontab /home/test2.sh 这样吗?  这个我试了。。。都有错误。。。

论坛徽章:
0
10 [报告]
发表于 2010-05-31 19:26 |只看该作者
这样行吗?
Shell_HAT 发表于 2010-05-31 11:48



    这个也不行。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP