linux定時任務及練習

来源:https://www.cnblogs.com/zeq912/archive/2018/08/09/9451501.html
-Advertisement-
Play Games

第1章 定時任務 1.1 什麼是定時任務 相當於鬧鐘每天叫你起床 設定一個時間去做某件事 1.2 系統定時任務 [root@zeq ~]# ll -d /etc/cron* drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.d drwxr-xr- ...


第1章 定時任務

1.1 什麼是定時任務

相當於鬧鐘每天叫你起床

設定一個時間去做某件事

1.2 系統定時任務

[root@zeq ~]# ll -d /etc/cron*

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.d 

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.daily    系統定時任務每天運行這個目錄里的內容

drwxr-xr-x. 2 root root 4096 Jul 10 18:23 /etc/cron.hourly   系統定時任務每小時運行這個目錄里的內容

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.monthly  系統定時任務每月運行這個目錄里的內容

drwxr-xr-x. 2 root root 4096 Sep 27  2011 /etc/cron.weekly   系統定時任務每周運行這個目錄里的內容

-rw-------. 1 root root    0 Aug 24  2016 /etc/cron.deny     系統定時任務的黑名單

-rw-r--r--. 1 root root  457 Sep 27  2011 /etc/crontab       系統定時任務的配置文件之一
系統定時任務日誌切割

[root@zeq ~]# ll /var/log/messages* /var/log/secure*

-rw-------  1 root root   1132 Aug  7 15:34 /var/log/messages

-rw-------. 1 root root 110667 Jul 12 07:11 /var/log/messages-20180520

-rw-------. 1 root root  98541 Jul 30 12:29 /var/log/messages-20180730

-rw-------  1 root root   1273 Jul 31 03:39 /var/log/messages-20180807

-rw-------  1 root root   6131 Aug  8 17:20 /var/log/secure

-rw-------. 1 root root  17996 May 20 03:30 /var/log/secure-20180520

-rw-------. 1 root root  46696 Jul 30 13:06 /var/log/secure-20180730

-rw-------  1 root root   5764 Aug  7 09:10 /var/log/secure-20180807

 

1.3 用戶的定時任務

crontab -l 查看用戶的定時任務

crontab -e 編輯用戶的定時任務

/var/spool/cron/root   root用戶的定時任務

crontab -l  =  cat /var/spool/cron/root

crontab -e  =  vi /var/spool/cron/root

1.3.1 為什麼使用crontab

1、 有語法檢查功能

2、 方便

1.3.2 檢查定時任務是否運行

定時任務服務 crond

方法1

[root@zeq ~]# /etc/init.d/crond status

crond (pid  1572) is running...

方法2

[root@zeq ~]# ps -ef |grep crond

root       1572      1  0 Aug07 ?        00:00:00 crond

root      27470  26990  0 17:30 pts/2    00:00:00 grep --color crond

1.3.3 查看crond是否開機自啟動

[root@zeq ~]# chkconfig |grep crond

crond          0:off   1:off   2:on    3:on    4:on    5:on    6:off

1.4 定時任務的相關目錄

/etc/spool/cron   定時任務的配置文件

/var/log/cron     定時任務的日誌文件

/etc/cron.deny    定時任務的黑名單

1.5 定時任務基本格式

分時日月周

註意:周幾和日期不能同時使用 如:2020年2月28星期六

例:

每天的上午8點30分,來學校上車(go to school)

30 08 * * * go to school 

每天晚上12點準時,回家自己開車(go to bed)

00  0 * * *   go to bed

1.6 定時任務中常用符號

*     每

*/n   每隔n久

-     幾點到幾點

,     分割

1.7 定時任務測試

1、命令

[root@zeq ~]# echo  zeq >/tmp/name.log

[root@zeq ~]# cat /tmp/name.log

zeq

2、書寫定時任務

[root@zeq ~]# crontab -e

#print name zhangenqing at 2018.xx.xx

* * * * * echo zeq >> /tmp/name.log

查看定時任務

[root@zeq ~]# crontab -l

#print name zhangenqing at 2018.xx.xx

* * * * * echo zeq >> /tmp/name.log

3、查看定時任務日誌

