cronjob 中未分配变量值
variable value not assigned in cronjob
我有一个代码,当手动执行时(通过这个命令,即 ./script.sh )将查询结果分配给一个变量,但是当它通过 crontab 自动执行时,查询结果不会分配给变量。
请在下面找到代码:
diff=0;
diff=`sqlplus -s user/pswd@leadb2 << END
set pagesize 0 feedback off verify off heading off echo off;
SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS') ) * 24 * 60
difference_in_minutes
from dual;
END`
echo "Difference is $diff ">>/backup2/softdev/settlement/p.txt
这通常是因为您的 cron 不知道您在 .profile 中初始化的变量。当您通过 cron 运行 此脚本时,甚至 sqlplus 的路径也不可用。因此,要解决此问题,请将 cron 作业设置为以下格式,它会正常工作。
00 * * * * . ~/.profile && /home/absolut_path_to_script.sh > /home/log_file_path.txt
我已经完成了,因为 cron 不知道 SQLPlus 的路径,所以它不会在将路径提供给 cron 后立即执行查询,作业响应完美
解决方法如下:
ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1
导出 ORACLE_HOME
今日日期=date +%Y%m%d%H%M%S
差异=0;
timeRightNow='20170519180000'
timeofffile='20170519175500'
差异=$ORACLE_HOME/bin/sqlplus -s user/paswd@leadb2 << END
set pagesize 0 feedback off verify off heading off echo off;
SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS') ) * 24 * 60
difference_in_minutes
from dual;
END
echo "Difference is $diff ">>/backup2/softdev/settlement/p.txt
我有一个代码,当手动执行时(通过这个命令,即 ./script.sh )将查询结果分配给一个变量,但是当它通过 crontab 自动执行时,查询结果不会分配给变量。
请在下面找到代码:
diff=0;
diff=`sqlplus -s user/pswd@leadb2 << END
set pagesize 0 feedback off verify off heading off echo off;
SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS') ) * 24 * 60
difference_in_minutes
from dual;
END`
echo "Difference is $diff ">>/backup2/softdev/settlement/p.txt
这通常是因为您的 cron 不知道您在 .profile 中初始化的变量。当您通过 cron 运行 此脚本时,甚至 sqlplus 的路径也不可用。因此,要解决此问题,请将 cron 作业设置为以下格式,它会正常工作。
00 * * * * . ~/.profile && /home/absolut_path_to_script.sh > /home/log_file_path.txt
我已经完成了,因为 cron 不知道 SQLPlus 的路径,所以它不会在将路径提供给 cron 后立即执行查询,作业响应完美
解决方法如下:
ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1 导出 ORACLE_HOME
今日日期=date +%Y%m%d%H%M%S
差异=0;
timeRightNow='20170519180000' timeofffile='20170519175500'
差异=$ORACLE_HOME/bin/sqlplus -s user/paswd@leadb2 << END
set pagesize 0 feedback off verify off heading off echo off;
SELECT (to_Date($timeRightNow,'YYYYMMDDHH24MISS') - to_date($timeoffile,'YYYYMMDDHH24MISS') ) * 24 * 60
difference_in_minutes
from dual;
END
echo "Difference is $diff ">>/backup2/softdev/settlement/p.txt