Linux下計劃任務神器-Crontab

作為系統運維人員都清楚,在Linux下定義重復性的任務,我們一般會采用crontab來進行:crontab這個指令所設置的工作將會循環的一直進行下去!可循環的時間為分鐘、小時、每日、每月、每周。

crontab計劃任務:

1)常見用法:
crontab命令的作用和用法如下:
描述:為每個用戶維護周期性的計劃任務文件
用法:crontab [-u 用戶][-l|-r|-e]

 -u <user>  指定某個用戶的計劃任務(只有root用戶才有這個權限)
 -e         編輯用戶的計劃任務
 -l         列出用戶的計劃任務
 -r         刪除用戶的計劃任務
 -i         刪除時進行交互式操作
 
 用戶的cron計劃任務文件格式含義如下:
 *     *     *     *     *    指令
 分    時    日    月    周  指令
 0-59  0-24  1-31  1-12  0-7


如果需要指定時間段:
 a:可以使用橫杠(-)表示一段連續的時間
 b:使用逗號(,)表示若個不連續的時間
 c:使用星號(*)表示所有的時間,使用除號(/)表示間隔時間
    

2)crontab的常規用法:
# 列出用戶root的計劃任務

[root@localhost ~]# crontab -l
*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1

# 列出用戶wanlong的計劃任務

[root@localhost ~]# crontab -l -u wanlong 
* */5 * * * /usr/bin/ping 127.0.0.1 >/dev/null

# 計劃任務的配置文件是保存在/var/spool/cron/下,只要有計劃任務的用戶都對應有配置文件

[root@localhost ~]# 
cd /var/spool/cron/
[root@localhost cron]# ls
root  wanlong
[root@localhost cron]# cat wanlong 
* */5 * * * /usr/bin/ping 127.0.0.1 >/dev/null
[root@localhost cron]# cat root 
*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1
說明:可以發現/var/spool/cron/wanlong與crontab -l -u wanlong顯示的結果是一直的,然后我們測試下直接修改配置文件,看計劃任務是否生效
[root@localhost cron]# echo 
"* */2 * * * /usr/bin/ping 127.0.0.1 >/dev/null"
 >>/var/spool/cron/root
[root@localhost cron]# crontab -l
*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1
* */2 * * * /usr/bin/ping 127.0.0.1 >/dev/null
說明:以上可知,直接修改配置文件,仍舊生效。

3)如何實現秒級別crontab

方法1:使用sleep加間隔時間的模式

# crontab -l
* * * * * for min in 0 1 2;do echo "hi";sleep 20;done

方法2:轉換成腳本進行

#!/bin/bash
#created by molewan
while:
do 
    /test.sh 
sleep 7
done
# chmod 755 seconds.sh
# nohup bash seconds.sh &

補充知識:
sleep用法格式:
 sleep NUMBER[SUFFIX]
 SUFFIX值可以為s(秒,默認值)、m(分鐘)、h(小時)、d(天數)

4)計劃任務如何每7分鐘運行(分鐘取值范圍0-59)

不能被60整除的,不能精確做到真正運行

錯誤做法: */7 * * * *

推薦的方法:

#!/bin/bash
#created by molewan
while:
do
 /test.sh
sleep 7
done

5)練習:
1、每4小時備份一次/etc目錄至/backup目錄中,保存文件名稱格式為“etc-yyyy-mm-dd-HH.tar.xz”

# crontab -l
* */4 * * * tar -cJPf /backup/etc-$(date +%F-%k).tar.xz /etc >/dev/null 2>&1

2、每周2,4,7備份/var/log/messages文件至/logs目錄中,文件名為“messages-yyyymmdd”;

# crontab -l
* * * * 2,4,7 tar -cf /logs/messages-$(date +%y%m%d)

3、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加/tmp/meminfo.txt文件中

