を経由して、私はシェルスクリプトに新しいですし、私のデジタル海のバケツから古いアイテムを削除しますどのスクリプトに取り組んで(スペース)スクリプトの手動作業ではなくcrontabの
スクリプトを手動で実行したときに作業しますが、私が使用したときにエラーを与えていますcrontabの と私は他の同様の質問を見たが、便利
スクリプトではありませんでしたています
#!/bin/bash
/usr/local/bin/s3cmd -c ~/Bucket_Name ls s3://$1 | while read -r line;
do
createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
olderThan=`date -d"-$2" +%s`
#echo $line
#echo $createDate
#echo $olderThan
#echo $1
#echo $2
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk {'print $4'}`
#echo $fileName
if [[ $fileName != "" ]]
then
#printf 'FILE' $fileName
if [[ $fileName == *"sql" ]]
then
/usr/local/bin/s3cmd -c ~/Bucket_Name rm "$fileName"
fi
fi
fi
done;
マニュアルコマンド(作業):
./sqlclear.sh "Bucket_Name" "300 minutes"
のcrontabコマンド:
* * * * * sh /sqldump/sqlclear.sh "Bucket_Name" "300 minutes" >> /var/log/sql-clear.log 2>&1
エラーのCronログ(上からSQL-clear.log):
/sqldump/sqlclear.sh: 13: /sqldump/sqlclear.sh: [[: not found
'のcronに代わりsh''のbash'使用。 bashの ''へすなわちSH/sqldump/sqlclear.sh'/sqldumpあなたはcronの中に 'sh'を使用していると、あなたは' bash'ためシェバングを持っている/ sqlclear.sh' – 123
。 – mathB
'〜/ Bucket_Name' - これはあなたの問題かもしれません。 CrontabはあなたのユーザーではなくSUとしてスクリプトを実行します。スクリプト内のすべてのファイルへのフルパスを提供してください。 – AlexM