私の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
可能シェル関数の使い方です。
(私はそれを試していません。うまくいけば驚きます)。しかし、それがうまくいっても、私はそれをお勧めしません。