日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux--进程与任务管理

發(fā)布時(shí)間:2024/3/13 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux--进程与任务管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、查看進(jìn)程
    • 1、查看進(jìn)程信息——ps
      • ①方法一——ps -aux
      • ②方法一——ps -elf
    • 2、查看進(jìn)程信息——top
      • ①系統(tǒng)任務(wù)(第一行)和進(jìn)程(第二行)的信息
      • ②CPU(第三行)、內(nèi)存(第四行)的信息和交換空間(第五行)的相關(guān)信息
      • ③ 進(jìn)程信息區(qū)各列詳解
      • ④ top常用命令
    • 3、查看進(jìn)程信息——pgrep
    • 4、查看進(jìn)程樹(shù)——pstree
  • 二、控制進(jìn)程
    • 1、進(jìn)程的啟動(dòng)方式
      • ①手工啟動(dòng)
      • ②調(diào)動(dòng)啟用
    • 2、進(jìn)程的前后臺(tái)調(diào)度
      • ①掛起當(dāng)前進(jìn)程
      • ②查看后臺(tái)的進(jìn)程
      • ③將后臺(tái)的進(jìn)程恢復(fù)運(yùn)行
    • 3、終止進(jìn)程執(zhí)行
      • ①kill
      • ②killall
      • ③pkill
  • 三、一次性計(jì)劃任務(wù)—at
  • 四、周期性任務(wù)設(shè)置—crontab
    • 1、配置文件和目錄
      • ①系統(tǒng)任務(wù)配置文件,位于文件:/etc/crontab
      • ②系統(tǒng)默認(rèn)的設(shè)置,位于目錄:/etc/cron.*/
      • ③用戶(hù)定義的設(shè)置,位于文件:/var/spool/cron/
    • 2、管理crontab計(jì)劃任務(wù)
    • 3、crontab 任務(wù)配置的格式
    • 4、時(shí)間數(shù)值的特殊表示方法
      • ①特殊表示方式及示例
      • ②查看用戶(hù)的計(jì)劃任務(wù)表
      • ③刪除用戶(hù)的計(jì)劃任務(wù)表
  • 總結(jié)

前言

Linux進(jìn)程管理是一項(xiàng)十分重要的工作,可以幫助我們更好的控制系統(tǒng)。進(jìn)程是程序在計(jì)算機(jī)上的一次執(zhí)行活動(dòng)。當(dāng)你運(yùn)行一個(gè)程序,你就啟動(dòng)了一個(gè)進(jìn)程。本文介紹了常用進(jìn)程操作命令以及管理

一、查看進(jìn)程

  • 程序:

    • 保存在硬盤(pán)、光盤(pán)等介質(zhì)中的可執(zhí)行代碼和數(shù)據(jù)

    • 靜態(tài)保存的代碼

  • 進(jìn)程:

    • 在CPU及內(nèi)存中運(yùn)行的程序代碼
    • 動(dòng)態(tài)執(zhí)行的代碼
    • 父、子進(jìn)程
    • 每個(gè)程序可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程

線(xiàn)程和進(jìn)程的區(qū)別:

做個(gè)簡(jiǎn)單的比喻:進(jìn)程=火車(chē),線(xiàn)程=車(chē)廂
線(xiàn)程在進(jìn)程下行進(jìn)(單純的車(chē)廂無(wú)法運(yùn)行),一個(gè)進(jìn)程可以包含多個(gè)線(xiàn)程(一輛火車(chē)可以有多個(gè)車(chē)廂),多個(gè)線(xiàn)程可共享數(shù)據(jù)(車(chē)廂是互通的)

1、查看進(jìn)程信息——ps

①方法一——ps -aux

  • 查看靜態(tài)的進(jìn)程統(tǒng)計(jì)信息:ps -aux

