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

아니요, 귀하의 예는 작동하지 않습니다. 전체 명령을 한 줄에 작성해야 합니다. 스크립트를 작성하고 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

관련 정보