자동 실행 기능 (AT crontab에서) 예약 리눅스
개념
리눅스 시스템에서는 작업 준비를 진행하는 두 가지 방법을 제공합니다
-
만에 한 번 수행
-
crontab을 주기적으로 반복
이 두 가지 도구를 적용하여 운영 체제 수준에서 자동 실행 기능 타이밍 달성하기 위해 우리를 수
실험 환경
操作系统:CentOS Linux release 7.3.1611 (Core)
IP: 192.168.230.134
소개에
명령에서, 한 번 실행됩니다
이 기능은 ATD 도구를 사용하여, 당신은 확인해야하는 활성 상태
[root@localhost ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-09-07 18:18:18 CST; 4h 2min ago
Main PID: 921 (atd)
CGroup: /system.slice/atd.service
└─921 /usr/sbin/atd -f
Sep 07 18:18:18 localhost.localdomain systemd[1]: Started Job spooling tools.
Sep 07 18:18:18 localhost.localdomain systemd[1]: Starting Job spooling tools...
사용에
다음과 같이 일반적인 명령은
[root@localhost ~]# at -help
Usage: at [-V] [-q x] [-f file] [-mMlbv] timespec ...
at [-V] [-q x] [-f file] [-mMlbv] -t time
at -c job ...
atq [-V] [-q x]
at [ -rd ] job ...
atrm [-V] job ... batch
시간 형식 :
체재 | 예 | 의미 |
---|---|---|
HH : MM | 1시 1분 | 다음 실행 1시 1분 |
HH : MM의 YYYY-MM-DD | 1시 2017년 9월 8일 | 특정 시간에 실행 날짜를 지정 |
HH : MM [오전 / 오후] + 숫자 [분 / 시간 / 일 / 주] | 이제 + 삼일 | 특정 시점 이후 시간에 넣어 |
에서 예
테스트 쉬를 만들고 권한을 수정
[root@localhost ~]# vim test.sh
echo '豆姐威武'
[root@localhost ~]# chmod 755 test.sh [root@localhost ~]# ./test.sh 豆姐威武
현재 시간보기
[root@localhost ~]# date
Thu Sep 7 23:19:51 CST 2017
설정 test.sh 23시 21분 Ctrl 키와 명령 관심을 실행 명령에서 사용 + D를
[root@localhost ~]# at 23:21
at> /root/test.sh
at> <EOT>
job 5 at Thu Sep 7 23:21:00 2017
분을 기다린 후, 시간과 설정 시간을 볼 수 정보 시스템을 받기
You have new mail in /var/spool/mail/root
[root@localhost ~]# date
Thu Sep 7 23:21:04 CST 2017
보기 정보 시스템에서 수신
[root@localhost ~]# cat /var/spool/mail/root
From root@localhost.localdomain Thu Sep 7 23:21:00 2017 Return-Path: <root@localhost.localdomain> X-Original-To: root Delivered-To: root@localhost.localdomain Received: by localhost.localdomain (Postfix, from userid 0) id A139B243D2; Thu, 7 Sep 2017 23:21:00 +0800 (CST) Subject: Output from your job 5 To: root@localhost.localdomain Message-Id: <20170907152100.A139B243D2@localhost.localdomain> Date: Thu, 7 Sep 2017 23:21:00 +0800 (CST) From: root@localhost.localdomain (root) 豆姐威武
스크립트의 실제적인 사본 :
오프 시간
[root@localhost ~]# at 18:00 2017-09-10
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT> job 6 at Sun Sep 10 18:00:00 2017
그것은 2017년 9월 7일 18:00 자동으로 종료됩니다
에서 명령을 취소
명령에서 현재보기
명령 ATQ를 사용하여
[root@localhost ~]# atq
6 Sun Sep 10 18:00:00 2017 a root
명령 취소
명령으로 atrm을 사용하여
[root@localhost ~]# atrm 6
crontab을 소개
crontab을 명령은 구성에 따라 주기적으로 수행
그의 기록은 / var에 / 로그 / 크론에 저장됩니다
이 기능은 있으며 crond 서비스를, 정상 상태를 보장 할 필요가 필요
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-09-07 18:18:18 CST; 5h 51min ago Main PID: 920 (crond) CGroup: /system.slice/crond.service └─920 /usr/sbin/crond -n Sep 07 18:18:18 localhost.localdomain systemd[1]: Started Command Scheduler. Sep 07 18:18:18 localhost.localdomain systemd[1]: Starting Command Scheduler... Sep 07 18:18:18 localhost.localdomain crond[920]: (CRON) INFO (RANDOM_DELAY will be ...) Sep 07 18:18:19 localhost.localdomain crond[920]: (CRON) INFO (running with inotify ...) Hint: Some lines were ellipsized, use -l to show in full.
사용의 crontab
다음과 같이 일반적인 명령은 다음과 같습니다
[root@localhost ~]# crontab -help
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab -r delete user's crontab -i prompt before deleting -n <host> set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x <mask> enable debugging
시간 형식 :
* * * * *
- - - - -
| | | | |
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) | | | +---------- month (1 - 12) | | +--------------- day of month (1 - 31) | +-------------------- hour (0 - 23) +------------------------- min (0 - 59)
crontab을 예
또는 test.sh 실험을하기 전에 만들어 사용하십시오
새로운 계획의 crontab 명령을 사용하는 방법
현재 시간을 보려면
[root@localhost ~]# date
Thu Sep 7 23:52:12 CST 2017
23시 55분 매일 스크립트 실행으로 설정 계획을 작성 /root/test.sh
[root@localhost ~]# crontab -e
55 23 * * * /root/test.sh
no crontab for root - using an empty one crontab: installing new crontab
현재 일정보기 :
[root@localhost ~]# crontab -l
55 23 * * * /root/test.sh
2 분 대기 :
[root@localhost ~]# date
Thu Sep 7 23:55:07 CST 2017 You have new mail in /var/spool/mail/root
보기 기록 :
[root@localhost ~]# cat /var/spool/mail/root
From root@localhost.localdomain Thu Sep 7 23:55:01 2017 Return-Path: <root@localhost.localdomain> X-Original-To: root Delivered-To: root@localhost.localdomain Received: by localhost.localdomain (Postfix, from userid 0) id 45D1028EB7; Thu, 7 Sep 2017 23:55:01 +0800 (CST) From: "(Cron Daemon)" <root@localhost.localdomain> To: root@localhost.localdomain Subject: Cron <root@localhost> /root/test.sh Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-Cron-Env: <XDG_SESSION_ID=52> X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0> X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Message-Id: <20170907155501.45D1028EB7@localhost.localdomain> Date: Thu, 7 Sep 2017 23:55:01 +0800 (CST) 豆姐威武
crontab을 프로그램 제거
당신은 하나 개 또는 두 개의 프로그램을 제거해야하는 경우, 직접 사용의 crontab -e는 편집 삭제 입력
-r이 할 수있는, 당신은 계획을 비우려면
[root@localhost ~]# crontab -l
55 23 * * * /root/test.sh [root@localhost ~]# crontab -r [root@localhost ~]# crontab -l no crontab for root
crontab을 보충
또한 계획 스크립트를 달성하기 위해 / etc / crontab 파일을 편집 할 수 있습니다
[root@localhost ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 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
하지만 가끔은 이런 식으로 당신이 있으며 crond 서비스를 다시 시작해야 즉시 적용되지 않습니다