crontabはシェルが期待どおりに複数行のコマンドを受け入れますか?

crontabはシェルが期待どおりに複数行のコマンドを受け入れますか?

私たちは毎回午後00:00に次の行を実行したいと思います。

コマンドに複数の行がありますが、その行はcrontabまたはcronジョブで有効ですか?

0 0 * * * find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \)     -printf ' %T@ %b :%p\0' |    sort -zk 1,1 -k2,2rn |    gawk -v RS='\0' -v ORS='\0' '
     {du += 512 * $3}
     du > 10 * (2^30) && $1 == "WSP" {
       sub("[^:]*:", ""); print
     }' | xargs -r0  rm -f

ベストアンサー1

いいえ、あなたの例はうまくいきません。コマンド全体を1行に書き込む必要があります。スクリプトを作成してcronから呼び出すことを検討してください。

たとえば、

$ cat mycron.bash
#!/bin/bash
find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \) \
     -printf ' %T@ %b :%p\0' | \
     sort -zk 1,1 -k2,2rn | \
     gawk -v RS='\0' -v ORS='\0' '
     {du += 512 * $3}
     du > 10 * (2^30) && $1 == "WSP" {
       sub("[^:]*:", ""); print
     }' | xargs -r0  rm -f

その後、crontabエントリは次のようになります。

0 0 * * * mycron.bash

おすすめ記事