[root@zeq ~]# tail -3 /var/log/cron

Aug  8 19:36:23 oldboy50 crontab[27563]: (root) END EDIT (root)

Aug  8 19:37:01 oldboy50 crond[1572]: (root) RELOAD (/var/spool/cron/root)

Aug  8 19:37:01 oldboy50 CROND[27572]: (root) CMD (echo zeq >> /tmp/name.log)

4、檢查文件內容

[root@zeq ~]# cat /tmp/name.log

zeq

zeq

 

1.8 定時任務書寫流程

1.8.1 第一個裡程碑

命令行測試,把你的名字顯示到文件中

1.8.2 第二個裡程碑

把命令放到腳本中

1.8.3 第三個裡程碑

測試腳本是否可以使用

1.8.4 第四個裡程碑

書寫定時任務

  1. 每分鐘執行
  2. 改為需要的時間

1.8.5 第五個裡程碑

檢查結果

  1. 查看定時任務的日誌
  2. 查看命令是否執行成功

 

第2章 定時任務練習

2.1 每天晚上12點打包備份/etc目錄到/tmp下麵 腳本

2.1.1 命令

[root@zeq ~]# tar zcf  /tmp/etc-`date +%F_%T`.tar.gz  /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@zeq ~]# ll /tmp/

total 9528

-rw-r--r-- 1 root root 9752749 Aug  9 15:26 etc-2018-08-09_15:26:26.tar.gz

2.1.2 書寫腳本

[root@zeq ~]# cat /server/scripts/bak-etc.sh

tar zcf  /tmp/etc-`date +%F_%T`.tar.gz  /etc/

測試腳本 [root@zeq
~]# sh /server/scripts/bak-etc.sh tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets [root@zeq ~]# ll /tmp/ total 19056 -rw-r--r-- 1 root root 9752749 Aug 9 15:26 etc-2018-08-09_15:26:26.tar.gz -rw-r--r-- 1 root root 9752749 Aug 9 15:29 etc-2018-08-09_15:29:23.tar.gz

 

 

2.1.3 書寫定時任務

[root@zeq ~]# crontab  -e

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

查看定時任務內容

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

[root@zeq ~]# ll /tmp/

total 28584

-rw-r--r-- 1 root root 9752749 Aug  9 15:26 etc-2018-08-09_15:26:26.tar.gz

-rw-r--r-- 1 root root 9752749 Aug  9 15:29 etc-2018-08-09_15:29:23.tar.gz

-rw-r--r-- 1 root root 9752749 Aug  9 15:41 etc-2018-08-09_15:41:42.tar.gz

 

 

2.1.4 根據要求的時間修改定時任務時間

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

2.1.5 定時任務中-命令或腳本結果(正確及錯誤)定向

到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/zeq.txt 2>&1

2.2 企業案列

如果定時任務規則結尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易導致硬碟inode空間被占滿,從而系統服務不正常。

2.2.1 定時任務不斷給你發送郵件

You have new mail in /var/spool/mail/root

2.2.2 郵件軟體關閉 , 定時任務不斷給你發送郵件 存放在郵件的臨時目錄 等待發送

inode用光了 定時任務書寫不規範導致的

2.3 每兩個小時打包備份 /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig 備份到/backup目錄

書寫腳本

[root@zeq ~]# cat /server/scripts/bak-conf.sh

tar zchf  /backup/conf-`date +%F_%T`.tar.gz   /etc/rc.local  /etc/hosts /etc/fstab  /etc/sysconfig/

書寫定時任務

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

00 */2 * * * sh  /server/scripts/bak-conf.sh >/dev/null 2>&1

2.4 每天晚上12點打包備份/etc/目錄 備份到 /backup下麵  備份到/backup/10.0.0.200

2.4.1 查看ip

[root@zeq ~]# hostname -I

10.0.0.201

2.4.2 修改變數ip

[root@zeq ~]# ip=`hostname -I|awk '{print $1}'`

2.4.3 查看變數

[root@zeq ~]# echo $ip

10.0.0.201

2.4.4 測試命令

創建ip目錄

[root@zeq ~]# mkdir -p /backup/$ip

[root@zeq ~]# ll /backup/

total 136

