成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux計劃任務:聽撫琴煮酒分享Crontab使用心得

原創
運維 系統運維
雖然關于 Crontab 的介紹到處都是,詳細讀了一遍這個詞條,收獲還是有的。你用過Crontab嗎?你對Crontab了解嗎?你知道Crontab的一些特別的用途嗎?在本文中,撫琴煮酒將向大家介紹自己多年來使用Crontab的一些心得。

【51CTO獨家特稿】你用過Crontab嗎?你對Crontab了解嗎?你知道如何以秒為級別執行任務嗎?你知道怎樣讓Crontab執行PHP腳本嗎?你知道Crontab的一些特別的用途嗎?在本文中,撫琴煮酒將向大家介紹自己多年來使用Crontab的一些心得。

作者:撫琴煮酒(Andrew.Yu)

職業:Linux/unix系統工程師、項目實施工程師

服務器系統:64Bit CentOS 5.5

雖然關于 Crontab 的介紹到處都是,詳細讀了一遍這個詞條,收獲還是有的。Crontab 這個名字來自 “chronos”,一個古希臘語, “時間”的意思(以下用法在生產環境下的服務器非常有用,撫琴煮酒強烈推薦);關于crontab的基礎用法和語法我就不推薦了,google和51cto上到處都是,我說的是一些進階技巧,里面也有可能是不知道的;Shell腳本均取自于線上服務器。我安裝的服務器一般都是采用最小化安裝,安裝以后就發現啟動cron的管理服務crond默認就是啟動的,

service crond status
crond (pid 3444) is running...

手快的小伙可用chkconfig crond on讓其在level3和level5自動運行。

cron把命令行保存在crontab(cron table)文件里,這個文件通常在 /etc 目錄下。每個系統用戶都可以有自己的crontab(在 /var/spool/cron/ 下)。要查看當前用戶的crontab,輸入

crontab -l

要編輯crontab,輸入

crontab -e

要刪除crontab,輸入

crontab -r

如當前是root身份,要查看/編輯/刪除/某用戶的crontab,只需在相應的命令后加上 -u USERNAME(如 crontab -e -u USERNAME)即可。crontab文件的默認編輯器是vi,可以輸入

export VISUAL='editor' 

更改默認編輯器。

cron服務每分鐘不僅要讀一次 /var/spool/cron 目錄內的所有文件,還需要讀一次 /etc/crontab 文件。配置這個文件也能讓cron執行任務。使用crontab命令是對用戶級任務的配置,而編輯 /etc/crontab 文件是對系統級任務的配置。

撫琴煮酒定義的crontab語法比較好記,推薦記憶學習

星期 用戶 帶絕對路徑的命令 腳本或PHP詳細路徑

細心的你發現沒有,crontab最小執行時間為分鐘,如果要求任務是以秒為級別的怎么辦,其實是有辦法的,我等會以實例說明下;服務器我建議也以/etc/crontab為主,它更方便控制用戶管理;建議服務器上的計劃任務時間錯開,不要同時并行任務,不然會在某時間段造成系統負載過大,搞得你的Nagios狂發報警郵件。

#p#

玩windows應該也會發現,windows2K系列的每修改一次系統管理員Administrator的密碼就是一次浩大的工程,windows的每個計劃任務scheduler都要更改密碼;CentOS下修改root密碼就簡單多了,一條passwd命令就解決問題了,而且不影響crontab的執行。

每條 JOB 執行完畢之后,系統會自動將輸出發送郵件給當前系統用戶。日積月累,非常的多,甚至會撐爆整個系統。所以每條 JOB 命令后面進行重定向處理是非常必要的: >>/dev/null 2>&1 。前提是對 Job 中的命令需要正常輸出已經作了一定的處理, 比如追加到某個特定日志文件;>> /dev/null 2>&1 表示把所有標準輸出發送到 /dev/null(linux的回收站),把標準錯誤輸出(2)發送到和標準輸出(1)同樣的地方(即 /dev/null)。運行這行命令將不會產生任何輸出。舉例說明如下:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

CentOS/FreeBSD下用crontab定時執行PHP程序的正確方法如下:

在linux下,可以使用crontab+php的方法:

1、使用crontab –e編輯定時任務

內容為:

xx:xx:xx 執行一個test.php文件

2、php文件必須在文件頭一行,加上解釋器路徑(就象perl做的那樣)

#!/usr/local/bin/php

PHP的執行需要Apache的支持,shell腳本的執行需要Linux的支持,而Linux支持定時運行某個程序的功能。

---------------------------------------------------------------

將PHP作為Shell腳本語言使用(轉載)

--英文原著:Darrell Brogdon,發表于 http://www.phpbuilder.com/columns/darrell20000319.php3)

※我比較懶哈,以前的方法就是直接在/etc/crontab里直接帶上php路徑,如

*/5 * * * * root php test.php

也能正確執行;有興趣的朋友可寫一個hello程序測試,將其所有輸出到一個文件即可測試,我做了大量測試證明其可執行性;當然你的php要保證其正確性,建議你的每一個crontab計劃任務先在shell中先正確運行一次后再寫進crontab里,這是保證成功的必要條件。

crontab如何以秒為執行你的Linux計劃任務呢,許多同事和同學都問過我這個問題。其實這個問題很簡單,我以實例說明下:

