脚本手动运行,在Cron中不起作用

时间:2018-11-21 12:16:25

标签: shell sqlcmd

我可以手动运行脚本,所有命令都可以正常运行,当我在cron中运行脚本时,它不起作用并抛出错误。

脚本

#! /bin/sh -x
PATH=/bin:/sbin:/usr/bin:/usr/sbin

/bin/sh /etc/profile

increment=0

if [ $increment != 0 ]
then

sqlcmd -h-1 -S PRD-DB-02.ics.com -U sa -P 'SQL h@$ N0 =' -d ge -i input.sql -W -w 1024 -s"," >> output.csv

else

echo "header printed!"

sqlcmd -S PRD-DB-02.ics.com -U sa -P 'SQL h@$ N0 =' -d ge -i input.sql -W -w 1024 -s"," >> output.csv

fi

increment+=1

sed -e 's/-,//g;s/-//g;s/,,//g;/^$/d' output.csv > Uploadstatus.csv

rm -rf output.csv

Cron输入

2 * * * * /script.sh

错误:

+ PATH=/bin:/sbin:/usr/bin:/usr/sbin
+ /bin/sh /etc/profile
+ increment=0
+ '[' 0 '!=' 0 ']'
+ echo 'header printed!'
header printed!
+ sqlcmd -S PRD-DB-02.ics.com -U sa -P 'SQL h@$ N0 =' -d ge -i input.sql -W -w 1024 -s,
/script.sh: line 16: **sqlcmd: command not found**
+ increment+=1
+ sed -e 's/-,//g;s/-//g;s/,,//g;/^$/d' output.csv
+ rm -rf output.csv

2 个答案:

答案 0 :(得分:1)

以下是线索:/script.sh: line 16: **sqlcmd: command not found**

在sqlcmd前面加上路径,您应该可以。

例如:

/opt/mssql-tools/bin/sqlcmd -h-1 -S ...

您可以使用以下方法找到sqlcmd副本的路径:

which sqlcmd

答案 1 :(得分:0)

script.sh 文件应具有设置cron选项卡的用户的执行许可权。尝试以下,

  

chmod 755 script.sh