我可以手动运行脚本,所有命令都可以正常运行,当我在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
答案 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