본문 바로가기

IT/리눅스

리눅스 스케줄(crontab 설정하기)

요근래 회사 서버들이 전부 WINDOWS -> LINUX로 변경되면서 LINUX 관련해서 쓸 이야기가 많다.


블로그를 더 빨리 시작했더라면 JBOSS 관련해서도 블로그에 기술할 수 있었을텐데..



암튼 잡설은 그만하고 윈도우스케줄러와 같이 리눅스운영체제에서 지정된 시간에 원하는 동작을 실행 시키는 crontab에 대해서 알아보자






리눅스 /etc/ 폴더에 가게되면 cron.* 로 이루어진 각각의 스케줄 폴더들이 보인다.



해당폴더에 스크립트를 넣어주면 자동으로 실행해 주는듯 한데, 해당 폴더에 넣거나 저 위에보이는 6번째로 보이는 crontab 설정파일에  


* * * * /home/acct.sh 와 같은 방식으로 기입하여 스케줄을 설정해 줄 수 있다.



crontab을 vi에디터로 실행 시키면 위와 같이 나오는데


아래 빈공간에 써넣어주면 된다.


앞에서부터 분 시 일 월 주를 뜻하며 그 뒤에 실행시킬 스크립트를 적으면 된다.


참고로 .exe파일을 실행시킬때는 왜인지 모르겠으나 실행이 안되고 스크립트로 한번 감싸서 스크립트를 실행시켜주면 된다.



30 14 * * root /home/hs/acct.sh


매일 2시 30분에 해당 경로에 존재하는 acct.sh 스크립트를 실행시킨다.



------------------------------------------------------------------------------------------------


위에 열심히 설명은 해놨지만 동작을 안하는 경우가 발생한다.


"내가 동작하면 되는데.. 왜 crontab에 등록해놓으면 동작을 안하지?"


라고 삽질을 하도 하다보니 저기에 등록해놓게되면 계정권한등이 영향을 끼쳐서 동작하지 않는다고 한다.



그래서 동작하지 않는 걸 


crontab -e 라는 명령어를 이용해서 출력되는 화면에


위와 같이 시간 설정후 동작해야 하는 스크립트를 적어놓으니


편-안


하게 실행이 되더라...


둘의 차이점은 계정권한 뿐인데.. 똑같은 계정권한으로 돌리는데도 왜 돌아가질 않는지는 아직 이해가 안간다.. 혹시 아시는 분은 댓글 부탁드립니다..


그리고 혹시나 하는데.. 스크립트 경로쓸때... 상대경로 절대경로 확인해서 잘써야한다..


애초에 나는 절대경로 위주로 쓰다보니까.. 혼동하진 않았는데 가끔 그런분들 있더라...


※ 참고로 1분당 실행시키고 싶다 해서 1 * * * 으로 적으시는 분들 가끔 있는데 


1분당 실행시키고 싶으면 * * * * 가 맞다. 1 * * * 은 매 시간 1분 ex) 1시 1분/ 2시 1분 / 3시 1분 이란 뜻이다