crontab 在unix 没有执行。

Quote: 引用 2 楼 jdwq33 的回复:

Quote: 引用 1 楼 mp777323 的回复:

03 * * * * sh /opt/pro_some.sh
我试过了,这样也不行,难道是我的系统出问题了吗?

看下邮件, /var/spool/mail/root
会有执行报告的


那个root文件里面没有打印任何东西,我等了这么久,一点东西都没有。

unix issu1 :

 使用命令:mail 也可以查看

OSW 没有执行,检查 /var/spool/mail/root 文件,发现cron 模式是从根目录开始执行,因此无法发现执行目录。

sh修改如下:

  $SCRIPTLOC/OSWatcher.sh 30 360

修改为

cd $SCRIPTLOC
$SCRIPTLOC/OSWatcher.sh 30 360

 另外加入profile 选项:

cd $HOME
OSNAME=`uname`
case $OSNAME in
SunOS) OSNAME=1 ;;
HP-UX) OSNAME=2 ;;
AIX) OSNAME=3 ;;
Linux) OSNAME=4 ;;
esac
if [ $OSNAME -eq 4 ]
then
. ./.bash_profile
else
. ./.profile
fi

linux issue 2:

crontab执行后日志文件路径

/var/log/cron

如crontab 没有成功,检测crontab 服务是否启动,

/etc/init.d/crond status 

/etc/init.d/crond restart

cron 是系统守护进程,位置:
/etc/init.d/crond
参数:
start
stop
restart
reload

crontab执行后日志文件路径

/var/log/cron

##issue 3

感谢

Linux定时任务,执行shell文件失败问题&&mailed 73 bytes of output but got status 0x004b#012报错解决

加入调试语句   2>&1


为了找到错误的具体信息,我把语句改成了

mysqldump -uxxx -pxxx dbname > backup.sql >xxx.log 2>&1

###########sample :

31 16 * * * sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log

unix AIX: 使用cron fork 出一个OSW进程

[root@nbutest1:/]# ps -ef|grep OSW
root 11862018 19202296 0 Nov 30 - 0:32 /bin/sh ./OSWatcherFM.sh 360 /oradata/oswbb/oswbb/archive 《— 第三级子进程
root 12910804 21889042 0 16:02:00 pts/5 0:00 grep OSW
root 19202296 29818988 0 Nov 30 - 1:14 /bin/sh /oradata/oswbb/oswbb/OSWatcher.sh 30 360 <- 第二级子进程
root 29818988 6815964 0 Nov 30 - 0:00 sh /oradata/oswbb/oswbb/OSW_init.sh <- 第一级子进程
[root@nbutest1:/]# ps -ef|grep 6815964
root 6815964 1 0 Sep 15 - 0:53 /usr/sbin/cron <- 这是父进程,父进程是cron
root 29818988 6815964 0 Nov 30 - 0:00 sh /oradata/oswbb/oswbb/OSW_init.sh
root 32833782 21889042 0 16:03:07 pts/5 0:00 grep 6815964

linux: 使用cron fork 出3个OWS进程


[root@nbutest:/orabak/oswbb/oswbb]# more /tmp/2.log
root 10127 10126 0 16:26 ? 00:00:00 /bin/sh -c sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log <- 第一级子进程
root 10128 10127 0 16:26 ? 00:00:00 sh /orabak/oswbb/oswbb/OSW_init.sh <- 第二级子进程
root 10136 10128 0 16:26 ? 00:00:00 sh /orabak/oswbb/oswbb/OSW_init.sh <- 第三级子进程


[root@nbutest:/orabak/oswbb/oswbb]# ps -ef|grep 10126
root 10126 5076 0 16:26 ? 00:00:00 crond <- 这是父进程,父进程是cron


unix HP-UNIX 使用cron fork 出2个OSW进程

[root@nbutest2:/]# more /tmp/2.log
root 20751 6990 2 16:31:00 ? 0:00 sh -c sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log
root 20752 20751 0 16:31:00 ? 0:00 sh /orabak/oswbb/oswbb/OSW_init.sh

###issue 5

感谢

cx_Oracle库导入失败引起crontab中python程序运行失败,并且无错误提示

今天遇到一个问题:

       一个python脚本命令行运行时很正常,放到crontab中就无法工作,日志也没有记录,找了半天,终于发现问题所在。

在脚本最上方,程序如下:

  1.  
    #!/usr/local/bin python
  2.  
    # coding=utf8
  3.  
    import cx_Oracle
  4.  
    import sys
  5.  
    import time

注意,这里

import cx_Oracle  

cx_Oracle需要依赖oracle的ORACLE_HOME环境。我发现ORACLE_HOME定义在/etc/profile下,在这里修改的内容是对所有用户起作用的,但是对crontab是不起作用的。以下是各个文件的一个作用域:

(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(5)~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

解决办法:

30 7 * * *  . /etc/profile; /usr/local/bin/python2.7 /data/storeDataToOracleDB.py  &  

这里加上了

. /etc/profile;  

ok,问题解决。

原文地址:https://www.cnblogs.com/feiyun8616/p/7884160.html