우분투 리눅스에서 /etc/cron.d/ (혹은 기타 /etc/cron.daily 등등) 에 직접 작성한 파일 인식하지 않는 경우 해결책


PHP 는 자체적으로 스케줄 처리를 하지 못하므로 보통 cron 데몬을 활용하는 경우가 많습니다.

이번에 스케줄 처리를 해보려고 아래와 같이 /etc/cron.d/ 경로에 파일을 추가했는데요.

> ls -al
lrwxrwxrwx   1 root root   34 Jan 19 15:35 doogle.link -> /home/user/cron.sh*

이런식으로 관리가 편하도록 symbolic link 로 만들어서 추가했습니다.

그런데 이상하게 동작을 하지 않더군요.

그래서 심볼릭링크가 아닌 실제 파일로 지정도 해보고 사용자나 권한을 변경해보기도 하고 여러가지 시도도 해보고 cron 서비스 재시작도 해보고 했지만 여전히 동작하지 않았습니다

결국 구글링을 통해 알아보니 /etc/cron.d/ 에 파일을 위치시킬 때 파일명 지정에 대한 제한규칙이 있었습니다. ㅜㅜ

cron 설명서만 읽어봤어도 금방 해결할 문제였는데 참 안타까운 상황이네요;; ㅋㅋ;

아래는 cron 메뉴얼 링크입니다.

http://manpages.ubuntu.com/manpages/hirsute/en/man8/cron.8.html

내용을 보면 중간에 아래와 같은 내용이 있습니다.

Files in this directory have to be owned by root, do not need to be executable  (they  are configuration  files,  just  like  /etc/crontab)  and  must  conform  to  the  same naming convention as used by run-parts(8) : they must consist solely  of  upper-  and  lower-case letters,  digits, underscores, and hyphens.  This means that they cannot contain any dots.

즉 대,소문자, 숫자, 밑줄(_), 하이픈(-) 만 가능하다는 거네요. 점(.)이 들어가면 안됩니다. ㅜㅜ

추가적으로 파일은 root 소유여야 하네요.

아무튼 결론은 설명서를 잘읽자! 입니다. ㅜㅜ

참고자료

  1. https://bugs.launchpad.net/ubuntu/+source/cron/+bug/706565