免费注册 查看新帖 |

Chinaunix

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

[数值计算] 单独执行脚本可以统计到相关数据,crontab定时执行统计不了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-17 11:59 |只看该作者 |倒序浏览
本帖最后由 Samdy_Chan 于 2014-06-17 12:03 编辑

各位好:
我写了一个sh脚本,统计目前用户的进程数和打开的文件数,单独手工 ./check_ora_backup_limits.sh 方式执行脚本,可以正常统计到数据,但放在crontab 中定时执行,则统计不到数据,统计的值均为0。
脚本内容如下:
[root@SGS-ORA-04 scripts]# cat check_ora_backup_limits.sh
#!/bin/bash
### Author: Chen Hongquan
### Company: Rainbow Tech.

echo "[`date '+%F %T'`]: 开始执行脚本..." >> ${0}.out

v_grid_Snproc=`grep -v "^#" /etc/security/limits.conf | grep -i "grid.*soft.*nproc" | awk '{print $4}'`
v_grid_Snofile=`grep -v "^#" /etc/security/limits.conf | grep -i "grid.*soft.*nofile" | awk '{print $4}'`
v_oracle_Snproc=`grep -v "^#" /etc/security/limits.conf | grep -i "oracle.*soft.*nproc" | awk '{print $4}'`
v_oracle_Snofile=`grep -v "^#" /etc/security/limits.conf | grep -i "oracle.*soft.*nofile" | awk '{print $4}'`

v_grid_ps=`ps -lf -u grid | grep -v UID | wc -l`
v_grid_files=`lsof | awk '{if($3 == "grid") print $0}' | wc -l`
v_oracle_ps=`ps -lf -u oracle | grep -v UID | wc -l`
v_oracle_files=`lsof | awk '{if($3 == "oracle") print $0}' | wc -l`

#sleep 120   ##加上这个,在crontab中定时执行此脚本,也统计不了数值,不加这个sleep,脚本执行时间不到一秒就执行完了,手工执行此脚本需要几秒钟。
echo "v_grid_ps=${v_grid_ps}" >> ${0}.out
echo "v_oracle_files=${v_oracle_files}" >> ${0}.out

if [ $v_grid_ps -ge $v_grid_Snproc ];then
  echo "[`date '+%F %T'`]: grid用户现在的进程数是:${v_grid_ps},设置值是 ${v_grid_Snproc}." >> ${0}.out
fi

if [ $v_grid_files -ge $v_grid_Snofile ];then
  echo "[`date '+%F %T'`]: grid用户现在的打开文件数是:${v_grid_files},设置值是 ${v_grid_Snofile}." >> ${0}.out
fi

if [ $v_oracle_ps -ge $v_oracle_Snproc ];then
  echo "[`date '+%F %T'`]: oracle用户现在的进程数是:${v_oracle_ps},设置值是 ${v_oracle_Snproc}." >> ${0}.out
fi

if [ $v_oracle_files -ge $v_oracle_Snofile ];then
  echo "[`date '+%F %T'`]: oracle用户现在的打开文件数是:${v_oracle_files},设置值是 ${v_oracle_Snofile}." >> ${0}.out
fi

echo "[`date '+%F %T'`]: 脚本执行完成." >> ${0}.out
--------------------------------


crontab 配置如下:
*/2 5-11 * * * /opt/rainbow/scripts/check_ora_backup_limits.sh &
----
.out脚本执行输出日志如下:
[2014-06-17 11:39:02]: 开始执行脚本...
v_grid_ps=60
v_oracle_files=78607
----以上为手动执行脚本的输出

---以下是crontab自动执行输出,v_oracle_files统计不到数据:
[2014-06-17 11:39:10]: 脚本执行完成.
[2014-06-17 11:40:02]: 开始执行脚本...
v_grid_ps=60
v_oracle_files=0  
[2014-06-17 11:42:02]: 脚本执行完成.

---------------
请问这是什么原因?觉得shell脚本中,觉得如果执行比较久的命令,在crontab中自动执行时,不会等待命令执行完,直接向下执行的,加了sleep xxxx睡眠命令也不行,但单独手工执行就可以,请问这是什么原因,应怎么处理?谢谢!

论坛徽章:
0
2 [报告]
发表于 2014-06-17 12:31 |只看该作者
@Samdy_Chan


根据以前的经验,多数是环境变量引起的。

完善一下你的脚本,记录下你的命令执行过程,计划任务完成后,请查看/tmp/1.out结果。
  1. sh -x YRCOMMAND > /tmp/1.out 2>&1&
复制代码
这类问题,通过在计划任务脚本第一行中加入此命令,有可能解决问题。
  1. source /etc/profile
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-06-17 12:41 |只看该作者
回复 2# todayhero


    1. 试试导入用户环境
  1. . ~/.bash_profile
复制代码
2.使用绝对路径

论坛徽章:
0
4 [报告]
发表于 2014-06-17 14:34 |只看该作者
回复 2# todayhero

终于找到问题所在了:
++ lsof
++ awk '{if($3 == "oracle") print $0}'
/opt/rainbow/scripts/check_ora_backup_limits.sh: line 17: lsof: command not found
----
感谢各位 !!!!


   

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
5 [报告]
发表于 2014-06-17 15:34 |只看该作者


此类问题绵绵不绝啊。

论坛徽章:
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
6 [报告]
发表于 2014-06-17 17:51 |只看该作者
推荐阅读

crontab常见问题
http://bbs.chinaunix.net/viewthread.php?tid=674903#pid4559830

crontab与环境变量,以及应该注意的一些问题
http://bbs.chinaunix.net/thread-2291457-1-1.html

论坛徽章:
0
7 [报告]
发表于 2014-06-18 19:02 |只看该作者
一看到crontab,我就想回复“绝对路径”……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP