우리는 매번 오후 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