Cron 작업을 어떻게 설정합니까?


534

작업이 정기적으로 실행되도록 예약하고 Cron 이이 작업을 수행하는 방법이라고 들었습니다.

우분투에서 Cron 작업을 어떻게 추가합니까?

답변:


655

이러한 폴더 중 하나에 쉘 스크립트를 넣어 : /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly또는 /etc/cron.weekly.

이것으로 충분하지 않으면 한 달에 두 번 또는 5 분마다 더 구체적인 작업을 추가 할 수 있습니다. 터미널로 이동하여 다음을 입력하십시오.

crontab -e

개인 crontab (크론 구성 파일)이 열립니다. 그 파일의 첫 줄은 모든 것을 설명합니다! 모든 라인에서 실행할 하나의 명령과 해당 스케줄을 정의 할 수 있으며 중단이 발생하면 형식이 매우 간단합니다. 구조는 다음과 같습니다.

minute hour day-of-month month day-of-week command

모든 숫자에 대해 목록을 사용할 수 있습니다 (예 : 5,34,55분 필드)는 정의 된 시간에 관계없이 5시, 34시, 55시를 실행한다는 의미입니다.

간격을 사용할 수도 있습니다. 그것들은 다음과 같이 정의됩니다 : */20. 이 예는 20 분마다를 의미하므로 분 열에서는와 같습니다 0,20,40.

매주 월요일 오후 5:30에 명령을 실행하려면 다음을 수행하십시오.

30 17 * * 1 /path/to/command

또는 15 분마다

*/15 * * * * /path/to/command

요일은 0에서 6까지이며 여기서 0은 일요일입니다.

자세한 내용은 여기를 참조 하십시오 .


7
이들은 시스템 전체이며 높은 권한으로 실행됩니다. 접근이나 허가가 절실히 필요하지 않으면 아무것도 넣지 않을 것입니다. 일반적으로 기능이없는 작업을 수행하십시오. 따라서 저는이 답변이 더 좋습니다 : ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/…
H Marcelo Morales

5
@Marcelo Morales, 주어진 명령을 루트로 실행합니다! 반면에 sudo를 사용하지 않으면 crontab 사용자가 생성되며이를 생성 한 사용자로 실행됩니다!
LassePoulsen

4
* / 15 * * * * / path / to / command는 매우 유용했습니다! 감사!
Andrew Odendaal 2013

18
이러한 변경 사항은 자동으로 적용되므로 아무 것도 다시 시작하거나 다시로드 할 필요가 없습니다.
Molomby

6
또 다른 유용한 팁 대신한다는 것입니다 */15 * * * * /path/to/command, 당신이 할 수있는 @reboot /path/to/command시작에 무언가를 실행하기 위해.
Kenneth Worden

102

실행하려는 작업을 사용자와 동일한 권한으로 실행할 수있는 경우 실행하여 EDITOR="gedit" crontab -e(gedit를 사용하여 crontab 파일을 편집하거나) 간단히 crontab -e(기본 편집기를 사용하여 ) 편집 할 수있는 사용자 crontab을 사용하는 것이 좋습니다 터미널에서.

예를 들어 10 분마다 무언가를 실행하려면 다음과 같은 줄을 추가하십시오.

*/10 * * * * /usr/bin/somedirectory/somecommand

파일을 저장하십시오.

로 crontab 사용자의 내용을 볼 수 있습니다 crontab -l.

루트로 실행되는 크론 작업을 추가하려면을 실행하여 루트의 크론 탭을 편집 할 수 있습니다 sudo crontab -e.

가장 유연한 방법은 /etc/crontab루트 권한으로 만 편집 할 수 있는 시스템 crontab을 사용 하는 것입니다. 이 파일에서 각 명령이 지정된대로 실행되는 사용자이므로 루트 (권한이 필요한 경우) 또는 시스템의 다른 사용자로 명령을 실행할 수 있습니다.

예를 들어, 루트로 10 분마다 무언가를 실행하려면 다음과 같은 행을 추가하십시오.

*/10 * * * * root /usr/bin/somedirectory/somecommand

(라인에 사용자 추가에 대한 알림)