一般結(jié)合管道符號(hào)來(lái)用:ps -aux | grep httpd | wc -l

  • a:顯示當(dāng)前終端下的所有進(jìn)程信息,包括其他用戶(hù)的進(jìn)程,與“x”選項(xiàng)結(jié)合使用時(shí)將顯示系統(tǒng)中所有的進(jìn)程信息
  • u:使用以用戶(hù)為主的格式輸出進(jìn)程信息
  • x:顯示當(dāng)前用戶(hù)在所有終端下的進(jìn)程信息
  • 將以簡(jiǎn)單列表的形式顯示出進(jìn)程信息
示例: [root@localhost ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 2.6 0.3 46344 6908 ? Ss 16:47 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 16:47 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 16:47 0:00 [kworker/0:0] root 4 0.0 0.0 0 0 ? S< 16:47 0:00 [kworker/0:0H] ##省略... 名詞解釋
USER進(jìn)程的用戶(hù)
PID進(jìn)程的ID
%CPU進(jìn)程占用的CPU百分比
%MEN占用內(nèi)存的百分比
VSZ該進(jìn)程使用的虛擬內(nèi)存量(KB)
RSS該進(jìn)程使用的物理內(nèi)存量(KB)
TTY啟動(dòng)該進(jìn)程的終端名;若不是從終端啟動(dòng)的進(jìn)程則顯示為“?”
STAT該進(jìn)程的狀態(tài)(D:不可中斷的休眠狀態(tài):R:正在運(yùn)行狀態(tài);S:處于休眠狀態(tài),可被喚醒;T:停止?fàn)顟B(tài),可能是在后臺(tái)暫停或進(jìn)程處于跟蹤調(diào)試狀態(tài): Z:僵尸進(jìn)程,進(jìn)程已經(jīng)中止,但是部分程序還在內(nèi)存當(dāng)中)
START該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間
TIME該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間
COMMAND進(jìn)程的啟動(dòng)命令

名詞解釋(僵尸進(jìn)程):
已經(jīng)結(jié)束了一個(gè)進(jìn)程,但是它任然還占用著內(nèi)存,也稱(chēng)之為僵死

父進(jìn)程退出,子進(jìn)程沒(méi)有退出,那這些子進(jìn)程就沒(méi)有父進(jìn)程去管理它們,所以就成了僵尸進(jìn)程

狀態(tài)后綴表示:

-D:不可被喚醒的睡眠狀態(tài),通常用于 I/O 情況。
-R:該進(jìn)程正在運(yùn)行。
-S:該進(jìn)程處于睡眠狀態(tài),可被喚醒。
-T:停止?fàn)顟B(tài),可能是在后臺(tái)暫停或進(jìn)程處于除錯(cuò)狀態(tài)。
-W:內(nèi)存交互狀態(tài)(從 2.6 內(nèi)核開(kāi)始無(wú)效)。
-X:死掉的進(jìn)程(應(yīng)該不會(huì)出現(xiàn))。
-Z:僵尸進(jìn)程。進(jìn)程已經(jīng)中止,但是部分程序還在內(nèi)存當(dāng)中。
-<:高優(yōu)先級(jí)(以下?tīng)顟B(tài)在 BSD 格式中出現(xiàn))。
-N:低優(yōu)先級(jí)。
-L:被鎖入內(nèi)存。
-s:包含子進(jìn)程。
-l:多線(xiàn)程(小寫(xiě) L)。
-+:位于后臺(tái)。
-C:進(jìn)程占用CPU的百分比

  • 示例1:查看進(jìn)程狀態(tài)

ctrl+c :發(fā)送 SIGINT 信號(hào),終止一個(gè)進(jìn)程
ctrl+z :發(fā)送 SIGSTOP 信號(hào),掛起一個(gè)進(jìn)程。將作業(yè)放置到后臺(tái)(暫停)
ctrl+d :不是發(fā)送信號(hào),而是表示一個(gè)特殊的二進(jìn)制值,表示 EOF。代表輸入完成或者注銷(xiāo)

  • 示例2:不可中斷狀態(tài)
