crontab 내부의 bash 명령이 작동하지 않습니다


1

매분마다 실행되고 일부 디렉토리와 파일을 제거하는 crontab이 있습니다.

내 cron은 다음과 같습니다

* * * * * bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1

내 로그에서 명령이 실행되는 것을 볼 수 있습니다

CRON[57937]: (kahoadmin) CMD (bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1)

이것은 내 스크립트 파일입니다

#!/bin/bash

ROOTDIR="/var/www/html/Database/Backup/Backups/*" 
sudo find $ROOTDIR -mtime +5 | xargs rm -f -r

이 스크립트를 직접 실행하면 디렉토리와 파일을 작업하고 제거합니다. crontab에서만 작동하지 않습니다

아무도 내가 여기서 잘못되고있는 것을 찾는 데 나를 도울 수 있습니까?

답변:


1

내 추측은 당신의 권한이 sudo에 대해 잘못되었다는 것입니다 (그러나 cron에서 실행할 때 find 및 xargs에 대한 경로가 누락되었을 수도 있습니다)

그것이 나라면-1. 파일을 / etc / crontab에 넣고 루트로 실행하십시오. 2. (종종 자주했던 것처럼) 더 적은 의존성을 가진 1 줄 스크립트로 변경하십시오. 다음 행을 / etc / crontab에 넣었습니다.

* * * * * root /bin/find /var/www/html/Database/Backup/Backups mtime +5  -exec rm -rf {}  +

xargs에 의존하지 않고 똑같은 일을

나는 당신이 -rf를 수행하고 있음을 주목한다-당신은 재귀 적으로 강제적으로 삭제하고 싶습니까, 특히 모든 하위 디렉토리에서 자동화 된 프로세스를 원하십니까?


스크립트에서 sudo를 제거했습니다. 효과가있었습니다. 감사합니다
Nikesh Kedlaya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.