だから本当に奇妙ですが、たぶん単純なものを見ました。しかし、私が理解するほど単純ではありません。問題なく実行できる単純なbashスクリプトを作成しましたが、クローンジョブをスケジュールしてスクリプトを実行しないと問題が発生します。
スクリプトは実行可能で、エラー/問題なしで手動で実行できます。次のコマンドを使用してcrontabに追加してみました。
# crontab -l
30 * * * * /usr/scripts/test_script.sh
また、以下にファイルを追加し/etc/cron.d/test_script
てパスとシェルを指定してみました。
# cat /etc/cron.d/tes_script
PATH=/bin:/usr/bin:/sbin:/usr/sbin
SHELL=/bin/bash
30 * * * * /usr/scripts/test_script.sh
tailf /var/log/syslog
ログを確認し、以下を見ようとしました。
2月7日 10:53:01 CRON[29203]: (ルート) CMD (/usr/scripts/test_script.sh)
したがって、実行しているように見えるかもしれませんが、実際にはそうではありません(プログラムのWebインターフェースで表示される更新プロセスをトリガーします)。
私が逃した部分がありますか?これはスクリプトです。
#!/bin/bash
DIST="ubuntu"
LOGS="/var/logs/test_script.log"
RECIPIENTS="[email protected]"
declare -a POCKET=("release" "security" "updates")
xenial()
{
SERIES="xenial"
for pocket in "${POCKET[@]}"
do
bzip2 -d "$HOLDER"*.bz2
sync-pocks "$pocket" "$SERIES" "$DIST"
sleep 5m
done
return 0
}
precise()
{
SERIES="precise"
for pocket in "${POCKET[@]}"
do
bzip2 -d "$HOLDER"*.bz2
sync-pocks "$pocket" "$SERIES" "$DIST"
sleep 5m
done
return 0
}
xenial &> "$LOGS" &&
precise &>> "$LOGS" ||
cat "$LOGS" | mailx -s "Sync" "$RECIPIENTS"
スクリプトに構文の問題がある可能性がありますか?それでは、手動で実行しても問題がないのはなぜですか?
ベストアンサー1
これはあなたのコードに基づいていくつかのおおよその推測です。
- ファイルはどのディレクトリにありますか
"$HOLDER"*.bz2
?cd
スクリプトにコマンドは表示されません。たぶんスクリプト間違った目次。 $HOLDER
変数が定義されていません。sync-pocks
あなたの道に?