
Cron을 사용하여 VPS의 작업을 자동화하는 방법
2022-06-01 last update
5 minutes reading Ubuntu CentOS System Tools소개
Linux 기기에서 백그라운드에서 작업을 실행하는 가장 표준적인 방법 중 하나는cron 작업을 사용하는 것이다.VPS에서 작업을 스케줄링하고 다양한 유지 관리 작업을 자동화하는 데 유용합니다."Cron"자체는 백그라운드에서 실행되는 데몬(또는 프로그램)입니다.실행되는 다른 작업의 계획은 "crontab"라는 프로필에 있습니다
설치
기본적으로 거의 모든 발행판에 형식적인cron이 설치되어 있습니다.그러나 사용 중인 시스템이 설치되지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.
Ubuntu/Debian의 경우:
sudo apt-get update
sudo apt-get install cron
Cent OS/Red Hat Linux의 경우:sudo yum update
sudo yum install vixie-cron crontabs
백그라운드에서도 실행되도록 해야 합니다.sudo /sbin/chkconfig crond on
sudo /sbin/service crond start
문법
다음은 우리가 실행하고자 하는 예시 작업입니다.
5 * * * * curl http://www.google.com
우리가crontab에 놓을 다른 작업의 문법은 무섭게 보일 수도 있습니다.만약 네가 그것을 어떻게 읽는지 알고 있다면, 그것은 실제로는 매우 간결하고 해석하기 쉬운 방법이다.각 명령은 다음과 같습니다.예제
다음은 크론을 설정할 때 흔히 볼 수 있는 계획의 예시 목록입니다.
분당 명령을 실행하려면 다음과 같이 하십시오.
* * * * *
시간 동안 12분마다 명령을 실행하려면 다음과 같이 하십시오.12 * * * *
각 자리 표시자에 대해 다른 옵션을 사용할 수도 있습니다.15분마다 명령을 실행하려면 다음과 같이 하십시오.0,15,30,45 * * * *
매일 새벽 4시에 명령을 실행하려면:0 4 * * *
매주 화요일 오전 4시에 명령을 실행하려면 다음을 사용하십시오.0 4 * * 2
스케줄에서 나눗셈을 사용할 수 있습니다.0,15,30,45를 나열하는 것 외에 다음을 사용할 수 있습니다.*/4 2-6 * * *
"2-6
"범위에 주의하십시오.이 구문은 2:00am과 6:00am 사이에서 명령을 실행합니다.스케줄링 문법 기능이 강하고 유연하다.너는 거의 모든 가능한 시간을 표현할 수 있다.
프로비저닝
시간표가 확정되고 실행할 작업을 알면 프로세스가 읽을 수 있도록 위치를 설정해야 합니다.몇 가지 다른 점이 있지만, 가장 흔히 볼 수 있는 것은 사용자의crontab이다.기억하고 있다면,cron이 실행할 작업 시간표를 저장하는 파일입니다.각 사용자의 파일은
/var/spool/cron/crontab
에 있지만 직접 편집할 수는 없습니다.반대로 crontab
명령을 사용하는 것이 좋다.다음 명령을 사용하여 crontab를 편집할 수 있습니다.
crontab -e
모든 작업의 일정을 입력할 수 있는 텍스트 편집기를 열 것입니다.crontab을 보고 싶지만 편집하지 않으려면 다음 명령을 사용할 수 있습니다.
crontab -l
다음 명령을 사용하여 crontab를 지울 수 있습니다.crontab -r
권한이 있는 사용자라면 지정crontab -u <user> -e
을 통해 다른 사용자의출력
실행되는cron 작업에 대해 이 사용자와 연결된 사용자의 전자 우편 주소는 로그 파일이나/dev/null로 지정되지 않는 한 전자 우편으로 출력됩니다.crontab 상단에 "MAILTO"설정을 제공하면 수동으로 전자 우편 주소를 지정할 수 있습니다.다음 예제를 사용하여 실행할 셸, cron 바이너리 파일 검색 경로, 홈 디렉터리를 지정할 수 있습니다.
먼저 crontab를 편집합니다.
crontab -e
그런 다음 다음과 같이 편집합니다.SHELL=/bin/bash
HOME=/
MAILTO=”[email protected]”
#This is a comment
* * * * * echo ‘Run this command every minute’
이 특정 작업은 "분당 이 명령 실행"을 출력합니다이 출력은 분당 전자 우편으로 제가 지정한 "example @.com"전자 우편 주소로 보냅니다.분명히 이것은 이상적인 상황이 아닐 수도 있다.앞에서 설명한 바와 같이, 출력이 있는 전자메일을 받지 않도록 출력을 파이프를 통해 로그 파일이나 빈 위치로 전송할 수 있습니다.로그 파일에 첨부하려면 다음과 같이 하십시오.
* * * * * echo ‘Run this command every minute’ >> file.log
참고: ">>
"파일을 첨부합니다.파이프를 빈 위치에 삽입하려면
/dev/null
를 사용합니다.다음은 백그라운드에서 실행되고 실행되는 PHP 스크립트입니다.* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
액세스 제한
/etc/cron.allow
및 /etc/cron.deny
파일을 사용하면cron에 대한 접근을 제한하기 쉽습니다.사용자를 허용하거나 거부하려면 필요한 액세스 권한에 따라 사용자 이름을 파일 중 하나에 배치하기만 하면 됩니다.기본적으로, 대부분의 cron 수호 프로세스는 파일이 존재하지 않는 한 모든 사용자가cron에 접근할 권리가 있다고 가정합니다.모든 사용자의 액세스를 거부하고 tdurden에 대한 액세스 권한을 부여하려면 다음 명령 시퀀스를 사용합니다.echo ALL >>/etc/cron.deny
echo tdurden >>/etc/cron.allow
먼저 거부 파일에 "ALL
"를 추가하여 모든 사용자를 잠급니다.그리고 사용자 이름을 allow 파일에 추가함으로써 사용자에게cron 작업을 수행할 수 있는 권한을 부여합니다.특수 문법
crontab 파일에서 몇 개의 속기 명령을 사용하여 관리를 간소화할 수 있습니다.지정된 등가 숫자 명세서의 기본 단축키:
@hourly
-약칭0 * * * *
@daily
-약칭0 0 * * *
@weekly
-약칭0 0 * * 0
@monthly
-약칭0 0 1 * *
@yearly
-약칭0 0 1 1 *
@reboot
명령은 시작 시 실행됩니다.주의: 모든cron 수호 프로세스가 이 문법 (특히 구 버전) 을 해석할 수 있는 것은 아니므로 의존하기 전에 유효한지 자세히 확인하십시오.
작업을 시작할 때 실행하려면 crontab 파일 (
crontab -e
을 편집하고 다음과 같이 파일에 줄을 두어야 합니다.@reboot echo "System start up"
이 특정한 명령은 실행되고 전자메일을 통해crontab에서 지정한 사용자에게 전송됩니다.