2017-10-09 28 views
0

リモートサーバーからファイルをコピーし、同じファイルを別の形式に変換するシェルスクリプトを作成しました。変換後、私はsedコマンドを使用してファイルを編集します。このスクリプトは手動で実行すると正常に実行されますが、crontabで実行されると失敗します。シェルスクリプトは手動で実行されますが、crontabで失敗します

crontabエントリは次のとおりです。 */1 * * * * /script/testshell.sh以下

されたシェルスクリプトコード:

#!/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 [email protected] '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 [email protected]:/$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

これはひどい考えです。スクリプトの最初にPATHを正しく設定してください。 –

答えて

0

cronで動作しないものは、出力にはcronのエラーがありますか?

しようとするいくつかのこと:あなたのスクリプトはそれからセットものは、例えばcrontabコマンドでそれを含める必要がありますので、もし

のcronは、デフォルトでは、あなたのプロファイルを実行しません

「./.bash_profile;/script/testshell.sh」

その既存のファイルをテストするために使用さが、私は、どこにでもセット$パスを見ることができない、あなたはウォンので、どこかに手動で設定されていますcronから設定しないでください。

あなたのスクリプトとファイルの中には、あなたのホームフォルダになるcronの現在のディレクトリ(./)に指定されているものがあります。そうであるか、スクリプトのディレクトリを変更するか、パスを使用する必要があります?

希望すること

+0

今、クロムジョブは完璧に動作しています。私はどこにでも絶対パスを与えました。 –

関連する問題