tar -zcvf usr-tar.gz /usr/ #然后在另一個(gè)終端不斷查看狀態(tài),由 S+,R+變?yōu)?D+

②方法一——ps -elf

  • e:顯示系統(tǒng)內(nèi)的所有進(jìn)程信息
  • l:使用長(zhǎng)格式顯示進(jìn)程信息
  • f:使用完整的格式顯示進(jìn)程信息
  • 將以長(zhǎng)格式顯示系統(tǒng)中的進(jìn)程信息,并且包含更豐富的內(nèi)容
示例: [root@localhost ~]# ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 32068 ep_pol 16:47 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 1 S root 2 0 0 80 0 - 0 kthrea 16:47 ? 00:00:00 [kthreadd] 1 S root 4 2 0 60 -20 - 0 worker 16:47 ? 00:00:00 [kworker/0:0H] 1 S root 5 2 0 80 0 - 0 worker 16:47 ? 00:00:00 [kworker/u256:0] ##省略... 名詞解釋
F內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)記
S進(jìn)程的狀態(tài)
UID啟動(dòng)這些進(jìn)程的用戶(hù)
PID進(jìn)程的進(jìn)程ID
PPID父進(jìn)程的進(jìn)程號(hào)(如果該進(jìn)程是由另一個(gè)進(jìn)程啟動(dòng)的)
C進(jìn)程生命周期中的CPU利用率
PRI進(jìn)程的優(yōu)先級(jí)(越大的數(shù)字代表越低的優(yōu)先級(jí))
NI謙讓度值用來(lái)參與決定優(yōu)先級(jí)
ADDR進(jìn)程的內(nèi)存地址
SZ假如進(jìn)程被換出,所需交換空間的大致大小
WCHAN若該進(jìn)程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名
STIME進(jìn)程啟動(dòng)時(shí)的系統(tǒng)時(shí)間
TTY進(jìn)程啟動(dòng)時(shí)的終端設(shè)備
TIME運(yùn)行進(jìn)程需要的累計(jì)CPU時(shí)間
CMD進(jìn)程的啟動(dòng)命令

在CentOs7系統(tǒng),tty1表示圖形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+(F1-F6)切換

2、查看進(jìn)程信息——top

  • 使用ps命令查看到的是一個(gè)靜態(tài)的進(jìn)程信息,并不能連續(xù)地反饋當(dāng)前進(jìn)程的運(yùn)行狀態(tài)
  • 若希望以動(dòng)態(tài)刷新的方式顯示各進(jìn)程的狀態(tài)信息則使用top
  • 默認(rèn)情況下每三秒刷新一次,按 s 修改刷新時(shí)間,按空格 :立即刷新

①系統(tǒng)任務(wù)(第一行)和進(jìn)程(第二行)的信息

相關(guān)信息含義相關(guān)信息含義
18:55:08系統(tǒng)時(shí)間Tasks總進(jìn)程數(shù)
up 2:07系統(tǒng)已運(yùn)行時(shí)間running正在運(yùn)行的進(jìn)程數(shù)
1 user當(dāng)前登錄用戶(hù)數(shù)sleeping休眠的進(jìn)程數(shù)
load average:0.00,0.01,0.05系統(tǒng)負(fù)載,即單位時(shí)間內(nèi)系統(tǒng)處理的任務(wù)數(shù),后面三個(gè)數(shù)值分別為1分鐘、5分鐘、15分鐘到現(xiàn)在的平均值stopped中止的進(jìn)程數(shù)
//zombie僵死的進(jìn)程數(shù)

②CPU(第三行)、內(nèi)存(第四行)的信息和交換空間(第五行)的相關(guān)信息

相關(guān)信息含義相關(guān)信息含義相關(guān)信息含義
us用戶(hù)占用total總內(nèi)存空間total總交換空間
sy內(nèi)核占用free空閑內(nèi)存free空閑交換空間
ni優(yōu)先級(jí)調(diào)度占用used已用內(nèi)存used已用交換空間
id空閑CPU,要了解空閑的CPU百分比,主要看%id部分buff/cahe物理內(nèi)存和交換內(nèi)存的緩沖區(qū)總和avail Mem可用物理空間
waI/O等待占用////
hi硬件中斷占用////
si軟件中斷占用////
st虛擬化占用////

