Linux learn(七)

例行工做安排(定時任務)at,cron

at

由atd服務提供,at指令所產生的的要運做的工做都以文本文件的方式寫入 /var/spool/at/目錄內,該工做便能等待at的這個服務取用與執行了。shell

權限限制相關文件執行流程:
1. /etc/at.allow, 寫入改文件的使用者才能使用該命令;
2. /etc/at.deny, 若是/etc/at.allow不存在時才查找該文件,寫在該文件的使用者不能使用at,其餘均可以使用;
3. 若是倆文件都不存在,則只有root可使用。
at [-mldv] TIME
at -c 工做號碼
選項參數:
-m: 當at的工做完成後,即便沒有輸出信息,也會email通知使用者工做已完成;
-l: 至關於atq,列出目前系統上全部該用戶的at排程;
-d: 至關於atrm,能夠取消一個在at排程中的工做;
-v: 可使用較明顯的時間格式欄列出排程任務表;
-c: 能夠列出後面接的該項工做的實際指令內容。
TIME: 時間格式。
	HH:MM [YYYY-MM-DD]: 指定實際時間執行;
	HH:MM[am|pm] [Month] [Date]: 例如04pm July 30;
	+number [minutes|hours|days|weeks]: 在某個時間點『再加幾個時間後』執行,例如now + 5minutes。
其餘找man吧,比較簡單。

簡單測試vim

atd

在圖/var/spool/at中能夠看到生成的文件,這個就是咱們的工做排程,能夠打開文件看,裏面的內容最下部其實就是咱們輸入的可執行命令.

cron

由crond服務提供,crontab指令所產生的的要運做的工做都以文本文件的方式寫入 /var/spool/cron/目錄內,每一個用戶獨立一個文件。bash

權限限制相關文件執行流程:
1. /etc/cron.allow, 寫入改文件的使用者才能使用該命令;
2. /etc/cron.deny, 若是/etc/cron.allow不存在時才查找該文件,寫在該文件的使用者不能使用at,其餘均可以使用;
crontab [-u username] [-ler]
選項參數:
-u: 只有root可使用該參數,做用是幫其餘使用者創建crontab工做排程;
-e: 編輯crontab的工做內容;
-l: 查閱crontab的工做內容;
-r: 移除全部的crontab工做內容,若僅要移除一項,請用-e。
內容結構: cron表達式 指令

crontab_1

crontab保存的工做排程實際上就是 /var/spool/cron/ 目錄中以用戶名爲文件名的文件,咱們執行的-e實際上就是調用vim編輯這個文件而已,可是使用-e時crontab會檢查咱們的語法是否有誤,圖中表示每隔10分鐘給root發一封郵件,郵件這裏就不查看了。