我以前的辦公室是一臺ubuntu服務器,連接ADSL作NAT帶辦公室的機器上網,很不幸的發現,這樣ADSL愛掉線,一掉線網關gateway就沒了,所以寫了一個shell腳本

#!/bin/bash
while :
do
if route | tail -l | grep "0.0.0.0"
then
&>/dev/null
else
adsl-stop
adsl-start
fi
sleep 10
done

將程序放進后臺執行。

執行腳本方法 nuhup sh route.sh &,注意前面要用上nohup,這樣避免root用戶logout時此腳本也退出生效的問題。

程序的運行間隔時間是10s,很多同學不明解為什么要加一個sleep 10;大家可以拿虛擬機測試下,如果沒有這條sleep 10的語句,你的Linux服務器會運行大量此route.sh,很快耗光你的服務器資源,你的系統負載會很快上去,Nagios馬上會叫起來的~

#p#

另一個就是監控負載均衡器Nginx的shell腳本,用于 Nginx+Keepalived負載均衡高可用環境:

#!/bin/bash  
while  :  
do  
nginxpid=`ps -C nginx --no-header | wc -l`  
if [ $nginxpid -eq 0 ];then  
/usr/local/nginx/sbin/nginx  
sleep 5  
nginxpid=`ps -C nginx --no-header | wc -l`
if [ $nginxpid -eq 0 ];then  
/etc/init.d/keepalived stop  
fi  
fi  
sleep 5   
done 

另外,這里附帶說下crontab的一個妙用:

我在配置一臺服務器的iptables時,不小心設置了某一項錯誤參數,結果鎖定了SSH會話,導致我們經理及另一系統管理員員連不上服務器,郁悶之余,看到此法特推薦給大家,極其有用,建議大家學習參考:可以配置一計劃任務crontab,每5分鐘運行一次,即*/5 * * * * root /bin/sh /root/firestop.sh

firestop.sh內容為

#/bin/bash
service iptables stop

這樣即使你的腳本存在錯誤設置(或丟失的)規則時,也不至于將你鎖在計算機外而無法返回與計算機的連接,讓你放心大膽的調試你的腳本。

最后說明下Crontab任務的執行環境問題。

盡管可以更改執行 cron 任務時使用的環境,但經常最好創建一個包裝腳本,以在運行實際需要的命令前定義任何環境境變量(如PATH)。

這樣做的部分原因是出于安全考慮;向 crontab 作業開放的區域越多,越可能得到包含可疑內容的東西。另一個原因是,這樣可確保即使更改了環境中的一個依賴關系,你的crontab作仍將執行。

掌握以上crontab的用法后,我相信大家用Linux更可以得心應手,工作更加happy和輕松了,希望這篇文章能給大家的運維工作帶來幫助!

【編輯推薦】

  1. Linux定時執行任務命令概述:at和crontab
  2. 利用crontab系統每天定時備份MySQL數據庫
  3. 詳細講解CentOS系統安裝crontab過程
責任編輯:yangsai 來源: 51CTO.com
相關推薦

2010-12-21 17:31:48

2011-01-07 17:48:31

IT博客大賽50強IT博客

2011-07-26 16:45:18

2011-01-04 13:45:55

系統管理員

2017-11-23 09:00:02

Linuxcron計劃任務

2009-06-10 08:47:19

Linux任務調度

2010-01-20 10:27:16

Linuxcrond命

2010-01-07 11:19:45

Linux計劃任務

2010-03-09 17:45:11

Linux計劃任務

2010-08-25 09:09:58

2011-01-19 14:57:09

Thunderbird

2009-06-19 11:09:27

Spring AOP

2010-08-12 11:03:41

系統管理員LinuxUnix

2017-06-09 13:17:04

Linuxcronanacron

2019-05-29 08:00:00

Linux計劃任務cron

2017-03-27 08:30:00

Windows 8Windows計劃任務

2011-01-07 11:14:17

Nginx負載均衡負載均衡

2018-04-09 11:34:41

云計算微軟AWS

2021-01-08 08:47:56

Saltstack架構管理服務器

2011-03-29 15:49:45

BashLinux服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操天天插 | 日本成人在线观看网站 | 99久久婷婷国产综合精品电影 | 99精品热视频 | 中文字幕中文字幕 | 国产精品久久国产精品 | 91成人免费看| 一区二区精品视频 | 久久久tv| 一区二区三区四区不卡 | 2023亚洲天堂 | 日韩成人精品视频 | 美女拍拍拍网站 | 国产一级一级毛片 | av性色| 四虎在线观看 | 亚洲国产精品久久久久婷婷老年 | 人人干视频在线 | 狠狠干天天干 | 99国产精品久久久 | 国产精品99精品久久免费 | 亚洲国产欧美在线人成 | 超碰国产在线 | 国产免费国产 | 成人国产精品久久久 | 久久这里只有 | 别c我啊嗯国产av一毛片 | 日本在线观看视频 | 中文字幕在线第一页 | 荷兰欧美一级毛片 | 成人免费精品视频 | 午夜爱爱网 | 欧美一区二区视频 | 999久久久免费精品国产 | 国产精品高潮呻吟久久aⅴ码 | 国产日韩一区二区三区 | 亚洲一页 | 欧美激情精品久久久久久 | 国产乱码精品一区二区三区中文 | 天天天天天天天干 | 精品欧美一区二区在线观看视频 |