crontabエントリに基づいて実行するスクリプトを取得しようとしています。私のスクリプトは端末で正しく実行されますが、cronエントリに基づいて自動的には実行されません。スクリプトは、時間ごとに/testexport1ディレクトリに空のファイルを作成します。
次のようにcrontab -eを使用してcrontabを編集します。
30 * * * * /bin/bash/ /testexport1/./createfilescript.sh
スクリプト自体は次のとおりです。
[root@centostest testexport1]# cat createfilescript.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/testexport1
today="$( date +"%Y%m%d" )"
number=0
while test -e "$today$suffix.txt"; do
(( ++number ))
suffix="$( printf -- '-%02d' "$number" )"
done
fname="$today$suffix.txt"
printf 'Will use "%s" as filename\n' "$fname"
touch "$fname"
スクリプトを実行する場所を指定するために、スクリプトの上部にPATHセクションを追加しました(私が読んだ他の記事に基づいています)。
このcrontabエントリがスクリプトを実行していないような理由をご存知ですか?私はこれが簡単な修正だと確信していますが、今は円を描いています。
ベストアンサー1
/bin/bash/
crontabはスクリプトが見つからないため、スクリプトを実行していません。これは、(/bin/bash
最後に見つからない内容を確認する)またはシステム上の正しいパスに変更する必要があります。/
bash
また、スクリプトで使用されているすべてのユーティリティが実際に$PATH
設定で見つかったことを確認してください。より一般的に調整パスを上書きするのではなく、パスを上書きすることをお勧めします。システムパスには、touch
同様のコンテンツを見つけることができるディレクトリが含まれることが多いからです。