관련지식
linux, crontab, grep
관련지식
linux, crontab, grep
리눅스 터미널에서 crontab -e
를 하면 텍스트 편집기로 crontab에 등록된 작업을 추가/변경/삭제할수 있지만, 만약 쉘이나 프로그램에서 크론탭을 자동으로 수정하고 싶다면 어떻게 해야 할까요?
설정 추가
아래와 같이 크론탭 설정이 저장된 파일을 직접 수정할수 있습니다.(경로는 조금씩 다를수 있음) 그러나 이 방법은 설정 내역만 수정될 뿐, 이미 실행중인 crontab 엔 반영이 안되기 때문에 서비스를 재기동해야만 적용됩니다.
아래 명령어는 crontab에 새로운 설정을 추가합니다.
echo '02 16 * * 1-6 touch /root/a' >> /var/spool/cron/crontabs/root
service cron restart
아래 방법은 crontab
명령어와 stdout을 적절히 조합한 방법입니다. cron 재기동이 필요하지 않습니다.
{ crontab -l & echo '02 16 * * 1-6 touch /root/a'; } | crontab -
만약 기존 설정을 무시한채 새로운 설정을 하고 싶다면 아래와 같이 할수 있습니다.
echo '02 16 * * 1-6 touch /root/a' | crontab -
기존 설정을 무시한채 다수의 작업을 추가하고 싶다면, 설정할 내역을 파일로 만들어두고 등록할수 있습니다.
예를들어 아래와 같은 내용을 가진 new_job.txt가 있다고 가정합니다.
00 13 * * 1-6 touch /root/b
00 15 * * 1-6 touch /root/c
아래와 같이 명령어를 실행하면 new_job.txt 의 내용이 crontab 작업에 overwrite 됩니다. 이 방법은 다수의 작업을 추가할때 유용합니다.
crontab new_job.txt
만약 기존 설정을 유지하면서 다수의 작업을 추가하고 싶다면 아래와 같이 하시면 됩니다.
{ crontab -l & cat new_job.txt; } | crontab -
설정 삭제
grep
을 이용하여 특정 설정을 삭제할 수 있습니다. 아래 명령어는 ‘touch /root/a’ 작업을 크론탭에서 삭제합니다.
crontab -l | grep -v 'touch /root/a' | crontab -
물론 crontab 설정파일을 직접 수정한후 서비스를 재기동해도 됩니다.
설정 수정
sed
를 이용하여 기존에 설정된 내용을 수정할 수 있습니다. 아래 내용은 위에서 추가한 설정에서 /root/a
를 /root/newfile
로 변경합니다. 정규표현식을 필요로 하기 때문에 정규표현식이 익숙하지 않거나 정규표현식으로 처리하기 힘든 상황이라면 전체 설정 다시 하는것도 좋은 방법입니다.
crontab -l | sed 's/\/root\/a/\/root\/newfile/g' | crontab -
'쓸데없는 코딩하기' 카테고리의 다른 글
You must sign up for private packages 오류 발생시 (0) | 2019.10.16 |
---|---|
[css] 텍스트 글자 생략 … 적용하기 (1) | 2019.10.11 |
[vue.js] 데이터 변경 감지 정리 (0) | 2019.09.25 |
Scroll Lock 키를 이용한 윈도우 화면 잠그기 (0) | 2019.08.22 |
[에디터 제작기] 2.커서 포지션의 이슈 (0) | 2019.07.26 |