crontab 是否按照 shell 的预期接受多行命令?

crontab 是否按照 shell 的预期接受多行命令?

我们希望每次在晚上 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

相关内容