Cron은 유닉스 계열의 컴퓨터 운영체제에서 사용되는 시간 기반 작업 스케줄러이다.
사용자가 지정한 시간에 자동으로 명령이나 스크립트를 실행할 수 있도록 해준다.
반복작업을 효율적으로 자동화하는데 사용된다.
cron 작업은 crontab(cron table) 파일에 의해 관리된다.
각 사용자는 자신의 crontab 파일을 가질 수 있으며, 시스템 전체에 영향을 미치는 crontab 파일도 존재한다.
* * * * * command to execute │ │ │ │ │ │ │ │ │ └─ 요일 (0 - 7) (0 또는 7은 일요일) │ │ │ └─── 월 (1 - 12) │ │ └───── 일 (1 - 31) │ └─────── 시 (0 - 23) └───────── 분 (0 - 59)
사용 예시
0 0 * * * /path/to/backup.sh
0 9 * * 1 /path/to/report.sh
전체 터미널에서 cron 작업을 실행하려면 시스템의 crontab 파일을 수정해야 한다.
모든 사용자에 대해 공통적으로 실행되는 작업을 설정할 수 있다.
root 권한이 필요하며 아래 경로에 있는 crontab을 수정하면 된다.
sudo nano /etc/crontab
아래 코드를 보면 설치, 관리 할 수 있다.
sudo apt install cron // apt 패키지 관리자로 cron 패키지 설치 sudo systemctl start cron // systemctl 명령어와 start 옵션으로 cron은 지금 세션에서 바로 시작 sudo systemctl enable cron // enable 옵션은 서버 시작 시 자동 시작 옵션으로 다음 부팅부터 자동으로 cron 활성화 sudo systemctl status cron // cron의 현재 상태 확인 crontab -l // 현재 사용자 cron의 작업 확인
wall 명령어는 Unix 및 Linux 시스템에서 사용되는 유틸리티로, 시스템에 로그인한 모든 사용자의 터미널에 메시지를 전송하는 데 사용된다.
"wall"은 "write to all"의 약자이다.
wall명령어를 사용하는 계정이 로그인 되어 있어야 함)모니터링 스크립트 monitoring.sh를 10분 간격으로 모든 터미널에 보내는 상황을 가정할 때다.
crontab -e */10 * * * * ~/monitoring.sh | wall
cron작업을 설정하여 10분마다 monitoring.sh스크립트를 실행한다.
그 결과를 wall명령어를 통해 로그인 되어 있는 모든 사용자의 터미널에 메시지로 보내는 설정이다.