我编写了一个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。
答案 0 :(得分:0)
cron没有什么工作,输出是否有来自cron的错误?
要尝试的一些事项:
cron默认情况下不运行您的配置文件,因此如果您的脚本需要任何设置,请将其包含在crontab命令中,例如:
&#34 ;. ./ .bash_profile中; /script/testshell.sh"
我无法在任何地方看到$ path设置,虽然它用于测试现有的文件,你是否在某处手动设置,因此不能从cron设置?。
您的某些脚本和文件被指定为当前目录(./),来自将成为您的主文件夹的cron,是正确的还是您需要更改脚本中的目录或使用它们的路径?
希望有所帮助