如果必須使用命令的話,一般會可at命令。
成都創新互聯專注于企業成都營銷網站建設、網站重做改版、安國網站定制設計、自適應品牌網站建設、H5頁面制作、商城網站建設、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為安國等各大城市提供網站開發制作服務。
定時任務,指定一個時間執行一個任務,只能執行一次。
語法:#
at
[參數]
[時間]
輸入要執行的任務命令后按Ctrl+d退出即可。
常見參數:
-m
:當指定的任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
-I
:atq的別名
-d
:atrm的別名
-v
:顯示任務將被執行的時間
-c
:打印任務的內容到標準輸出
-V
:顯示版本信息
-q
:后面加列隊
使用指定的列隊
-f
:后面加文件
從指定文件讀入任務而不是從標準輸入讀入
-t
:后面時間參數
以時間參數的形式提交要運行的任務
注:該命令的功能實現需要atd服務
如果需要長期定時或周期性的執行某個任務,則需要使用crontab,編寫cron腳本來實現。同樣,負責安裝腳本執行任務的服務一般叫做crond。具體使用方法篇幅較長,請自行百度。
linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平臺上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux缺省會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務并執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly
如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鐘執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh
2、cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由于Cron 是Linux的內置服務,如果它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現在Cron這個服務已經在進程里面了,我們就可以用這個服務了
查看服務是否已經運行用 ps -ax | grep cron
3、crontab命令
查看該用戶下的crontab服務是否創建成功, 用 crontab -l 命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls /tmp/ls.txt
任務調度的crond常駐命令crond 是linux用來定期執行程序的命令。當安裝完成操作系統之后,默認便會啟動此 任務調度命令。crond命令每分鐘會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務
4、cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)
5、 新增調度任務
新增調度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然后添加相應的任務,wq存盤退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
6、 查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp //列出用戶jp的所有調度任務
7、 刪除任務調度工作
crontab -r //刪除所有任務調度工作
8、 任務調度執行結果的轉向
例1:每天5:30執行ls命令,并把結果輸出到/jp/test文件中
30 5 * * * ls /jp/test 21
注:21 表示執行結果及錯誤信息。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行 /etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本
大家注意”run-parts”這個參數了,如果去掉這個參數的話,后面就可以寫::要運行的某個腳本名,而不是文件夾名了。
總結:
編寫定時任務的兩種方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定時任務的兩種方式:1.sudo cat /etc/crontab 2.sudo crontab -l
*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ ./back_coupon.sh 2 10 /dev/null 21
查看定時任務是否運行:
sudo tail -f /var/log/cron //定時任務日志(查看剛才設置的任務是否執行)
注:腳本有可執行權限
sh a.sh(不需要執行權限)
./sh (需要執行權限)
1.當shell腳本具有可執行權限時,用sh filename與./filename執行腳本是沒有區別的。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。
nohup命令 將程序以忽略掛起信號的方式運行起來,被運行的程序的輸出信息將不會顯示到終端。一般用于將程序的輸出、報錯信息重定向到一個指定路徑的指定文件。
語法 :nohup [command] [args] [] ? ?
nohup命令 最后要帶個作為結束
例:nohup python XXX.py abc/def/XXX.log 21
args: 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
21是將標準錯誤(2)重定向到標準輸出(1),標準輸出(1)再被重定向輸入到文件,即XXX.log中。
nohup命令的缺點:日志文件文件越來越大,占內存且查看麻煩。因為這個日志文件和程序是共生死的,因為只要程序運行起來,就一直對log文件進行讀寫,直接刪除XXX.log會導致程序也被結束了。
目前想到的一些相關方法如下,并未完全解決問題。
參考: linux下nohup日志輸出過大問題解決方案
split命令:
參數:-b:值為每一輸出檔案的大小,單位為 byte。
? ? ?? -C:每一輸出檔中,單行的最大 byte 數。
? ? ?? -d:使用數字作為后綴。默認這個數字后綴是兩位的,例如00,01,11. -a: 指定位數,例如 -a 4表示后綴是四位的。
? ? ?? -l:值為每一輸出檔的列數大小。
? ? ?? PREFIX:代表前導符,可作為切割文件的前導文件。
例如:
可以用split命令把很大的日志文件分成多個小文件,分割完成后 原文件不變 。不會影響nohup運行的程序。
缺點:split文件分割依賴手動,當程序出故障或調試時,將日志分割以便查看最新的日志信息。沒法定時做到定時自動清理。
首先介紹find命令的參數
參考: linux find命令詳解
在這里主要用到的是這幾個參數:
-atime n 查找系統中最后n*24小時訪問的文件
-ctime n? 查找系統中最后n*24小時被改變文件狀態的文件
-mtime n? 查找系統中最后n*24小時被改變文件數據的文件
+n: n天前; -n: n天之內
find命令還可以和下一條命令連用(xargs或exec)
或
注:{}表示find到的東西;{}和 \;之間要有一個空格
我感覺exec不是很好用,怪怪的
cat dev/null
在 Linux 中, null 設備基本上被用來丟棄某個進程不再需要的輸出流,或者作為某個輸入流的空白文件,這些通常可以利用重定向機制來達到。
所以 /dev/null 設備文件是一個特殊的文件,它將清空送到它這里來的所有輸入,而它的輸出則可被視為一個空文件。另外,你可以通過使用 cat 命令顯示 /dev/null 的內容然后重定向輸出到某個文件,以此來達到清空該文件的目的。通過使用cat /dev/null,文件大小為0字節。
用cat刪除文件:
但是我發現對于nohup的程序的日志,這樣是無效的。因為nohup的程序持續不斷地在讀寫日志文件,此時無法重定向,我試了幾次,日志文件都壓根沒動。
crontab用于設置定時任務
參考:? linux crontab定時執行shell腳本
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
語法
crontab(選項)(參數)
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u用戶名稱:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
首先crontab -e,就會進入vi編輯界面。然后直接把新的命令輸進去就行了。
minute hour day month week command /XXX/XXX.log 順序:分 時 日 月 周
minute: 表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
/n表示每個n的單位執行一次
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
意為每周的1:00執行,且輸出重定向到黑洞目錄。
文章名稱:linux定時命令參數 linux定時器命令
當前URL:http://m.newbst.com/article42/doppiec.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、網站改版、企業建站、全網營銷推廣、網站內鏈、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