oracle free tier (ubuntu 22.04)에서 cron or crontab 사용하기 (초보의 실수)
워낙 리눅스 초보라 한참을 헤맸습니다.
처음 검색했을때, /etc/crontab 파일을 이용했습니다.
파일을 열어, 아래 행을 마지막에 삽입했습니다.
0 8,17 * * * /volume1/docker/script/enc.sh
하루가 지났는데, 아무런 변화가 없네요.
그래서 좀더 검색을 했습니다.
crontab -e 를 사용하는 방법을 찾았습니다.
- 파일저장 경로가 살짝 다릅니다. /tmp/crontab.fveRxQ/crontab
crontab -l #크론탭 확인
crontab -e #크론탭 작성
crontab -r #크론탭 삭제
crontab -e
##마지막줄에 삽입
* * * * * echo "hello world" >> /root/aaa.log
위 명령어는 1분마다 hello world 를 aaa.log 에 기록합니다.
예제
crontab -e
15 1 * * * find "/volume1/movies" -mtime +6 -delete
10 1 * * * find "/volume1/enc" -mtime +8 -delete
5 1 * * * find "/volume1/utb" -mtime +6 -delete*/10 * * * * /home/script/test.sh #매 10분마다 실행
위 스크립트는 일정기간 지난 후, 자동으로 폴더의 파일을 삭제합니다.
(첫번째는 매일 새벽1시 15분에 실행합니다.)
36 * * * * /volume1/docker/script/enc.sh
위 스크립트는 아래 인코딩 스크립트를 자동으로 실행하게 합니다.
(매시간 36분에 실행합니다.)
*/10 * * * * /vo2/docker/script/wifi.sh >> log.txt 2>> err.txt
*/35 * * * * /usr/bin/sudo -H /vo2/docker/script/wifi2.sh >> log1.txt 2>> err1.txt
*/10 * * * * /vo2/docker/script/wifi3.sh >> log3.txt 2>&1
실행하면, 로그는 /root 폴더에 만들어 집니다. 원하는 경로를 지정해야 합니다.
** 결론
- crontab 은 두가지 방법이 존재합니다.
(etc/crontab 파일 이용 / crontab -e 명령어를 이용하는것)
- 본인은 후자 crontab -e 를 이용합니다.
** 시간설정
- 서버 시간과 다르게 표시되어 crontab 실행이 안되었습니다.
timedatectl set-timezone Asia/Seoul
이렇게 입력하면, 서울 시간으로 됩니다.
** 타임존 바꾸고 크론을 재시작 해야 합니다.
sudo su
sudo service cron stop
sudo service cron start
총결론
- sudo su 권한으로 한다.
- 타임존 바꾼 후, cron 을 재시작 해야 합니다.