UnsplashSonja Langford

크론탭에서 명령어를 부팅시 실행, 스크린으로 실행하는 방법

컴퓨터, 소프트웨어 2024년 3월 27일

크론(Cron), 크론탭(Crontab)이란?

크론은 리눅스에서 명령어를 자동화해서 특정 간격으로 실행하고 싶을 때 이용하는 잡 스케줄러를 말합니다. 크론은 크론탭을 이용해서 명령어를 편집할 수 있습니다. 크론은 윈도우의 작업스케줄러와 유사한 기능을 합니다.

크론탭 이용방법

터미널에서 root 계정으로 다음을 입력합니다.

crontab -e

크롭탭 실행(스케줄러 편집)

명령어를 실행하면 본인이 메인으로 사용하도록 지정한 에디터를 통해(저의 경우는 nano) cron 스케줄 리스트를 편집할 수 있습니다.

크론탭의 사용법

01.스케줄 시간 입력

`분 시 일 월 요일` 순으로 숫자나 기호를 입력하면 해당 시간 혹은 간격으로 명령어를 실행합니다. ChatGPT에게 원하는 시간을 말하고 크론 스케줄로 작성해달라고 하면 알아서 잘 만들어 줍니다.

ChatGPT에게 크론 시간 형식 문의

아래는 시간을 집적 입력하는 형태의 크론탭 예 입니다.

# 매시 5분 마다 /home/root/scripts/test1.sh 실행
5 * * * * /home/root/scripts/test1.sh

# 매일 22시 30분에 /home/root/scripts/test2.sh 실행
30 22 * * * /home/root/scripts/test2.sh

크론탭 시간 입력 방식

02.부팅시 실행

시간형식 대신 `@reboot`를 입력하면 부팅시 명령어가 실행되도록 할 수 있습니다.

# 부팅시 실행
@reboot /home/ubuntu/scripts/Ghost_Webhook.sh

크론탭 부팅시 실행 방식

크론탭 사용팁

크론탭을 이용해서 명령어나 스크립트를 실행할 때의 팁입니다. 가상환경이 적용된 파이썬 스크립트를 실행하는 방법과 스크린을 이용해서 명령어를 실행하는 방법입니다.

파이썬 스크립트 실행

리눅스 명령어나 .sh파일처럼 .py(파이썬 파일)도 실행할 수 있습니다. venv가 없는 경우는 파이썬 기본 경로의 python명령어를 입력하면 됩니다. venv가 있는 경우는 venv내의 python명령어를 지정해주면 됩니다.

# venv 없음
# 매주 월요일 17시 0분에 /home/root/py-scripts/pytest1.py실행
0 17 * * 1 /usr/bin/python3 /home/root/py-scripts/pytest1.py

# venv 있음 : /home/root/py-scripts/venv/bin/python
# 매달 1일과 15일 8시 0분에 /home/root/py-scripts/pytest2.py실행
0 8 1,15 * * /home/root/py-scripts/venv/bin/python /home/root/py-scripts/pytest2.py

크론탭에서 파이썬(.py)파일 실행시

스크린으로 실행

크론탭을 이용해 부팅시 다음 명령어를 실행했을 때 단점이 있습니다.

# venv 있음 : /home/root/py-scripts/venv/bin/python
# 부팅시 다음 실행 : /home/root/py-scripts/pytest2.py
@reboot /home/root/py-scripts/venv/bin/python /home/root/py-scripts/pytest2.py

부팅시 .py파일 실행(로그 확인 힘듬)

pytest2.py파일을 작성할 때 로그 파일을 작성하도록 하지 않으면 오류가 생겼을 때 확인을 하기가 힘듭니다. 간단한 스크립트 작성할 때는 로그를 따로 지정하지 않고 그냥 터미널에서 나오는 메시지만 보는 분이 많을 겁니다.

이런 단점을 해결하려면 다음과 같이 screen을 통해 명령어를 실행하면 됩니다.

# venv 있음 : /home/root/py-scripts/venv/bin/python
# 부팅시 스크린으로 다음 실행 : /home/root/py-scripts/pytest2.py
# 스크린명 : Pytest2
@reboot /usr/bin/screen -dmS Pytest2 /home/root/py-scripts/venv/bin/python /home/root/py-scripts/pytest2.py

부팅시 스크린을 이용해 .py파일 실행(로그 확인 가능)

스크린(screen)은 리눅스에서 터미널 사용환경을 크게 개선시키는 유틸입니다. 가상터미널을 이용해서 데몬 없이도 여러개의 명령어를 모니터링하면서 사용할 수 있습니다.

스크린에 대해 자세한 내용을 이전 포스트를 참고하세요.

리눅스 스크린 만든사람 천재 같습니다
리눅스를 터미널로 사용할 때는 데스크탑과 달리 제약이 많습니다. 터미널 환경을 몇 배는 더 쉽게 만들어주는 필수 유틸 스크린(screen)을 소개합니다. 스크린을 사용하면 터미널에서도 손쉽게 멀티태스킹이 가능하고, 로그 작성을 하지 않아도 상태를 확인할 수 있습니다.

스크린은 apt install screen명령어로 별도 설치해야 합니다.

태그

BoniK

협업, 의뢰, 레슨 등 문의 : mail@bonik.me, open.kakao.com/me/bonik