등 / crontab을 파일의 crontab -e 명령의 차이
1, 다른 형식
이전
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
후자의
#50 1 * * * command
2 범위
수정이의 / etc / 루트 사용자 만 crontab을이 방법을 사용할 수 있습니다,이 방법은 더 편리하고 다른 사용자가 설정을 일정에 직접 지시 할뿐만 아니라 모든 사용자가 보통 사용할 수있는 실행 등 껍질,의 crontab -e를 지정 사용자는 자신을 위해 예약 된 작업을 설정할 수 있습니다. 자동은 / var / spool / cron / usename 쓰기
3, 구별 서비스 관리
/etc/init.d/crond restart
service crond restart
구문을 확인합니다 (1) crontab에서이 VI는하지 않습니다
2 있으며 crond OS 일부는 그래서 서비스를 다시 시작하여 구성을 다시 읽을 수 없습니다
의 crontab -e는 작업을 사용자의 사이클을 예정이다,의 / etc / crontab을은주기적인 시스템의 작업이다
crontab을 -e 및 / etc / crontab을 구문 수정 동일하지 않다 지정된 다중 사용자 인
어떤 물질의 crontab -e 없습니다 또는 / etc /를 있으며 crond 서비스를 다시 시작할 필요가 없습니다 crontab을
01 22 * * * /sbin/shutdown -h now
실행의 결과는, 그들은 일반적으로 지금 init 0을 할 -h 리눅스 종료를 사용, 동일 UNIX에서 가장 자주 사용되는 init 0을, 정체성의 셧다운 필요 루트 실행 할 수 있습니다
작동 방법을 선택할 수 있습니다 :
방법 1 :
정체성의 루트로 변경
스와 - 루트
crontab을 -e (a 증가시)
01 22 * * * /sbin/shutdown -h now (或01 22 * * * /sbin/init 0)
즉 저장하고 종료 할 수 있습니다
방법 2 :
VI은 / etc / crontab을 내부 삽입
01 22 * * * root /sbin/shutdown -h now
或
01 22 * * * root /sbin/init 0
이 시스템의 일상적인 작업 인 경우 -e는 사용자의 크론 위해 설계 crontab을 어떻게 할까? 당신은 여전히 루틴을 관리 할 수 -e 명령을 crontab에해야합니까? 물론하지 않는, 만에 편집을 / etc / crontab을 파일에 필요합니다. 참고 것을 : crontab을 -e 사실의 역할에 / usr / 빈은 /이 파일을 실행하지만은 / etc / crontab을 일반 텍스트 파일입니다 crontab을 루트 ID에이 파일을 편집 할 수 있습니다.
크론가 데이터의 내용을 읽고, 그래서 기본적으로, 최소 검출 시간 크론 서비스 유닛은 분을 / etc / crontab을하고는 / var / 스풀 / cron을 매 분, 너무 오래 당신이 / etc / crontab을 파일 편집을 완료하고 저장 한로 그 후, 설정이되면 자동으로 crontab을 실행됩니다.
참고 : 리눅스의 crontab의 경우 자동으로 crontab을 메모리에 읽기 때문에,하지만, 어떤 이유로 또는 다른 유닉스 시스템, 우리가 등 / 분마다 crontab에 / 일상적인 문제를 한 번 다시 읽어 도움이 당신을 이렇게됩니다 / crontab을 한 후 당신은 / etc에 변경 사항이 즉시, 다음 있으며 crond 서비스를 다시 시작 실행하지 않을 수 있습니다.
/etc/rc.d/init.d/crond restart
4, 설명 및 실시 예 :
의 / etc / crontab을 파일의 내용을 살펴 보자 :
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * * root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
설정 명령 섹션 매개 변수 달과 주변 공유 사용자 매개 변수 설정
이 파일의 내용에서 알 수있는 바와 같이, 콘텐츠의 crontab -e 입력 파일은 거의 동일하지만, 아래의 여러 장소에서 다르다 :
MAILTO = 루트 :은 / etc / crontab을 파일 루틴 명령 오류가 발생이 필드 지정이 오류 메시지가 화면에 나에 대한 정보를 전달하는 표시? 루트가 클라이언트에서 수신 할 수 없기 때문에, 따라서 당신은 자신의 일반 사용자 계정으로 이메일을 사용할 수 있습니다. ,
/etc/cron.hourly 19 실행 부품 -n 01 * * * * 루트 좋은 : 실행 부분이 줄에 명령 # 후, 우리는 다섯 개 숫자는 루트 뒤에 찾아이 수준의 대표를 수행 할 수 있습니다 루트. 물론, 당신은 또한 다른 루트 ID를 변경하고 대표가 /etc/cron.hourly 다음에 실행 부분은 모든 실행 파일 디렉토리 (/etc/cron.hourly) 내에서, 각 시간 01분의 시스템은 루트로 실행 할 수있는 모든 파일의 다음 /etc/cron.hourly 디렉토리를 실행합니다. 이 시스템은 이미 암묵적으로 네 개의 디렉토리, 당신이 매일 직접을 /etc/cron.daily 기록 된 명령을 수행해야합니다, 프로그램은 crontab을 -e, 매우 편리를 사용할 필요가 없습니다.
참고 : 기본적으로,은 / etc / crontab을 지원하는 입력 모드 명령어 두 가지, 하나는 지시합니다 양식에 입력 바로, 디렉토리의 한 형태가 입력됩니다.
명령 양식
01 * * * * test mail -s test test < /home/test/test/test.txt
사용자는 테스트입니다, 시간당 명령 메일을 실행 ......
카탈로그 형태
*/5 * * * * root run-parts /root/runcron
A / 루트 / runcron 디렉토리를 구축, 실행 파일 디렉토리에 기록됩니다 5 분마다 한 번, 당신이 시스템은 5 분마다 한 번 디렉토리에있는 모든 실행 파일을 수행 할 수 있습니다 수행됩니다.
당신이 그것의 실행 - 부품의 역할을 알 수 있도록! 또한, 상기의 crontab -e 계획은 다중 사용자 레벨의 개념이 다르다. 일반적으로, 우리는 루트에 루틴 명령의 관점을 계획하고 있지만, 사용자가 프로그램의 구성원 인 표준화 수준을 사용할 수 있도록 루트는 항상의 경우 필요하지 않습니다.
각 프로세스가 동시에 시작하는 경우이 시간이 별도로 설정해야하므로, 다음 일정 시간에서, 시스템은 매우 바쁜 될 것입니다. 우리는이 작업을 수행 할 수 있습니다
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root ………… // 省略号代表命令
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root …………
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root …………
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root …………
주 사용하는 ","공백없이 분리 될 때. 이러한 방법으로, 당신은 5 분마다 서로 다른 시간을 위해 예약 된 흐름 작업 할 수 있습니다.
유닉스와 리눅스의 crontab이 실행되는주기적인 명령 설정되어, 인터넷은 많은 작업이 당신의 crontab을 사용하지 않는 경우, 다음 작업이 프로그램의 비교를 요구하는 상주 프로그램입니다,은 crontab 실행주기 설정됩니다 매우 일반적인 기술이다 높은, 스케줄러가 더 신뢰할 수있는, 실제 작업을 요청하는 것입니다, 당신의 프로그램이 다운 타임없이 24 시간 연중 무휴 시간입니다 요청, 프로그램의 90 %는 너무 많은 시간과 위의 두 가지 문제를 해결하기 위해 노력을 지출 할 필요가 없으며, 단지 라인에 파견 있으며 crond 안정성, 견고성에 있으며 crond하여 비즈니스 로직이 산업용 등급의 프로그램을 작성해야합니다, 그것은 의심의 여지해야한다.
5, crontab을 항목 쉽게
내가 작업을 설정하려는 가정, 데이터 동기화를 수행하는 모든 분,이 경로 동기화 스크립트 내가 이러한 구성에 다음 /home/blue/do/rsyncfile.sh 수있다, 파란색 사용자의 사용, 입력 단자
crontab -e
이 때, 화면이 작업을 편집 할 수있는 VI 편집기를 입력합니다! 각각의 작품은 그의 당 있음을 참고.
#分 时 日 月 周 |<==============任务的完整命令行
* * * * * /home/blue/do/rsyncfile.sh
기본적으로 /etc/cron.deny 그들에 포함되지 않은 사용자는, 그는 직접 루틴 명령 편집에 "의 crontab -e"를 발행 할 수 있습니다! 에 저장된 VI를 떠난 후 "WQ"다음 편집 완료 후 편집에 작품의 라인 입력을 VI 편집 화면으로 들어갑니다, 위에서 언급 한 것처럼 전체 과정!
우리는 데이터 동기화 스크립트를 실행하는 데 5 분마다 변경해야하는 경우 \ 다음 편집을 입력 동일한의 crontab -e를 사용합니다 :
*/5 * * * * /home/blue/do/rsyncfile.sh
서버가 문제가 될 경우, 언젠가는 거기에 우리가 데이터를 /home/blue/do/rsyncfile_day.sh입니다까지 스크립트를 가정하고 데이터를 입력해야하므로, 데이터의 동기 없지만, 일, 야간 피크 기간, 소수의 사용자, 낮은 피크, 우리는 데이터가 그래서 일반적으로 우리는 작업이 편집을 입력 한 후, 2시 데이터를 실행 동일한의 crontab -e를 사용하기 시작 수, 사업의 정상적인 과정에 영향을 미칠 것입니다, 특히 낮에는, 대역폭을 많이 걸릴합니다
0 2 1 4 * /home/blue/do/rsyncfile_day.sh
이러한 방법으로, 우리는 시작 스크립트 4 월 1 일 2:00의 데이터를 보완 시작합니다.
동기화 데이터, 인터넷은 그냥 가장 간단한 비즈니스 로직, 할 수있는 스케줄링 있으며 crond 쓰기,은 crontab의 매력을 볼 수있는 평범한 작업, 높은 신뢰성을 완료한다 추가 쓰기이 스케줄링 프로그램을 자신을 원하는 경우 작업은, 그것이 신뢰할 수 있고 안정적으로 달성하는 데 걸리는 많은 노력을 모른다.
도 6의 crontab 구문
crontab [-u username] [-l|-e|-r]
选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑
查询使用者目前的 crontab 内容:
crontab -l
*/5 * * * * /home/blue/do/rsyncfile.sh
0 2 1 4 * /home/blue/do/rsyncfile_day.sh
현재 사용자의 crontab을 비우기 :
crontab -r
crontab -l
no crontab for blue
현재 사용자의 crontab 특정 작업을 삭제하려면, 다음 편집기에의 crontab -e를 사용하고 해당 작업을 삭제합니다.
7, crontab을 제한
있는 /etc/cron.allow : 계정이 crontab을 기록하는데 이용 될 수있어서, 사용자가 crontab을 사용할 수 없습니다이 문서에있는 경우;
/etc/cron.deny :이 파일에 사용자들 사이에 기록되지 않은 경우, 당신은 crontab을 사용할 수, 기록의 crontab 계정을 사용하지 않습니다.
우선 순위에 따라서, /etc/cron.deny 우선 순위보다있는 /etc/cron.allow, 그리고 위의 판단은,이 두 문서는 그것을 제한하는 하나를 선택, 당신이 너무로 영향을 미치지 않도록, 캔을 유지하는 것이 좋습니다 자신의 상기 구성 결정 안에 일반적으로 시스템 기본은 그 사용자의 crontab 쓰기 /etc/cron.deny 그들, 계정 행을 실행할 수 있도록 싶지 않을 것이다, /etc/cron.deny을 예약되어 있습니다!
8,은 / etc / crontab을 구성 파일은 설명하기
이 시스템은, 우리가을 / etc / crontab을 파일을 편집해야합니다 일상적인 작업 인 경우의 crontab -e는 크론의 사용자를 위해 설계되었습니다.
그의 crontab의 crontab -e이 사실이 항목을 실행할 수는 / usr / 빈 / crontab을하지만은 / etc / crontab을하지만 루트로 파일을 편집해야합니다 무엇을 "일반 텍스트".
먼저 우리는 crontab 파일의 내용을 볼 필요가
cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
이 문서 우리는 거의 정확하게 모두 바로 컨텐츠의 crontab -e 발행합니다! 여러 장소는 동일하지 않습니다 있습니다
PATH = ... :
이 입력 검색 경로 실행 기어입니다! 기본 경로 구성을 사용하는 것은 매우 충분했다!
17 * * * * root cd / && run-parts --report /etc/cron.hourly:
즉, 시간별, 일별, 주별 및 월별, 각각 네 개의 정의 사전 구성 작업 내부의 / etc / crontab을이 작업을 수행합니다! 하지만 다섯 필드 액세스 뒤에 명령하지만, 왜 "실행 명령의 문자열 뒤에 신원"입니다 새 열에서! 이것은 사용자의 crontab -e와 동일하지 않습니다. 사용자는 crontab을 자신의 정체성을 지정할 필요가 없습니다,하지만 당신이 원하는 과정은 / etc / crontab을 그것의 ID를 지정하기 때문에! 위의 표의 내용은, 시스템 기본 루틴 작업은 루트로 수행됩니다.
그래서 명령의 문자열이 뒤에 무엇인가? 당신은 "실행 부분이있는"보고 검색 할 수 있습니다, 사실, 그것은 bash는 스크립트가 그것입니다! 당신이보기에는 / usr / 빈 / 실행-부분으로 바로 이동하는 경우,이 명령의 모든 파일을 잡기 위해 실행하는 "디렉토리"다음에 할 것입니다 발견 할 것이다! 그 말 "도움에 시간 이니셔티브 당 시스템을 원하는 경우 명령, 명령 작성된 스크립트를 실행하고 /etc/cron.hourly/ 수있는 디렉토리에 파일을 배치"에 있다고!
이제 시스템이 아직 일상적인 작업 일정의 자신의 기본 무리입니다 방법을 알고? 당신이 발행 된 경우에는 "을 /etc/cron.daily 것이다"당신이 파일들을 볼 수 있습니다, 이러한 파일은 시스템에서 제공하는 스크립트이며, 스크립트의 더미는 아침에 6시 25분 매일 실행이 시작됩니다!
당신은 / etc / crontab을에서에 다음 줄을 쓸 수 있습니다, 당신은 시스템이 디렉토리에서 실행 할 수있는 모든 파일에 2 분마다 실행할 수 있습니다 그래서, 디렉토리를 만들고 싶어 가정하자 :
*/2 * * * * root run-parts /etc/cron.min
물론,이 디렉토리를 /etc/cron.min 것은 아의 존재의 필요가! 나는 무엇 "프로그램"을 실행해야하고 그것은 디렉토리를 사용할 필요가없는 경우? 무엇을 할까? 네트워크 트래픽이 감지되면 예를 들어, 우리는 분석을 감지 할 수 있도록 노력하겠습니다 5 분마다 한 번, 쓰기 :
*/5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg
방법! 일상적인 명령을 작성하는 것은 매우 간단합니다! 당신은 시스템 관리자 및 사용자의 작업이 일상적인 시스템 유지 보수 작업을 직접 등 / 수정할 때 경우 /이 문서가 될 수 crontab에! 그리고 편리하고 쉽게 관리 할 수 있습니다!
9, crontab을 원칙
사용자가 작업 일정을 만들 crontab 명령을 사용하면 작업에 기록됩니다은 / var / 스풀 / cron을 / 들어갔다,이 오의 식별과 계좌 번호입니다! 예를 들어, 파란색을 사용 crontab을 한 후, 그의 작품은 / var / spool / cron을 / 블루 바둑 내부에 기록 될 것입니다! 단,하지 실행 크론을 발생합니다 때문에 구문 오류에 입력이 될 수 있기 때문에 직접 파일을 편집 VI를 사용하지 마십시오! 또한, 모든 작업을 실행하는 크론은 / var에에 기록됩니다 / 크론 항목이있는, 그래서 당신은 리눅스가 트로이 목마를 이식 유무를 알 수없는 / 경우 로그, 또한 검색 할 수는 / var / log / 크론 항목!
가장 낮은 검출 한계에 있으며 crond 서비스는 그래서, "분"은 "크론 한 번 읽는 것을 / etc / crontab을하고는 / var / 스풀 / 크론 데이터 내용 매분마다, 내부"너무 오래 완료대로는 / etc / crontab에이 편집 파일 및 그의 가게는, 다음 크론 구성이 자동으로 실행됩니다!
참고 : 그래서,은 crontab의 바닥에서 리눅스 자동으로 우리가 / 회 분의 등 / crontab을 일상적인 문제를 다시 읽어 도움이되지만 몇 가지 이유로 인해 crontab을 다른 유닉스 시스템, 그들의 메모리에 읽기 작업이 완료 수정을 / etc / crontab을이, 즉시 실행되지 않을 수 있습니다 후 다시 시작이 시간이이 서비스를 있으며 crond! "/Etc/init.d/crond 다시 시작"
10의 crontab 형식을 설명하는
각 작업 형식 (각 행), 여섯 개 개의 필드를 의미하는 여섯 개 개의 필드와 모두는 다음과 같습니다
의미를 대신하여 | 분 | 시간 | 날짜 | 월 | 저우 | 명령 |
---|---|---|---|---|---|---|
디지털 범위 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 그래 아 주문 |
더 흥미로운는 오 "주"입니다! 주 번호 0 또는 7, "일요일"라는 뜻을 나타냅니다! 또한, 아마도 이러한에서 일부 보조 문자는있다 :
특수 문자는 의미를 나타냅니다
언제든지 가능 의미를 (별표)를 나타냅니다! 예를 들어, 패러다임 내에서 일, 월, 주이라고 "몇 월 12:00 실행 추적하기 위해 몇 무슨 요일에 상관없이"의 의미를 대신하여!
쉼표 (,)가 분리 된 평균 시간을 나타낸다. 예를 들어, 작업은 6시 3:00이 될 때 발행하는 것입니다 :
0 3,6가 * * * 명령
시간 매개 변수는 여전히 다섯 개의 열이 있지만 두 번째 열은 3,6, 그리고 3 개 대표 6 적용 할 수 있습니다!
- 제 (마이너스)는, 예를 들면, 작업 12시부터 8시까지 사이 시간당 20 분이며, 일정 기간을 나타내는
20 ~ 12 * * * 명령은
신중에 두 번째 열을 표시 8-12 오! 의미를 대신하여 적용 8,9,10,11,12!
/ N (슬래쉬) N "은 모든 N 유닛 간격"수단의 수를 나타내는 것으로, 예를 들면, 다음 5 분마다 한번 :
/ 5 * * * 명령이
매우 간단! 으로 *와 일치 / 5도 0-59 / 5, 같은 의미로 쓸 수있다!
태양과 주 공존 할 수없는 달 (11),
"당신은 하나 태양과 달 단위로 주간 사이클했다 할 수 있지만이 작업 모드 '를 위해 일주일의 날짜와 하루'를 사용할 수 없습니다."참고 또 다른 점이다 당신이 이러한 작업 일정을 기록 할 수있는이 수단 :
30 12 11 9 5 root echo "just test" <==这是错误的写法
당신은 그것을 9/11 금요일이었고,이 작업을 수행 할 생각이나 했 겠어요, 좌절은 시스템이 9 월 11 일 각각 이런 식으로 원래 계획 결정 매주 금요일, 또는 매년을 할 수 있다는 것이다 동일하지 - 그래서,이 장소에 지불 관심을 가지고! 위의 표현은 옳지 않다!