cronjobでbash関数コマンドが見つかりません

cronjobでbash関数コマンドが見つかりません

私のcrontabには次のbash機能が設定され、私のタスクに適用されました。ログにタイムスタンプを追加することを示します。

adddate() {
    while IFS= read -r line; do
        printf '%s %s\n' "$(date)" "$line";
    done
}

30 06 * * * root $binPath/zsh/test.zsh | adddate 1>>$logPath/log.csv 2>>$errorLogPath/error.txt

error.txt しかし、bash機能が正しく機能していないのを見てください。

/bin/bash: adddate: command not found

これらすべての根本的な原因は何ですか?

誰でもコメントがあれば教えてください。

ありがとう

ベストアンサー1

Cronはシェル機能を許可しません。次のスクリプトを作成します。

#!/bin/bash
adddate() {
    while IFS= read -r line; do
        printf '%s %s\n' "$(date)" "$line";
    done
}
$binPath/zsh/test.zsh | adddate 1>>$logPath/log.csv 2>>$errorLogPath/error.txt

そしてcronに入れてください。

$binPath(この問題を解決するためにhereを使用しているとします$logPath。そうでない場合は、スクリプトで設定する必要があります。)

SHELL=/bin/bashあなたのcrontab 可能シェル関数の使い方です。
(私はそれを試していません。うまくいけば驚きます)。しかし、それがうまくいっても、私はそれをお勧めしません。

おすすめ記事