로 시스템 crontab 파일의 내용을 볼 수 있습니다 cat /etc/crontab.

자세한 내용은 https://help.ubuntu.com/community/CronHowto 에서 확인하십시오.


1
다음은 crontab.guru에
CTS_AE

52

GUI를 사용하여 원하는 경우 소프트웨어 센터로 이동하여 예약 된 작업을 설치 하거나 실행 sudo apt-get install gnome-schedule하십시오. cron 작업을 추가 할 수있는 강력한 GUI를 제공합니다.

이 방법을 사용하면 기본적으로 작업이 루트가 아닌 자신의 사용자로 실행됩니다. 이것은 일반적으로 좋은 것입니다.


3
사용할 수 없습니다에 대한 16.04 분명히 bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060
TankorSmash

@TankorSmash 여기에서
M. Becerra


26

KDE의 작업 스케줄러 ( kde-config-cron)를 권장 kde-config-cron 설치합니다. 작업 스케줄러 모듈 의 시스템 설정 에서 액세스하십시오 .

개인 Crontab과 시스템 Crontab을 모두 관리하며 시간 경계를 쉽게 만들 수 있다는 점이 놀랍습니다 (아래 스크린 샷 참조). 나는이 부분이 실제로 과소 평가되었다고 생각한다.

여기에 이미지 설명을 입력하십시오


11

KDE 작업 스케줄러는 일반 우분투에서 작동하지 않습니다. KUbuntu와 같은 KDE 시스템에서만 작동합니다. 비 KDE 시스템의 경우 gnome-schedule을 사용하는 것이 좋습니다

$ sudo apt-get install gnome-schedule

응용 프로그램은 대시에서 예약 된 작업입니다.


Ubuntu 16.04
SaidbakR에

한 번 봐 제발 I can't install gnome schedule on Ubuntu 16.04@ askubuntu.com/questions/785657/...을 . @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… 를 다운로드 할 수있는 패키지가 있습니다 . 그냥 수행$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
안토니오

10

Cron 작업이 bash 스크립트를 통해 실행되도록 설정하고 싶었으므로 스크립트를 실행하면 cron 작업이 추가됩니다.

나는 당신이 다음을 사용할 때 깨달았습니다.

crontab -e 

그런 다음 파일을 만듭니다.

/var/spool/cron/crontabs/root

여기서 root는 crontab 명령을 실행중인 사용자의 이름입니다. 따라서이를 바탕으로 최소한 14.04에서는 다음 bash 명령을 실행하여 새 Cron 작업을 만들 수 있습니다.

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

또한 파일에 대한 올바른 소유권을 설정해야합니다.

chown root:root /var/spool/cron/crontabs/root

올바른 권한을 설정하십시오.

chmod 600 /var/spool/cron/crontabs/root

실행시 crontab -e목록에 이미 Cron 작업이있는 경우 다음 명령을 사용하여 목록에 추가 할 수 있습니다.

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

2

test_cron.sh기호 링크를 사용하여 Ubuntu 18.04에서 1 분마다 cron으로 스크립트를 실행하는 예 :

test_cron.sh 파일:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

$USER경로 에서처럼 스크립트에서 환경 변수를 사용하려면 정확한 경로를 입력하는 것이 좋습니다. bash는 실행 시간에 변수를 알지 못합니다.

myname 사용자 이름입니다 (루트 그룹의 일부이므로 루트 권한이 필요한지 확실하지 않습니다).

사용자가 cron 작업을 설정하도록 허용하면 필요한 경우 파일이 작성됩니다.

sudo nano /etc/cron.allow

root
myname

스크립트 경로는 /home/myname/shell/test_cron.sh

소유자를 변경하고 실행 가능하게 만들었습니다.

sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh

심볼릭 링크를 추가했습니다.

sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron

매분마다 myname새로운 작업을 추가 하면서 기록했습니다 test_cron.

crontab -e

*/1 * * * * test_cron

목록에서 명령이 있는지 확인하려면 다음을 수행하십시오.

crontab -l

*/1 * * * * test_cron

실행을 확인하려면

grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.