③ 進(jìn)程信息區(qū)各列詳解

信息解釋
PID進(jìn)程id
USER進(jìn)程所有者的用戶(hù)名
PR優(yōu)先級(jí)
NI謙讓度值,負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT進(jìn)程使用的虛擬內(nèi)存總量,單位kb
RES進(jìn)程使用的物理內(nèi)存大小,單位kb
SHR共享內(nèi)存大小,單位kb
S進(jìn)程狀態(tài)
%CPU上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM進(jìn)程使用的物理內(nèi)存百分比
TIME+進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND命令名/命令行

④ top常用命令

命令解釋
P根據(jù)CPU使用百分比大小進(jìn)行排序
M據(jù)駐留內(nèi)存大小進(jìn)行排序
N根據(jù)啟動(dòng)時(shí)間進(jìn)行排序
c切換顯示命令名稱(chēng)和完整命令行
h可以獲得 top程序的在線(xiàn)幫助信息
k根據(jù)提示輸入指定進(jìn)程的 PID 號(hào)并按 Enter 鍵終止對(duì)應(yīng)的進(jìn)程
q退出 top 程序
(數(shù)字)1顯示CPU個(gè)數(shù)和狀態(tài)

若通過(guò) top 排名工具發(fā)現(xiàn)某個(gè)進(jìn)程 CPU 占用率非常高,需要終止該進(jìn)程的運(yùn)行,可以在 top 操作界面中按 k 鍵,然后在列表上方將會(huì)出現(xiàn)“PID to signal/kill [default pid = 3180]:” 的提示信息,根據(jù)提示輸入指定進(jìn)程的 PID 號(hào)并按 Enter 鍵, 出現(xiàn)“Send pid 5597 signal [15/sigterm]”的二次確認(rèn)的提示信息,然后按Enter 鍵確認(rèn)即可終止對(duì)應(yīng)的進(jìn)程

3、查看進(jìn)程信息——pgrep

-l選項(xiàng)可同時(shí)輸出對(duì)應(yīng)的進(jìn)程名以及PID
-U選項(xiàng)查詢(xún)特定用戶(hù)的進(jìn)程
-t選項(xiàng)查詢(xún)?cè)谔囟ńK端運(yùn)行的進(jìn)程
  • 示例1:查詢(xún)進(jìn)程中包含‘log’的進(jìn)程及PID號(hào)(若沒(méi)有“-l”則只輸出PID號(hào))
[root@localhost ~]# pgrep -l "log" 288 xfs-log/sda2 477 xfs-log/sda1 481 xfs-log/sda5 595 systemd-logind 601 abrt-watch-log 628 abrt-watch-log 1028 rsyslogd
  • 示例2:查詢(xún)由用戶(hù) teacher 在 tty1 終端上運(yùn)行的進(jìn)程及PID號(hào)
[root@localhost ~]# pgrep -l -U teacher -t tty1

4、查看進(jìn)程樹(shù)——pstree

  • pstree命令可以輸出Linux系統(tǒng)中各進(jìn)程的樹(shù)形結(jié)構(gòu),更加直觀(guān)地判斷出各進(jìn)程之間的相互關(guān)系(如父、子進(jìn)程)
-p選項(xiàng)使用時(shí)可以同時(shí)列出對(duì)應(yīng)的PID號(hào)
-u選項(xiàng)可以列出對(duì)應(yīng)的用戶(hù)名
-a選項(xiàng)可以列出完整的命令信息
  • 示例1:
pstree -aup #查看當(dāng)前系統(tǒng)的進(jìn)程樹(shù),包括各進(jìn)程對(duì)應(yīng)的PID 號(hào)、用戶(hù)名、完整命令等信息。從輸出結(jié)果中可以看出,systemd 進(jìn)程確實(shí)是 Linux 操作系統(tǒng)中所有進(jìn)程的“始祖”