[root@zabbix ~]# egrep -i "^(S|M)" /proc/meminfoMem
Total:        5947112 kB
MemFree:         1669468 kB
MemAvailable:    2726264 kB
SwapCached:       116600 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        3288708 kB
Mapped:           117324 kB
Shmem:            285240 kB
Slab:             188640 kB
SReclaimable:     133080 kB
SUnreclaim:        55560 kB
# crontab -l
* */2 * * * egrep -i "^(S|M)" /proc/meminfo>>/tmp/meminfo.txt

4、工作日時間內,每小時執行一次“ip addr show”

* */1 * * 1-5 /usr/sbin/ip addr show

6)其它注意事項:
a、在 Linux 下面的 crontab 會自動的幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項;
b、但是某些原因或者是其他的 Unix 系統中, 由于 crontab 是讀到內存當中的,所以在你修改完 /etc/crontab 之后,可能并不會馬上執行,這個時候請重新啟動crond服務 ;
c、周與日月的計劃任務不可同時并存

重啟crond服務:

CentOS7下重啟crond服務
[root@zabbix ~]# systemctl restart crond.service
[root@zabbix ~]# echo $?0
執行前先看下,是否有計劃任務正在執行
CentOS6下重啟crond服務
[root@Openstack-01 ~]# /etc/init.d/crond restart
[root@Openstack-01 ~]# echo $?0


原創文章,作者:Net21-冰凍vs西瓜,如若轉載,請注明出處:http://www.www58058.com/25107

(0)
Net21-冰凍vs西瓜Net21-冰凍vs西瓜
上一篇 2016-07-22
下一篇 2016-07-22

相關推薦

  • 開班第一天,新獲得的技能

    新接觸命令 lscpu 顯示CPU信息 gedit 文件名 類似于記事本 ** 注意 這個命令適用于圖形界面。 cat /proc/partition 顯示分區信息 cat /proc/meminfo 顯示內存大小 cat /proc/swaps 顯示虛擬內存 cat …

    Linux干貨 2017-02-17
  • 一. Linux 基礎

    一。linux的歷史 二。虛擬機中安裝linux操作系統。 三?;A命令的使用。

    2017-08-29
  • raid各級別特性

      簡介 RAID是一個我們經常能見到的名詞。但卻因為很少能在實際環境中體驗,所以很難對其原理 能有很清楚的認識和掌握。本文將對RAID技術進行介紹和總結,以期能盡量闡明其概念。 RAID全稱為獨立磁盤冗余陣列(Rdeundant Array of Independent Disks),基本思想就是把 多個相對便宜的硬盤組合起來,成為一個硬盤陣列組…

    Linux干貨 2016-01-19
  • BT雷人的程序語言

    這個世界從來都不會缺少另類的東西,人類自然世界如此,計算機世界也一樣。編程語言方面,看過本站《6個變態的C語言Hello World程序》的朋友們一定對BT和另類不會陌生,但那都是些小兒科,真正的BT和另類要是從語言級上來完成。讓我們來看看其中一個比較另類的語言BrainFuck。看到這個程序語言的名字,請不要以為這是一個搞笑的語言,這是一個“嚴肅事情”,請…

    Linux干貨 2015-04-03
  • LAMP基于RPM包實現(httpd與php以fastcgi方式結合) 2

    概述:     承接上篇,本篇為介紹下利用rpm包,實現LAMP組合,其中httpd和php的結合方式為fastcgi,也就是php運行為獨立的服務,監聽的某個套接字上,接受請求,提供服務     包括LAMP安裝過程(http、php-fpm、mysql-server、php-…

    Linux干貨 2016-10-15
  • Linux中命令的分類,hash緩存表與別名

        命令的分類:     在Linnux中,平常工作用的是字符界面。Linux輸入命令后,shell接收命令通過系統調用把命令送入內核中執行。    *shell中的可執行命令分為兩類        1.內部命令:為shell自帶命令,利用某種形式在開機后…

    Linux干貨 2017-07-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-22 11:18

    寫的很好,排版還可以在漂亮一點,crontab有些地方寫的不對,加油

欧美性久久久久