私たちは毎回午後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