二、控制進(jìn)程

1、進(jìn)程的啟動(dòng)方式

  • 在Linux系統(tǒng)中,可以由用戶(hù)手工啟動(dòng)或者按預(yù)定計(jì)劃調(diào)度啟動(dòng)新的進(jìn)程

①手工啟動(dòng)

  • 根據(jù)該進(jìn)程是否需要占用當(dāng)前命令終端,手工啟動(dòng)分為以下兩類(lèi)

    • 前臺(tái)啟動(dòng):用戶(hù)輸入命令,直接執(zhí)行程序,但得等到該進(jìn)程結(jié)束并退出才能繼續(xù)執(zhí)行其他命令
    • 后臺(tái)啟動(dòng):在命令行尾加入“&”符號(hào);無(wú)需等待,適用于等待時(shí)間較長(zhǎng)的操作
  • 示例:

[root@localhost ~]# cp /dev/cdrom mycd.iso & [1] 4226 ##輸出信息包括后臺(tái)任務(wù)序號(hào)和PID號(hào)

②調(diào)動(dòng)啟用

  • 在服務(wù)器維護(hù)工作中,經(jīng)常需要執(zhí)行一些比較費(fèi)時(shí)而且較占用資源的任務(wù)(如數(shù)據(jù)備份),這些任務(wù)更適合在相對(duì)空閑的時(shí)候(如半夜)進(jìn)行,但這樣需要用戶(hù)進(jìn)行事前調(diào)度安排并指定任務(wù)運(yùn)行的時(shí)間
  • 調(diào)度啟動(dòng)的計(jì)劃任務(wù)進(jìn)程均在后臺(tái)進(jìn)行,不占用用戶(hù)的命令終端
  • 使用”at“命令時(shí),設(shè)置一次性計(jì)劃任務(wù),使用”crontab"命令,設(shè)置周期性計(jì)劃任務(wù)

2、進(jìn)程的前后臺(tái)調(diào)度

①掛起當(dāng)前進(jìn)程

當(dāng)Linux操作系統(tǒng)中的命令正在前臺(tái)執(zhí)行時(shí)(運(yùn)行尚未結(jié)束),按Ctrl+Z組合鍵可以將當(dāng)前進(jìn)程掛起(調(diào)入后臺(tái)并停止執(zhí)行),這種操作在需要暫停當(dāng)前進(jìn)程并進(jìn)行其他操作時(shí)特別有用。例如,打包usr并且調(diào)入后臺(tái) ,可以按 Ctrl+Z 組合鍵將該下載任務(wù)調(diào)入后臺(tái)并暫停執(zhí)行—tar zcvf usr.tar.gz /usr

②查看后臺(tái)的進(jìn)程

  • jobs—查看當(dāng)前終端中在后臺(tái)運(yùn)行的進(jìn)程任務(wù),結(jié)合“-l”選項(xiàng)可以同時(shí)顯示該進(jìn)程的PID號(hào)

③將后臺(tái)的進(jìn)程恢復(fù)運(yùn)行

  • bg; 將后臺(tái)暫停執(zhí)行的任務(wù)恢復(fù)運(yùn)行并繼續(xù)在后臺(tái)執(zhí)行
  • fg:將后臺(tái)暫停執(zhí)行的任務(wù)恢復(fù)運(yùn)行并恢復(fù)至前臺(tái)運(yùn)行
  • 除非后臺(tái)中的任務(wù)只有一個(gè),否則bg和fg命令都需要指定后臺(tái)進(jìn)程的任務(wù)編號(hào)作為參數(shù)
  • 例如:“fg 1(任務(wù)編號(hào))”

