cronはbashジョブを実行しません

cronはbashジョブを実行しません

だから本当に奇妙ですが、たぶん単純なものを見ました。しかし、私が理解するほど単純ではありません。問題なく実行できる単純な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

これはあなたのコードに基づいていくつかのおおよその推測です。

  1. ファイルはどのディレクトリにありますか"$HOLDER"*.bz2cdスクリプトにコマンドは表示されません。たぶんスクリプト間違った目次。
  2. $HOLDER変数が定義されていません。
  3. sync-pocksあなたの道に?

おすすめ記事