shell脚本手动运行,但在crontab上失败

时间:2017-10-09 07:25:55

标签: shell sed

我编写了一个shell脚本来从远程服务器复制文件并将同一文件转换为另一种格式。转换后,我将使用sed命令编辑该文件。该脚本在手动执行时成功运行,但在通过crontab执行时失败。

Crontab条目是: * / 1 * * * * /script/testshell.sh

以下是shell脚本代码:

 #!/bin/bash

 file="/script/test_data.csv" if [ -f "$file" ] then
         echo " file is present in the local machine  " else
         echo " file is not present in the local machine "
         echo " checking the file is present in  the remote server  "

         ssh user@IP 'if [ -f /$path ]; then echo File found ; else echo File not found; fi' fi

 if [ -f "$file"] then
         rm -f test_data.csv fi

 scp -i /server.pem  user@IP:/$path


 file="/script/test_data.csv" if [ -f "$file" ] then
         echo "$file found." else
         echo "$file not found." fi

 if [ -f "$file" ] then echo " converting csv to json format ....." fi

 ./csvjson.sh input.csv  output.json


 sed  -e '/^$/d'  -e  's/.*/&,/; 1 i\[' ./output.json |  sed ' $ a \]'
 hello.json

手动运行脚本后,它可以正常运行。但不适用于crontab。

1 个答案:

答案 0 :(得分:0)

cron没有什么工作,输出是否有来自cron的错误?

要尝试的一些事项:

cron默认情况下不运行您的配置文件,因此如果您的脚本需要任何设置,请将其包含在crontab命令中,例如:

&#34 ;. ./ .bash_profile中; /script/testshell.sh"

我无法在任何地方看到$ path设置,虽然它用于测试现有的文件,你是否在某处手动设置,因此不能从cron设置?。

您的某些脚本和文件被指定为当前目录(./),来自将成为您的主文件夹的cron,是正确的还是您需要更改脚本中的目录或使用它们的路径?

希望有所帮助