免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3415 | 回复: 6

[系统管理] crontab下的shell脚本执行make命令出错 [复制链接]

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2015-01-19 12:27 |显示全部楼层
写了个shell脚本,里面需要执行make命令,直接手动执行脚本,可以正常编译,但是把脚本放到crontable下,make
出错,执行到第一条编译命令后就停止运行,没看到任何Error信息,$?的值为2。不知道为什么,有人遇到过吗?郁闷ing,
求帮忙。

论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2015-01-19 12:42 |显示全部楼层
crontab下环境变量与正常登陆时不一样的

论坛徽章:
0
发表于 2015-01-19 13:20 |显示全部楼层
crontab时不运行时,常见原因:
1. shell脚本没有执行权限
比如,用 crontab 调用 a.sh. 但是 a.sh 没有执行权限

2. 没有加载环境变量
自己测试没有问题. 但是放到crontab里会报错. 原因: 用户登录系统时, 自动执行了 .bash_profile ( or .profile),加载了相应环境变量.  crontab 调用脚本时,没有加入相应环境变量. 导致程序不能正常运行
解决方法: 在脚本第一行, 先执行: source xxx/.bash_profile   #注: xxx 为用户的 HOME目录

3. 路径不对.
使用绝对路径,不要用相对路径.

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
发表于 2015-01-19 16:09 |显示全部楼层
应该是路径不对   在make之前  cd到那个目录下

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2015-01-19 18:14 |显示全部楼层
路径肯定是对的,我打印出来过,我这脚本要更新多个server的代码,svn up后,再执行make,其他server的代码都能正常编译通过,但是就只有一个server会出现make,就执行了第一行make指令,就挂了
0   8   *    *   1   cd /home/xxx/testdir/Taiwan_version/SVN_UPDATE2Taiwan && chmod +x start.sh && source /home/xxx/.profile && ./start.sh >/dev/null 2>&1
我也加上了soure  /home/xxx/.profile, 不止在start.sh中,子shell中也加了,但还是不行。 然后我改成了 /home/xxx/.bashrc也没用。晕死!

论坛徽章:
1
水瓶座
日期:2015-01-24 08:46:39
发表于 2015-01-20 02:41 |显示全部楼层
1.查看/var/log/cron 日志内容 看看错误出现在哪里.
2.建议定时任务里面 不要写那么多
0   8   *    *   1   cd /home/xxx/testdir/Taiwan_version/SVN_UPDATE2Taiwan && /bin/sh start.sh >/dev/null 2>&1

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2015-01-20 08:58 |显示全部楼层
总算解决了,原来我的系统,在执行crontab任务后,日志是输出到 /var/mail/xxxx(用户名)文件里的,查看得知clang++ command Not Found, 我把Makefile文件改了下,改成 g++就Ok了,谢谢大家了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP