自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下設(shè)置定期執(zhí)行腳本

系統(tǒng) Linux
在Linux下,經(jīng)常需要定期的執(zhí)行一些腳本從而來(lái)實(shí)現(xiàn)一些功能,我們用crontab來(lái)實(shí)現(xiàn)定期的執(zhí)行腳本這個(gè)功能,下面就介紹一下crontab的使用。

下面針對(duì)的是非ubuntu環(huán)境,會(huì)在文章末尾介紹ubuntu的一些區(qū)別。

在Linux下,經(jīng)常需要定期的執(zhí)行一些腳本從而來(lái)實(shí)現(xiàn)一些功能。

在Linux下我們用crontab來(lái)實(shí)現(xiàn)定期的執(zhí)行腳本這個(gè)功能,下面就介紹一下crontab的使用。以及我遇到的一些問(wèn)題

一. crontab的使用說(shuō)明

1. crond 是linux用來(lái)定期執(zhí)行程序的命令。當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會(huì)啟動(dòng)此任務(wù)調(diào)度命令。crond命令每分鐘會(huì)定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會(huì)自動(dòng)執(zhí)行該工作。而linux任務(wù)調(diào)度的工作主要分為以下兩類(lèi)

a. 系統(tǒng)執(zhí)行的工作,比如垃圾清理,備份

b. 用戶(hù)自定義的工作,比如每5分鐘執(zhí)行一次腳本

2. crontab是UNIX系統(tǒng)下定期執(zhí)行任務(wù)的觸發(fā)器。用戶(hù)把要定期執(zhí)行的任務(wù)記錄在這個(gè)文件下面,然后crond定期的去檢查這個(gè)定期執(zhí)行列表,有要執(zhí)行的工作時(shí)便自動(dòng)執(zhí)行。

通過(guò)man crontab可以查看到下面的信息

a. /etc/crond.allow 表示的是允許使用crontab的用戶(hù)列表

b. /etc/crond.deny 表示的是不允許使用crontab的用戶(hù)列表

3. crontab常用的幾個(gè)命令格式

crontab -l //顯示用戶(hù)的crontab文件的內(nèi)容

crontab -e //編輯用戶(hù)的crontab文件的內(nèi)容

crontab -r //刪除用戶(hù)的crontab文件

4. crontab文件的基本格式如下所示

*    *     *    *    *       command

分   時(shí)   天   月   周         命令

每列表示意義

a. ***個(gè)*表示的是分鐘1~59分鐘,默認(rèn)*表示的是每分鐘都執(zhí)行,x-y表示的是x~y這段每分鐘都執(zhí)行,*/n表示每n分鐘執(zhí)行一次,x,y,z表示的是x,y,z分鐘都執(zhí)行。

b. 第二個(gè)*表示的是小時(shí)1~23小時(shí),默認(rèn)*表示的是每小時(shí)都執(zhí)行,x-y表示的是x~y這段每小時(shí)都執(zhí)行,*/n表示每n小時(shí)執(zhí)行一次,x,y,z表示的是x,y,z小時(shí)都執(zhí)行。

c. 第三個(gè)*表示的是天1~31,默認(rèn)*表示的是每天都執(zhí)行,x-y表示的是x~y這段每天都執(zhí)行,*/n表示每n天執(zhí)行一次,x,y,z表示的是x,y,z天都執(zhí)行。

d. 第四個(gè)*表示的是月1~12,默認(rèn)*表示的是每個(gè)月都執(zhí)行,x-y表示的是x~y這個(gè)段每月都執(zhí)行,*/n表示每n分鐘執(zhí)行一次,x,y,z表示的是x,y,z天都執(zhí)行。

e. 第五個(gè)*表示的是周0~6(0表示周天),默認(rèn)周一~周天都執(zhí)行,x-y表示周x~周y每天都執(zhí)行。

5. crontab文件的一些例子

a. 30 21 * * * /usr/local/etc/rc.d/lighttpd restart //表示每天21:30重啟apache

b. 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart //表示每月1,10,22號(hào)4:45重啟apache

c. 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart //表示每天18 : 00至23 : 00之間每隔30分鐘重啟apache

d. * */1 * * * /usr/local/etc/rc.d/lighttpd restart //表示每一小時(shí)重啟apache

e. */5 * * * * /usr/local/etc/rc.d/lighttpd restart //表示每5分鐘重啟apache

二. 具體例子

1. 首先我在/home/chenguolin/tmp/ 創(chuàng)建一個(gè)shell腳本名為s.sh。注意腳本內(nèi)部的路徑使用絕對(duì)路徑。

這個(gè)腳本的功能就是把當(dāng)前的日期輸出重定向到當(dāng)前目錄下的out文件

2. 然后設(shè)置每2分鐘執(zhí)行一次這個(gè)腳本,>/dev/null 2>&1。原因是因?yàn)橄到y(tǒng)會(huì)在每次執(zhí)行完任務(wù)之后就發(fā)一個(gè)郵件告訴用戶(hù),通過(guò)這個(gè)操作可以把信息全部重定向到/dev/null中,/dev/null這個(gè)文件類(lèi)似回收站過(guò)一段時(shí)間系統(tǒng)自動(dòng)清理。

*/2 * * * * sh /home/chenguolin/tmp/s.sh >/dev/null 2>&1

然后發(fā)現(xiàn)過(guò)了n個(gè)2分鐘,out文件根本就沒(méi)有輸出。 

3. 在谷歌/百度無(wú)果之后,問(wèn)了同事,得到了原因是因?yàn)閏rontab可能有時(shí)候沒(méi)有辦法執(zhí)行用戶(hù)家目錄下面的兩個(gè)文件,分別是.bashrc和.bash_profile

這兩個(gè)文件的作用如下

.bashrc作用是用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)及每次打開(kāi)新的shell時(shí),該文件被讀??;

.bash_profile作用是每個(gè)用戶(hù)都可使用該文件輸入專(zhuān)用于自己使用的shell信息,當(dāng)用戶(hù)登錄時(shí),該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶(hù)的.bashrc文件,

因此我們要手動(dòng)在crontab文件中添加source /home/chenguolin/.bashrc && source /home/chenguolin/.bash_profile

source的作用是當(dāng)前bash環(huán)境下執(zhí)行命令,而scripts是啟動(dòng)一個(gè)子shell來(lái)執(zhí)行命令。這樣如果把設(shè)置環(huán)境變量(或alias等等)的命令寫(xiě)進(jìn)scripts中,就只會(huì)影響子shell,無(wú)法改變當(dāng)前的BASH,所以通過(guò)文件(命令列)設(shè)置環(huán)境變量時(shí),要用source 命令。

因此crontab文件中變成

*/2 * * * * source && /home/chenguolin/.bashrc && source /home/chenguolin/.bash_profile && sh /home/chenguolin/tmp/s.sh >/dev/null 2>&1

4. 發(fā)現(xiàn)可以定時(shí)的執(zhí)行腳本。

如果還不行,那只能通過(guò)查找log來(lái)查錯(cuò)。非ubuntu的Linux crond的日志文件保存在/var/log下

三. ubuntu下使用crontab定時(shí)執(zhí)行腳本

注意下幾個(gè)問(wèn)題以

1. ubuntu下crontab的服務(wù)程序是cron,并且默認(rèn)cron服務(wù)的log是沒(méi)有的,我們必須手動(dòng)開(kāi)啟

a. sudo vim /etc/rsyslog.d/50-default.conf

b. 找到cron.*那一行把注釋去掉

c. 然后重啟cron服務(wù) sudo service cron restart

d. 這樣就可以在/var/log里面發(fā)現(xiàn)有cron的日志文件了,我們就可以通過(guò)查看日志文件找到問(wèn)題所在

2. ubuntu下,用戶(hù)家目錄下是沒(méi)有.bash_profile文件的,并且會(huì)自動(dòng)去執(zhí)行.bashrc文件,只要寫(xiě)成下面這樣即可

*/2 * * * * sh /home/chenguolin/tmp/s.sh >/dev/null 2>&1

原文鏈接:http://blog.csdn.net/chenguolinblog/article/details/37936865

責(zé)任編輯:牛小雨 來(lái)源: csdn
相關(guān)推薦

2020-08-11 18:20:42

Linux運(yùn)行腳本開(kāi)機(jī)啟動(dòng)

2020-06-11 07:57:48

Linux腳本數(shù)據(jù)

2023-03-02 23:45:23

linux開(kāi)機(jī)啟動(dòng)Windows

2011-08-08 10:10:21

Linux備份

2011-08-29 16:19:01

UbuntuRamDisk

2018-03-02 13:28:19

Linux開(kāi)機(jī)自啟動(dòng)

2010-07-02 09:03:52

SQL server定

2016-09-21 08:54:33

2010-02-23 13:24:33

2009-11-11 10:26:02

LinuxOracle監(jiān)聽(tīng)自啟動(dòng)

2009-07-06 17:00:17

Ubuntu Linushorewall防火墻

2009-06-29 08:38:14

Linux操作系統(tǒng)

2009-07-03 06:55:33

Linux

2010-09-14 11:33:39

Linux下設(shè)置tft

2010-07-01 15:56:34

SQL Server數(shù)

2010-01-13 11:05:24

2009-12-07 09:53:27

ubuntu/root

2021-04-24 08:54:27

虛擬機(jī)Kubernetes節(jié)點(diǎn)

2011-02-21 10:08:36

2010-09-16 15:44:12

Java環(huán)境變量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)