の自動実行機能(で、crontabの)スケジュールのLinux
コンセプト
Linuxシステムでは、仕事の手配を進めるには二つの方法を提供します
-
一度だけ実行で
-
crontabファイルは定期的に繰り返さ
これら2つのツールを適用することにより、私たちは、オペレーティング・システム・レベルで自動実行機能をタイミング達成することができます
実験環境
操作系统: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時01分 | 次の実行1時01分 |
HH:MM YYYY-MM-DD | 午前1時00 2017年9月8日 | 特定の時間実行日を指定します |
HH:MM [AM / PM] +番号[分/時間/日/週] | 今+ 3日 | ある時点の後いくつかの時間に置くために |
例で
テストSHを作成し、権限を変更
[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 / log /のcronに保存されます
この機能は、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のプログラムを削除します
あなたは、1つのまたは2つのプログラムを削除する必要がある場合は、直接使用の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サービスを再起動する必要があり、すぐには反映されません。