이번 의뢰에서 리눅스의 자동 재부팅을 요청받았다.
리눅스에서 배치 작업을 등록하는 방법은 무엇일까?
- 리눅스에서 자동적으로 쉘 스크립트나 프로그램 명령을 등록하는데 가장 자주 사용되는 것이 crontab이다.
참고 링크를 확인해 보면, 쉘 스크립트 + crontab을 활용하는 것을 알 수 있다.
상기의 내용은 crontab의 명령 옵션을 표기한다.
수정, 조회, 삭제가 기본이고 추가로 몇 가지 옵션이 더 있지만, 일반적으로는 수정하고 조회 정도면 충분하다.
1. 작업 리스트 조회
- 먼저 내가 추가하려는 배치가 있는지 확인해야 한다. 원하는 작업이 이미 존재한다면, 이중작업이 되거나 프로그램 오류의 원인이 될 수 있다.
1) 명령 사용방법
crontab [-u user] -l
우선 -u 옵션은 접근 가능한 OS 사용자가 가진 crontab 내용에 대해서도 확인할 수 있도록 제공한다.
예를 들어 위 이미지의 로그인은 root 로서 전체 관리권한(admin)이 있다.
따라서 자신의 하위 권한자가 가진 crontab 조회는 가능하지만, 조회가 불가능하도록 처리된 계정은 조회를 할 수가 없다.
그러나 -u는 옵션으로서 자기 자신의 crontab을 확인할 때는 사용하지 않아도 좋다.
다시 말해,
crontab -u 로그인-계정 -l
crontab -l
위 두 줄은 그 동작이 같다.
2) 배치 시간 설정
위 조회된 내용을 보면 약간 생소한 부분이 확인될 것이다.
0 * * * *
55 00 * * *
같은 내용들이다.
앞에서부터
[분] [시] [일] [월] [요일]
이다.
0 * * * * -> 매 0분마다 실행 (시간마다 배치)
55 00 * * * -> 매 0시 55분마다 실행 (일간 배치)
* 만 아니라 다양한 기호가 사용되는데, 대표적으로는 (,)와 (-), (/)이다.
기호 | 내용 | 예시 |
* | 모든 | 10 * * * * (모든 10분마다) |
, | 또는 | 0 2,3 * * * (모든 2시 또는 3시에) |
- | 범위 지정 | 50-55 13 * * * (모든 13시 50분부터 55분 사이에) |
/ | 분할 지정 | * 6-18/6 * * * (모든 6시부터 18시 사이 6시간 간격으로) |
여러 가지 수식을 활용하여 복합적으로 사용될 수도 있다.
2. 작업 리스트 수정
- 본래는 수정, 삭제가 모두 있으나 수정을 통해서 삭제가 가능하므로 여기서 처리하고자 한다.
1) 명령 사용방법
crontab [-u lgnUsr] -e
명령을 치면 우리에게 익숙한 vim 화면처럼 나온다.
vim을 수정하듯 처리하고 저장하고 나오면 된다.
다만 조심해야 할 것은 vi crontab이나 crontab -e | grep처럼 명령을 사용할 경우, 원하는 결과를 얻을 수 없을 것이다.
2) 주석처리
# 을 사용하면 해당 라인을 무시한다.
그러나 코멘트와 비활성화한 배치와 구분되게 작성하면 좋다.
더 이상 사용하지 않게 된 소스는 1줄, 코멘트는 2 줄어 들여 쓰기를 하는 방법도 있다.
3) 자동 재부팅
일반적으로 reboot 명령은 슈퍼유저만 가능하다.
먼저 재부팅 권한을 가진 유저로 crontab을 아래와 같은 순서로 추가하도록 하자.
# step 1. sign in su
su -- root
# 일반적으로 슈퍼유저는 권한을 수정하거나 삭제하지 않은 이상 root 나 admin 이다.
#step 2. use crontab -e
crontab -e
# crontab 입력 화면에서 하기 내용을 기입한다.
#step 3. add line
## Reboot 2019.10.29. botbinoo.
00 04 * * * reboot
재부팅 권한이 있는 사용자가 해당 배치 작업을 가지고 있다면 해당 서버는 매일 새벽 4시마다 서버를 켰다가 끄게 된다.
crontab 은 별도로 적용을 위해 프로그램을 다시 켜거나 재기동을 할 필요가 없다.
참고 : https://blog.acronym.co.kr/360
자동 배치 처리를 위한 crontab 사용법
리눅스와 같은 유닉스 계열에서는 주기적으로 자동 배치 처리를 하기 위해서 쉘 스크립트와 crontab을 사용합니다. 즉, 쉘 프로그램을 crontab에 등록된 시간에 자동으로 실행하도록 하는 것으로 서버 로그 정리,..
blog.acronym.co.kr
'programming > OS (Linux, Windows)' 카테고리의 다른 글
[Linux] File Descriptor (0) | 2019.11.21 |
---|