我们希望每次在晚上 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
不,你的例子不会起作用。您必须将整个命令写在一行上。考虑编写一个脚本并从 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