请问crontab运行和手动运行有什么区别?

时间:2021-08-19 03:09:23
请问crontab运行和手动运行有什么区别?

为什么我写的程序手动运行没问题,但crontab运行却有错?

13 个解决方案

#1


我也有一个程序是用pro*c写的连接oracle数据库的程序,手动运行没有问题,但我想用crontab命令使它能定时启动,做测试时,总是出错,总是报登陆oracle用户名密码的错误,操作系统是IBM-6000,aix-unix,请各位高手指教!

#2


可能是在crontab中运行时环境变量设置的问题,查看一下你用了哪个用户的crontab,在该用户的.profile中设置环境变量

#3


也可以在crontab中加一个SHELL程序设置环境变量

#4


up

#5


我在HPUX 
15 * * * * su - oracle -c “/oracle/task.sh”

不知是否有参考作用!

#6


就是自动和手动的差别 :)

对于手动可以执行而写入crontab却不能够运行的问题,多数与用户环境变量设置有关。当然,crontab格式的错误也有少数 :)
 15 * * * * su - oracle -c “/oracle/task.sh” 的写法不错,但是需要root用户来设定crontab定时器。
 15 * * * * . $HOME/.profile /oracle/task.sh 怎么样?将用户的配置文件加入并强制执行,一般都是这么做的。

#7


15 * * * * su - oracle -c “/oracle/task.sh” 
不能设成 oracle用户的 crontab吗?

#8


相对路径和环境变量之类的东西是不一样的

#9


不知搂主的程序是怎么写的!
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。

#10


将/etc/profile和你单独运行时的用户的.profile加
你的crontab的shell中试一试.

#11


就是环境变量设置导致的问题,我曾经也遇到过,只要在crontab 中加上设置环境的SHELL就可以了,当然要在你的任务之前就执行该SHELL。

#12


首先,相应的环境变量是需要设置的,因为crontab启动的命令并不读当前的.profile,因此所有的程序需要的环境变量需要用程序或shell自己去设置,需要注意的一点是假如用shell程序不要去执行,而要用.命令并且和当前执行的程序放在同一行中。其次,看你运行的程序对shell有无特别的要求,如不在命令行中特别指出的话,crontab 启动的程序缺省使用sh程序

#13


问题已解决。不过还是有点迷糊。

程序在运行时生成多个临时文件,而起的临时文件名是相同的,且是在当前目录下生成(用的是相对路径)。不过生成一个后会关闭后再生成。以前都是这样的,也没有问题。后来重新编译后,手动运行没问题。自动运行就报这个临时文件打开错误。后来,我只是把临时文件用绝对路径生成就没问题啦!最让人迷惑的是,为什么以前可以。程序没改重新编译后又不行了???手动可以,自动运行不行???

#1


我也有一个程序是用pro*c写的连接oracle数据库的程序,手动运行没有问题,但我想用crontab命令使它能定时启动,做测试时,总是出错,总是报登陆oracle用户名密码的错误,操作系统是IBM-6000,aix-unix,请各位高手指教!

#2


可能是在crontab中运行时环境变量设置的问题,查看一下你用了哪个用户的crontab,在该用户的.profile中设置环境变量

#3


也可以在crontab中加一个SHELL程序设置环境变量

#4


up

#5


我在HPUX 
15 * * * * su - oracle -c “/oracle/task.sh”

不知是否有参考作用!

#6


就是自动和手动的差别 :)

对于手动可以执行而写入crontab却不能够运行的问题,多数与用户环境变量设置有关。当然,crontab格式的错误也有少数 :)
 15 * * * * su - oracle -c “/oracle/task.sh” 的写法不错,但是需要root用户来设定crontab定时器。
 15 * * * * . $HOME/.profile /oracle/task.sh 怎么样?将用户的配置文件加入并强制执行,一般都是这么做的。

#7


15 * * * * su - oracle -c “/oracle/task.sh” 
不能设成 oracle用户的 crontab吗?

#8


相对路径和环境变量之类的东西是不一样的

#9


不知搂主的程序是怎么写的!
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。

#10


将/etc/profile和你单独运行时的用户的.profile加
你的crontab的shell中试一试.

#11


就是环境变量设置导致的问题,我曾经也遇到过,只要在crontab 中加上设置环境的SHELL就可以了,当然要在你的任务之前就执行该SHELL。

#12


首先,相应的环境变量是需要设置的,因为crontab启动的命令并不读当前的.profile,因此所有的程序需要的环境变量需要用程序或shell自己去设置,需要注意的一点是假如用shell程序不要去执行,而要用.命令并且和当前执行的程序放在同一行中。其次,看你运行的程序对shell有无特别的要求,如不在命令行中特别指出的话,crontab 启动的程序缺省使用sh程序

#13


问题已解决。不过还是有点迷糊。

程序在运行时生成多个临时文件,而起的临时文件名是相同的,且是在当前目录下生成(用的是相对路径)。不过生成一个后会关闭后再生成。以前都是这样的,也没有问题。后来重新编译后,手动运行没问题。自动运行就报这个临时文件打开错误。后来,我只是把临时文件用绝对路径生成就没问题啦!最让人迷惑的是,为什么以前可以。程序没改重新编译后又不行了???手动可以,自动运行不行???