为什么我写的程序手动运行没问题,但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”
不知是否有参考作用!
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 怎么样?将用户的配置文件加入并强制执行,一般都是这么做的。
对于手动可以执行而写入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吗?
不能设成 oracle用户的 crontab吗?
#8
相对路径和环境变量之类的东西是不一样的
#9
不知搂主的程序是怎么写的!
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。
#10
将/etc/profile和你单独运行时的用户的.profile加
你的crontab的shell中试一试.
你的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”
不知是否有参考作用!
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 怎么样?将用户的配置文件加入并强制执行,一般都是这么做的。
对于手动可以执行而写入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吗?
不能设成 oracle用户的 crontab吗?
#8
相对路径和环境变量之类的东西是不一样的
#9
不知搂主的程序是怎么写的!
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。
我这边运行这个程序的环境变量中有SID的,程序通过SID去练确定的库,
我怀疑是环境变量的问题。
#10
将/etc/profile和你单独运行时的用户的.profile加
你的crontab的shell中试一试.
你的crontab的shell中试一试.
#11
就是环境变量设置导致的问题,我曾经也遇到过,只要在crontab 中加上设置环境的SHELL就可以了,当然要在你的任务之前就执行该SHELL。
#12
首先,相应的环境变量是需要设置的,因为crontab启动的命令并不读当前的.profile,因此所有的程序需要的环境变量需要用程序或shell自己去设置,需要注意的一点是假如用shell程序不要去执行,而要用.命令并且和当前执行的程序放在同一行中。其次,看你运行的程序对shell有无特别的要求,如不在命令行中特别指出的话,crontab 启动的程序缺省使用sh程序
#13
问题已解决。不过还是有点迷糊。
程序在运行时生成多个临时文件,而起的临时文件名是相同的,且是在当前目录下生成(用的是相对路径)。不过生成一个后会关闭后再生成。以前都是这样的,也没有问题。后来重新编译后,手动运行没问题。自动运行就报这个临时文件打开错误。后来,我只是把临时文件用绝对路径生成就没问题啦!最让人迷惑的是,为什么以前可以。程序没改重新编译后又不行了???手动可以,自动运行不行???
程序在运行时生成多个临时文件,而起的临时文件名是相同的,且是在当前目录下生成(用的是相对路径)。不过生成一个后会关闭后再生成。以前都是这样的,也没有问题。后来重新编译后,手动运行没问题。自动运行就报这个临时文件打开错误。后来,我只是把临时文件用绝对路径生成就没问题啦!最让人迷惑的是,为什么以前可以。程序没改重新编译后又不行了???手动可以,自动运行不行???