3、終止進(jìn)程執(zhí)行

  • 當(dāng)用戶(hù)在前臺(tái)執(zhí)行某個(gè)進(jìn)程時(shí),可以用Ctrl+C組合鍵強(qiáng)制中斷當(dāng)前正在執(zhí)行的命令
  • 當(dāng)按 Ctrl+C 組合鍵無(wú)法終止程序或者需要結(jié)束在其他終端或后臺(tái)運(yùn)行的進(jìn)程時(shí), 可以使用專(zhuān)用的進(jìn)程終止工具 kill、killall 和 pkill

①kill

  • kill用于終止指定PID號(hào)的進(jìn)程,需要使用進(jìn)程的PID號(hào)作為參數(shù)
  • 若該進(jìn)程不響應(yīng)終止信號(hào),則結(jié)合“-9”選項(xiàng)可以強(qiáng)制終止

②killall

  • 使用 killall 命令可以通過(guò)進(jìn)程名稱(chēng)來(lái)終止進(jìn)程,當(dāng)需要結(jié)束系統(tǒng)中多個(gè)相同名稱(chēng)的進(jìn)程時(shí),使用 killall 命令將更加方便,效率更高。killall 命令同樣也有“-9”選項(xiàng)。

  • 例如,執(zhí)行如下的“killall -9 vim”命令可將所有名為 vim 的進(jìn)程都強(qiáng)行終止

    ——通過(guò)進(jìn)程名終止多個(gè)進(jìn)程

③pkill

  • 根據(jù)進(jìn)程的名稱(chēng)、運(yùn)行該進(jìn)程的用戶(hù)、進(jìn)程所在的終端等多種屬性終止特定的進(jìn)程
  • 與“pgrep”命令選項(xiàng)類(lèi)似,如“-U(指定用戶(hù)名)”、“-t(指定終端)”
pgrep –l -U "xjj" #確認(rèn)目標(biāo)進(jìn)程相關(guān)信息pkill -9 -U "xjj" #強(qiáng)行終止用戶(hù)xjj的進(jìn)程pgrep -l -U "xjj" #確認(rèn)目標(biāo)進(jìn)程已被終止

三、一次性計(jì)劃任務(wù)—at

  • 在 Linux 操作系統(tǒng)中,除了用戶(hù)即時(shí)執(zhí)行的命令操作以外,還可以配置在指定的時(shí)間、指定的日期執(zhí)行預(yù)先計(jì)劃的系統(tǒng)管理任務(wù)(如定期備份、定期采集監(jiān)測(cè)數(shù)據(jù))。CentOS 系統(tǒng)中默認(rèn)已安裝了 at、cronie 軟件包

  • 設(shè)置一次性計(jì)劃時(shí),在at命令中依次指定計(jì)劃執(zhí)行任務(wù)的時(shí)間、日期作為參數(shù)

  • 確認(rèn)后進(jìn)入帶“at>”提示符的任務(wù)編輯器界面,每行設(shè)置一條執(zhí)行命令,可以依次設(shè)置多條語(yǔ)句,最后按Ctrl+D組合鍵提交任務(wù)

  • 注:計(jì)劃執(zhí)行任務(wù)的時(shí)間、日期必須安排在當(dāng)前系統(tǒng)時(shí)間之后

  • 對(duì)應(yīng)條件:對(duì)應(yīng)系統(tǒng)服務(wù)為atd,必須已經(jīng)運(yùn)行

  • “atq”命令可以進(jìn)行查詢(xún),對(duì)于已經(jīng)設(shè)置但還未執(zhí)行(未到時(shí)間點(diǎn))的計(jì)劃任務(wù),但已執(zhí)行過(guò)的不會(huì)再出現(xiàn)在列表中
  • "atrm"命令可以刪除指定編號(hào)的at任務(wù)

四、周期性任務(wù)設(shè)置—crontab

  • 使用crontab命令設(shè)置的計(jì)劃任務(wù)可以按預(yù)設(shè)的周期重復(fù)執(zhí)行,可以大大減輕設(shè)置重復(fù)性系統(tǒng)管理任務(wù)的操作

  • 由軟件包c(diǎn)ronie提供crontab工具、系統(tǒng)服務(wù)crond和配置文件/etc/crontab

  • 前提條件:對(duì)應(yīng)的系統(tǒng)服務(wù)crond必須已經(jīng)運(yùn)行