系統的配置文件/etc/crontab, /etc/cron.d/*

cron服務的最低偵測限制是『分鐘』,每隔1分鐘cron就回去讀取一次/etc/crontab和、var/spool/cron裏面的數據內容。

crontab_2

crontab -e是針對使用者設計的,通常系統性的任務,該怎麼搞呢?這個時候就須要配置文件 /etc/crontab(這個是配置文件哦,可執行文件也是這個名字,可是實在/bin/crontab),從圖中能夠看出,其實這個文件跟/var/spool/cron/中的文件沒什麼太大區別,只是中間多了個user-name而已。
上面的PATH指搜索可執行文件的位置,MAILTO指當該文件中的例行工做指令發生錯誤時,將stdout和stderr發送給root用戶。
cron服務讀取配置文件有如下三個
/etc/crontab, /etc/cron.d/*, /var/spool/cron/*
/etc/cron.d/中的文件格式個/etc/crontab格式同樣,這個文件中的是cron的可執行腳本,
也就是說,自行開發的軟件,寫個腳本放在該目錄下,就能夠定時執行了。

總結:網絡

  1. 我的化的行爲使用crontab -e,創建屬於本身的例行工做,文件位置/var/spool/cron/${username};
  2. 系統維護管理使用配置文件/etc/corntab,直接寫入;
  3. 本身開發軟件,須要執行的腳本使用 vim /etc/cron.d/newfile;

進程管理

常駐在內存當中的進程一般都是負責一些系統所提供的的功能以服務用戶各項任務,這些常駐程序就會被咱們稱爲: 服務(daemon)。例如crond,atd等,服務這種通常以d結尾表示daemon。

&,job control

指令後面加上&,可讓該條指令在後臺運行。socket

概念:
能夠出現提示字符讓咱們操做的環境稱爲前景(foreground),其餘工做可讓咱們讓如背景(background)去暫停或運做,放入背景的工做是不可使用ctrl+c來終止的。
job control注意:
這些工做所觸發的進程必須來自你shell的子進程(只管理本身的bash);
前景:你能夠控制與下達指令的環境稱爲前景的工做(foreground);
背景:能夠自行運做的工做,你沒法使用ctrl+c終止他,可使用bg/fg呼叫該工做到前景;
背景中執行的程序不能等待terminal/shell的輸入(input)。

圖中使用&將指令放入背景執行,jobs能夠看到有job正在運行,前面的[1]表明工做號碼。tcp

jobs_1

將目前的工做丟到背景中『暫停』:ctrl+z函數

jobs_2

jobs, fg, bg

jobs [-lrs]
選項參數:
-l: 除了列出job number與指令串以外,同時列出PID號碼;
-r: 僅列出正在背景run的工做;
-s: 僅列出正在背景中暫停(stop)的工做。
fg %jobnumber
%jobnumber: jobnumber爲工做號碼,%可省略。
bg %jobnumber:
咱們把前景的工做放到背景的時候用的是ctrl+z,這個時候該工做時stop的,咱們使用bg指令讓其在背景變成running,以下圖。

bg

netstat:追蹤網絡或插槽文件

nestat -[atunlp]
-a: 將目前系統上全部的聯機、監聽、socket數據都列出來;
-t: 列出tcp網絡封包數據;
-u: 列出udp網絡封包數據;
-n: 不以進程的服務名稱,以端口號來顯示;
-l: 列出目前正在網絡監聽(listener)的服務;
-p: 列出該網絡服務的進程PID。

netstat

dmesg:分析核心產生的信息

系統在開機的時候,核心回去偵測系統的硬件,你的某些硬件有沒有被捕捉到,就與偵測有關。dmesg能夠捉出來這些偵測信息。

dmesg

查詢已開啓文件或已執行進程開啓的文件

fuser [-umv] [-k [-i] [-signal]] file/dir
選項參數:
-u: 除了進程的PID以外,同時列出該進程的擁有者;
-m: 後面接的檔名會主動的上提到該文件系統的最頂層,對unmout不成功頗有效;
-v: 能夠列出每一個文件與進程還有指令的完整相關性;
-k: 找出使用該文件/目錄的PID,並試圖以sigkill這個訊號給與PID;
-i: 必須與-k配合,在刪除PID以前會先詢問使用者的意願;
-signal: 列如-1,-15等等,不加默認爲SIGKILL(-9)哦!查看有哪些signal用man signal

fuser_1

如上圖:上圖說當前目錄(.)下有4個PID,9086,10009,10677,13882的進程,該進程屬於root且指令分別爲bash,bash,mail,tar; 
access表明的意思以下:
c: 此進程在當前目錄下(非次目錄);
e: 可被出發爲執行狀態;
f: 是一個被開啓的文件;
r: 表明頂層目錄;
F: 文件被開啓,在等待迴應;
m: 可能爲分享的動態函數庫。

lsof

列出被進程所開啓的文件檔名測試

lsof [-aUu] [+d]
選項與參數:
-a: 多項數據須要同時成立才顯示出結果;
-U: 僅列出Unix like系統的socket文件類型;
-u: 後面接username,列出該使用者相關進程所開啓的文件;
+d: 後面接目錄,即找出某個目錄底下已經被開啓的文件。

查找root的bash這隻程序所開啓的文件設計

lsof

pidof

找出某隻正在執行的程序的PID3d

pidof [-sx] program_name
選項參數:
-s: 僅列出一個PID而不列出全部PID;
-x: 同時列出該program name可能的PPID那個進程的PID。

pidof

over...

相關文章
相關標籤/搜索