drwxr-xr-x  2 root root  4096 Aug  9 16:20 10.0.0.201

-rw-r--r--  1 root root 61485 Aug  9 15:56 conf-2018-08-09_15:56:52.tar.gz

-rw-r--r--  1 root root 61485 Aug  9 16:00 conf-2018-08-09_16:00:01.tar.gz

-rw-r--r--. 1 root root   609 Jul 12 07:49 conf.tar.gz

測試命令

[root@zeq ~]# tar zcf /backup/$ip/etc-`date  +%F_%T`.tar.gz   /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@zeq ~]# ll /backup/10.0.0.201/

total 9528

-rw-r--r-- 1 root root 9752749 Aug  9 16:21 etc-2018-08-09_16:21:47.tar.gz
 

2.4.5 書寫腳本

[root@zeq ~]# cat /server/scripts/bak-etc-adv.sh

ip=`hostname -I|awk '{print $1}'`

mkdir -p /backup/$ip

tar zcf /backup/$ip/etc-`date  +%F_%T`.tar.gz   /etc/

2.4.6 書寫定時任務

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

00 */2 * * * sh  /server/scripts/bak-conf.sh >/dev/null 2>&1

00 00 * * * sh /server/scripts/bak-etc-adv.sh >/dev/null 2>&1

2.5 sh -x 顯示腳本執行過程

以+開頭的行 表示執行過程

不是以+開頭的行 顯示/輸出

[root@zeq ~]# sh -x  /server/scripts/bak-etc.sh

++ date +%F_%T

+ tar zcf /tmp/etc-2018-08-09_16:29:34.tar.gz /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ASP.NET MVC 是微軟官方提供的以MVC模式為基礎的ASP.NET Web應用程式(Web Application)框架,它由Castle的MonoRail而來。 MVC 編程模式 MVC 是三種 ASP.NET 編程模式中的一種。 MVC 是一種使用 MVC(Model View Cont ...
  • 在開發中有時會用到Request.Params["id"]來獲取參數,那麼到底是從什麼地方接收參數呢? 一般情況下,有三種方式進行參數傳遞1、GET 方式,通過url傳遞,如?id=2、POST方式,通過Form傳遞3、Cookie方式 此處要用[]!!! 對於GET方式傳遞的參數,我們使用Requ ...
  • 說明 最近用到了 Paypal 支付功能,英語一般般的我也不得不硬著頭皮踩一踩這樣的坑。經過近乎半個月的作,終於實現了簡單的支付功能,那麼首先就說說使用 Paypal 必定要知道的幾點(當前日期 2018年08月07日): 1. 你應該知道 Paypal 支付功能是支持銀聯卡的,但是不支持中國買家賬 ...
  • 分享一個基於Gecko內核的簡單瀏覽器實現過程。 項目需要需要開發一個簡單瀏覽器,由於被訪問的網頁中有大量Apng做的動畫,使用IE內核的webbrowser不能播放,使用基於WebKit和Cefsharp試了一下,播放Apng動畫也有問題。 順便分享一下各個項目地址: CefSharp:https ...
  • 首先 先在自己的當前主機打開git bash ssh-keygen 生成密鑰對 (預設就好,我自己是一直摁著回車的) cat ~/.ssh/id_rsa.pub 查看生成好的公鑰,並複製好 打開你遠端伺服器的terminal 或者用git bash連接 vim ~/.ssh/authorized_k ...
  • 1.python軟體資源下載 1.1 打開python官網地址:https://www.python.org 1.2 根據自己電腦的設置選擇下載合適的python3.6.2 1.3 此處選擇windows10,64位的Windows x86-64 executable installer,網頁上點擊 ...
  • 1、 串口的基本概念 在STM32的參考手冊中,串口被描述成通用同步非同步收發器(USART),它提供了一種靈活的方法與使用工業標準NRZ非同步串列數據格式的外部設備之間進行全雙工數據交換。USART利用分數波特率發生器提供寬範圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯網 ...
  • 1、TIMER輸出PWM基本概念 脈衝寬度調製(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調製,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單一點,就是對脈衝寬度的控制。一般用來控制步進電機的速度等等。 STM32的定時器除了TIM6和T ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...