1、配置文件和目錄

  • crond 通過(guò)多個(gè)目錄和文件設(shè)置計(jì)劃任務(wù),不同類(lèi)型的任務(wù)由不同的配置文件來(lái)設(shè)置

①系統(tǒng)任務(wù)配置文件,位于文件:/etc/crontab

  • 設(shè)置的是維護(hù)Linux系統(tǒng)所需的任務(wù),由Linux系統(tǒng)及相關(guān)程序在安裝時(shí)自動(dòng)設(shè)置,不建議用戶(hù)修改
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash #設(shè)置執(zhí)行計(jì)劃任務(wù)的Shell 環(huán)境 PATH=/sbin:/bin:/usr/sbin:/usr/bin #定義可執(zhí)行命令及程序的路徑 MAILTO=root #將任務(wù)輸出信息發(fā)送到指定用戶(hù)的郵箱

②系統(tǒng)默認(rèn)的設(shè)置,位于目錄:/etc/cron.*/

  • 軟件包c(diǎn)rontabs安裝后,會(huì)在此目錄下升恒一些系統(tǒng)默認(rèn)設(shè)置的計(jì)劃任務(wù)目錄,設(shè)置了系統(tǒng)每個(gè)小時(shí)、每一天做些什么工作

③用戶(hù)定義的設(shè)置,位于文件:/var/spool/cron/

  • 由用戶(hù)使用crontab命令設(shè)置的cron計(jì)劃會(huì)被保存在此目錄中(會(huì)在此目錄中生成一個(gè)與用戶(hù)名相同的文件)

crond 守護(hù)進(jìn)程會(huì)自動(dòng)檢查/etc/crontab 文件、/etc/cron.d/目錄及 /var/spool/cron/目錄中的改變,如果發(fā)現(xiàn)有配置更改,它們就會(huì)被載入內(nèi)存,所以當(dāng)某個(gè) crontab 文件改變后并不需要重新啟動(dòng) crond 守護(hù)進(jìn)程就可以使設(shè)置生效

2、管理crontab計(jì)劃任務(wù)

-u 用戶(hù)名指定XX用戶(hù)的cron服務(wù)
-l列出當(dāng)前用戶(hù)下的cron的詳細(xì)內(nèi)容
-u zx -l列出zx用戶(hù)下的cron的詳細(xì)內(nèi)容
-r刪除所有用戶(hù)的cron內(nèi)容,普通用戶(hù)執(zhí)行,只刪除自己的cron內(nèi)容
-r -u zx刪除zx用戶(hù)的cron內(nèi)容
-e編輯cron服務(wù)

3、crontab 任務(wù)配置的格式

字段說(shuō)明
分鐘取值為從0到59之間的任意整數(shù)
小時(shí)取值為從0到23之間的任意整數(shù)
日期取值為從1到31之間的任意整數(shù)
月份取值為從1到12之間的任意整數(shù)
星期取值為從0到7之間的任意整數(shù),0或7代表星期日
命令要執(zhí)行的命令或程序腳本

背記口訣(牢記):分 時(shí) 日 月 周

4、時(shí)間數(shù)值的特殊表示方法

①特殊表示方式及示例

  • “*”表示該范圍內(nèi)的任意時(shí)間

  • “,”表示一個(gè)間隔內(nèi)的多個(gè)不連續(xù)時(shí)間點(diǎn)

  • “-”表示一個(gè)連續(xù)的時(shí)間范圍

  • “/”表示間隔的時(shí)間頻率

    示例1:

若要按固定的周期重復(fù)完成一些系統(tǒng)管理任務(wù),任務(wù)內(nèi)容如下:①每天早上 7:50
自動(dòng)開(kāi)啟httpd 服務(wù),22:50 關(guān)閉 httpd 服務(wù);②每隔五天清空一次 FTP 服務(wù)器公共目錄/var/ftp/pub 中的數(shù)據(jù);③每周六的 7:30 重新啟動(dòng)系統(tǒng)中的 httpd 服務(wù);④每周一、周三、周五的下午 17:30,使用 tar 命令自動(dòng)備份/etc/httpd 目錄,則可由 root 用戶(hù)通過(guò) crontab 設(shè)置以下計(jì)劃任務(wù)

[root@localhost ~]# crontab -e 50 7 * * * /usr/bin/systemctl start httpd.service 50 22 * * * /usr/bin/systemctl stop httpd.servic 0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /usr/bin/systemctl httpd restart 30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/ */2 * * * * ls -lh /home/*
  • 因?yàn)閳?zhí)行任務(wù)時(shí)不需要用戶(hù)登錄,建議都使用絕對(duì)路徑,避免因缺少執(zhí)行路徑而無(wú)法執(zhí)行命令的情況

  • 在設(shè)置每分都執(zhí)行的任務(wù)時(shí),“分鐘”字段也應(yīng)填寫(xiě)一個(gè)具體的時(shí)間數(shù)值,而不是默認(rèn)的“*”,否則將會(huì)每分鐘執(zhí)行一次任務(wù)

    示例2:

普通用戶(hù)執(zhí)行“crontab -e”命令時(shí),可以設(shè)置自己的計(jì)劃任務(wù)(需要注意命令的執(zhí)行權(quán)限)。
例如,用戶(hù)xjj 設(shè)置一條計(jì)劃任務(wù):在每周五晚上的 23:55 將/etc/passwd 文件的內(nèi)容復(fù)制到宿主目錄中,保存為 123.txt 文件,具體操作如下:

[xjj @localhost ~]# crontab -e 55 23 * * 5 /usr/bin/cp /etc/passwd /home/xjj/123.txt

②查看用戶(hù)的計(jì)劃任務(wù)表

crontab 命令結(jié)合“-l”選項(xiàng)可以查看當(dāng)前用戶(hù)的計(jì)劃任務(wù)列表,對(duì)于 root 用戶(hù)來(lái)說(shuō),還可以結(jié)合“-u”選項(xiàng)查看其他用戶(hù)的計(jì)劃任務(wù),具體操作如下:

[root@localhost ~]# crontab –l #查看用戶(hù)root 自己的計(jì)劃任務(wù) 50 7 * * * /usr/bin/systemctl start httpd.service 50 22 * * * /usr/bin/systemctl stop httpd.servic 0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /usr/bin/systemctl httpd restart 30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/ [root@localhost ~]# crontab -l -u xjj #查看用戶(hù)xjj的計(jì)劃任務(wù) 55 23 * * 7 /usr/bin/cp /etc/passwd /home/xjj/123.txt [root@localhost ~]# ll /var/spool/cron/xjj -rw-------. 1 root root 57 May 7 11:10 /var/spool/cron/xjj

③刪除用戶(hù)的計(jì)劃任務(wù)表

  • 當(dāng)只需要?jiǎng)h除某一條計(jì)劃任務(wù)時(shí),可以通過(guò)“crontab -e”命令進(jìn)行編輯;而若要清空某個(gè)用戶(hù)的所有計(jì)劃任務(wù),可以執(zhí)行“crontab -r”命令
[xjj@localhost ~]$ crontab -r #用戶(hù)xjj清空自己設(shè)置的計(jì)劃任務(wù) [xjj@localhost ~]$ crontab -l no crontab for xjj

總結(jié)

在生產(chǎn)環(huán)境中設(shè)置相應(yīng)的計(jì)劃任務(wù)可以按預(yù)設(shè)的周期重復(fù)執(zhí)行,可以大大減輕設(shè)置重復(fù)性系統(tǒng)管理任務(wù)的操作

總結(jié)

以上是生活随笔為你收集整理的Linux--进程与任务管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。