English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux crontab 명령

Linux 명령어大全

Linux crontab은 정기적으로 프로그램을 실행하는 명령입니다.

操作系统 설치가 완료되면 기본적으로 이 작업 예약 명령이 시작됩니다.

crond 명령은 분당으로 정기적으로 실행해야 할 작업이 있는지 확인하고, 해당 작업이 있으면 자동으로 해당 작업을 실행합니다.

주의:새로 생성된 cron 작업은 즉시 실행되지 않으며, 최소한 2 분 후에야 가능합니다. 물론 cron을 재시작하여 즉시 실행할 수 있습니다.

Linux 작업 예약의 주요 작업은 다음과 같은 두 가지로 나뉩니다:

  • 1시스템이 수행하는 작업: 시스템이 주기적으로 수행해야 할 작업, 예를 들어, 시스템 데이터 백업, 캐시 정리
  • 2개인이 수행하는 작업: 특정 사용자가 규칙적으로 수행해야 할 작업, 예를 들어, 매10이메일 서버에 새 메일이 있는지 분당 확인합니다. 이러한 작업은 각 사용자가 자신의 설정으로 수행할 수 있습니다

문법

crontab [ -u user ] 파일

또는

crontab [ -u user ] { -l | -r | -e }

설명:

crontab은 사용자가 일정 시간 또는 일정 간격으로 프로그램을 실행하도록 사용됩니다. 다시 말해, 사용자의 시간표와 유사합니다.

-u user는 특정 user의 시간표를 설정하는 것을 의미합니다. 이 경우, 다른 사람의 시간표를 설정하려면 권한이 필요합니다(예: root). u user를 사용하지 않으면 -u user라면, 자신의 시간표를 설정하는 것을 의미합니다.

파라미터 설명:

  • -e : 시간표를 설정하기 위해 텍스트 편집기를 실행하십시오. 기본 텍스트 편집기는 VI입니다. 다른 텍스트 편집기를 사용하려면 먼저 해당 텍스트 편집기를 지정하기 위해 VISUAL 환경 변수를 설정하십시오. 예를 들어, setenv VISUAL joe
  • -r : 현재 일정 목록을删除
  • -l : 현재 일정 목록을列出

시간 형식은 다음과 같습니다:

f1 f2 f3 f4 f5 program
  • f1 이는 분을 나타냅니다. f2 이는 시간을 나타냅니다. f3 이는 월의 날짜를 나타냅니다. f4 이는 월을 나타냅니다. f5 이는 한 주 중의 날짜를 나타냅니다. program은 실행할 프로그램을 의미합니다.
  • f1 a * 이면 매 분에 프로그램을 실행, f2 a * 이면 매 시간에 프로그램을 실행, 나머지와 같이 계속
  • f1 a-b이면 a분부터 b분까지의 시간 동안 실행, f2 a-b이면 a부터 b시간까지 실행, 나머지와 같이 계속
  • f1 a */n이면 n분 간격마다 실행, f2 a */n이면 n시간 간격마다 실행, 나머지와 같이 계속
  • f1 a, b, c,...이면 a, b, c,...분에 실행, f2 a, b, c,...이면 a, b, c,...시간에 실행, 나머지와 같이 계속
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 주 중 주几天 (0 - 6) (일요일은 0)
|    |    |    +---------- 월 (1 - 12) 
|    |    +--------------- 한 달 중 몇 번째 날 (1 - 31)
|    +-------------------- 시간 (0 - 23)
+------------------------- 분 (0 - 59)

사용자는 모든 설정을 먼저 파일에 저장하고, crontab file 방식으로 실행 시간을 설정할 수도 있습니다.

온라인 예제

매 분에 한 번 실행 /bin/ls:

* * * * * /bin/ls

서버에서 12 월 내, 매일 아침 6 점까지 12 점, 매 3 시간 0 분에 한 번 실행 /usr/bin/backup:

0 6-12/3 * 12 * /usr/bin/backup

월요일부터 금요일까지 매일 오후 5:00 [email protected]에게 한封信을 보냅니다:

0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata

매월 매일 밤 0 시 20 분, 2 점 20 분, 4 점 20 분.... echo "haha" 실행:

20 0-23/2 * * * echo "haha"

다음에 몇 가지 구체적인 예제를 보겠습니다:

0 */2 * * * /sbin/service httpd restart  매 두 시간에 한 번 apache를 재시작하는 의미 
50 7 * * * /sbin/service sshd start  매일 실행하는 의미7:50 ssh 서비스를 시작 
50 22 * * * /sbin/service sshd stop  매일 실행하는 의미22:50 ssh 서비스를 종료 
0 0 1,15 * * fsck /home 매월1번호와15번호 확인/home 디스크 
1 * * * * /home/bruce/backup  매시간의 첫 번째 분에 실행 /home/bruce/backup这个文件 
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30 실행了一次 ls 명령어

주의:프로그램이 지정된 시간에 실행되면 시스템은 현재 사용자에게 이 프로그램이 실행된 내용을 표시하는 이메일을 보냅니다. 이러한 이메일을 받고 싶지 않으면 각 행에 공백을 추가하여 > /dev/null 2>&1 만들면 됩니다. 예를 들어:

20 03 * * * . /etc/profile;/bin/sh /var/www/w3codebox/test.sh > /dev/null 2>&1 

스크립트 실행 불가 문제

스크립트를 cron tab을 사용하여 정기적으로 실행할 때 실행되지 않지만, 직접 명령어를 사용하여 실행하면 예를 들어 ./test.sh)이 다시 정상적으로 실행되지만, 이는 환경 변수를 읽을 수 없기 때문입니다.

해결 방법:

  • 1、모든 명령어는 절대 경로 형식으로 작성되어야 합니다. 예를 들어: /usr/local/bin/docker。

  • 2、shell 스크립트의 시작 부분에 다음 코드를 사용합니다:

    #!/bin/sh
    . /etc/profile
    . ~/.bash_profile

    3、 /etc/crontab 에 환경 변수를 추가하여 실행할 명령어 전에 명령어를 추가할 수 있습니다. . /etc/profile;/bin/sh를 사용하여 환경 변수를 효과적으로 활성화하면 예를 들어:

    20 03 * * * . /etc/profile;/bin/sh /var/www/w3codebox/test.sh

    Linux 명령어大全