Linux進(jìn)程管理與計(jì)劃任務(wù)

進(jìn)程相關(guān)概念

內(nèi)核的功能

進(jìn)程管理、文件系統(tǒng)欠雌、網(wǎng)絡(luò)功能蹄梢、內(nèi)存管理、驅(qū)動(dòng)程序富俄、安全功能等禁炒。

process

進(jìn)程,正在運(yùn)行中的程序的一個(gè)副本霍比,是被加載到內(nèi)存中的指令集和幕袱。

  • PID:進(jìn)程ID,標(biāo)記進(jìn)程悠瞬。
  • init: linux中有一個(gè)總進(jìn)程init,這個(gè)是第一個(gè)進(jìn)程们豌,其他進(jìn)程都由這個(gè)總進(jìn)程創(chuàng)建涯捻。

進(jìn)程優(yōu)先級(jí)

  • 系統(tǒng)優(yōu)先級(jí)(0--139):數(shù)字越小,優(yōu)先級(jí)越高望迎。
  • 實(shí)時(shí)優(yōu)先級(jí)(99--0):值越大障癌,優(yōu)先級(jí)越高。靜態(tài)優(yōu)先級(jí)
  • nice(-20--19):對(duì)應(yīng)系統(tǒng)的100--139 辩尊。動(dòng)態(tài)優(yōu)先級(jí)
  • Big :時(shí)間復(fù)雜度涛浙,用戶和規(guī)模的關(guān)系。
  • LRU算法:淘汰不用時(shí)間最長(zhǎng)的數(shù)據(jù)摄欲。

進(jìn)程的執(zhí)行需要環(huán)境蝗拿,我們稱(chēng)之為上下文(context),也就是包含一些進(jìn)程的屬性(進(jìn)程的執(zhí)行者蒿涎,PID哀托,selinux機(jī)制,組身份)linux內(nèi)核的進(jìn)程工作方式是:搶占式多任務(wù)(也就是分時(shí)操作系統(tǒng))劳秋。

進(jìn)程類(lèi)型

  • 守護(hù)進(jìn)程:daemon仓手,在系統(tǒng)引導(dǎo)過(guò)程中啟動(dòng)的進(jìn)程,和終端無(wú)關(guān)進(jìn)程玻淑。系統(tǒng)啟動(dòng)后自動(dòng)加載到內(nèi)存中在后臺(tái)運(yùn)行嗽冒,也就是后臺(tái)進(jìn)程。
  • 前臺(tái)進(jìn)程:跟終端相關(guān)补履,通過(guò)終端啟動(dòng)的進(jìn)程添坊。關(guān)閉終端就會(huì)中斷。

進(jìn)程狀態(tài)

 運(yùn)行態(tài) running
 就緒態(tài) ready
 睡眠態(tài):可中斷 interruptable
        不可中斷 UNinterruptable
 停止態(tài):stopped 暫停于內(nèi)存箫锤,但不會(huì)被調(diào)度贬蛙,除非手動(dòng)啟動(dòng)
 僵死態(tài):zombie  結(jié)束進(jìn)程,父進(jìn)程結(jié)束前谚攒,子進(jìn)程不關(guān)閉阳准,這種進(jìn)程已經(jīng)處于死狀態(tài),沒(méi)法再次殺死馏臭,只能進(jìn)行重啟系統(tǒng)才可以釋放內(nèi)存野蝇。

系統(tǒng)管理工具

進(jìn)程的分類(lèi)

  • CPU-bound :CPU密集型,主要使用CPU進(jìn)行計(jì)算或邏輯判斷的進(jìn)程
  • I/O-bound :IO密集型括儒,主要使用內(nèi)存和硬盤(pán)進(jìn)行讀寫(xiě)的進(jìn)程绕沈。

Linux系統(tǒng)狀態(tài)的查看及管理工具

pstree  ps  pidof  pgrep  top  htop  glance pmap  vmstat  dstat  kill  pkill job  bg  fg  nohup 

pstree

將進(jìn)程以樹(shù)狀結(jié)構(gòu)顯示,子進(jìn)程為葉子節(jié)點(diǎn)帮寻,其中用{ } 括起來(lái)的是線程乍狐。線程依附于進(jìn)程,不能獨(dú)立存在规婆,進(jìn)程是獨(dú)立內(nèi)存空間的澜躺,線程是可以共享內(nèi)存空間的,線程屬于輕量級(jí)的抒蚜。

pstree.png

知識(shí)小擴(kuò)展: 可以將httpd服務(wù)的進(jìn)程改為線程掘鄙,一般httpd服務(wù)是新建一個(gè)進(jìn)程為用戶提供服務(wù),我們可以將其使用線程來(lái)為用戶提供服務(wù)嗡髓,這樣就可以節(jié)省內(nèi)存資源操漠。可以修改如下文件:vim /etc/sysconfig/httpd
將配置文件中的#HTTPD=/usr/sbin/httpd.worker 前的#去掉饿这,使該配置生效浊伙,重啟服務(wù)就可以了:service httpd restart

ps

報(bào)告當(dāng)前進(jìn)程的快照(所謂的快照也就是當(dāng)前瞬間的狀態(tài))

Linux中各個(gè)進(jìn)程的相關(guān)信息都保存在/proc/目錄下,對(duì)應(yīng)各個(gè)進(jìn)程PID的文件夾长捧,里面有進(jìn)程的所有詳細(xì)信息嚣鄙。

  • 支持三種選項(xiàng):
    • UNIX選項(xiàng) 如-A -e 加-的選項(xiàng)風(fēng)格
    • BSD選項(xiàng) 如a 不加-的選項(xiàng)風(fēng)格
    • GNU選項(xiàng) 如--help --這種長(zhǎng)格式風(fēng)格
    ps使用不同風(fēng)格的選項(xiàng)顯示結(jié)果是不同的,拿ps -a 這個(gè)例子來(lái)說(shuō)串结,
     * ps a  BSD風(fēng)格哑子,顯示比較詳細(xì)
     * ps -a UNIX風(fēng)格,顯示不詳細(xì)肌割。這個(gè)是一個(gè)小小的區(qū)別卧蜓。

選項(xiàng):默認(rèn)顯示當(dāng)前終端中的進(jìn)程

? a 選項(xiàng)包括所有終端中的進(jìn)程
? x 選項(xiàng)包括不鏈接終端的進(jìn)程,也就是包括后臺(tái)(守護(hù))進(jìn)程
? u 選項(xiàng)顯示進(jìn)程所有者的信息
? f 選項(xiàng)顯示進(jìn)程的父進(jìn)程把敞,同時(shí)顯示父進(jìn)程的PPID
? k|--sort 屬性 對(duì)屬性排序
? o 屬性… 選項(xiàng)顯示定制的信息 弥奸,后可接以下的參數(shù),指定顯示特定的信息奋早,該選項(xiàng)必須放在所有選項(xiàng)的最后盛霎,緊跟參數(shù)。
pid耽装、comm摩渺、%cpu、%mem剂邮、state摇幻、VSZ、RSZ挥萌、tty绰姻、euser、ruser

對(duì)于帶有suid權(quán)限的二進(jìn)制命令來(lái)說(shuō)引瀑,該二進(jìn)制文件屬于A狂芋,當(dāng)另一個(gè)B用戶執(zhí)行該二進(jìn)制文件的時(shí)候,這個(gè)命令的生效者是A憨栽,而命令的發(fā)起者是B

  • 參數(shù)的解釋?zhuān)?/p>

    • VSZ: Virtual memory SiZe帜矾,虛擬內(nèi)存集翼虫,線性內(nèi)存
    • RSS: ReSident Size, 常駐內(nèi)存集
    • ni: nice值
    • pri: priority 優(yōu)先級(jí)
    • psr: processor CPU編號(hào)
    • rtprio: 實(shí)時(shí)優(yōu)先級(jí)
    • STAT:進(jìn)程狀態(tài)
      • R:running
      • S: interruptable sleeping
      • D: uninterruptable sleeping
      • T: stopped
      • Z: zombie
      • +: 前臺(tái)進(jìn)程
      • l: 多線程進(jìn)程
      • L:內(nèi)存分頁(yè)并帶鎖
      • N:低優(yōu)先級(jí)進(jìn)程
      • <: 高優(yōu)先級(jí)進(jìn)程
      • s: session leader,會(huì)話(子進(jìn)程)發(fā)起者

    常用組合

    aux
    auo
    -ef

    ps -C commod 可顯示某一命令的進(jìn)程信息屡萤,-C 就是指command

  • 進(jìn)程優(yōu)先級(jí)

    • 進(jìn)程優(yōu)先級(jí)調(diào)整:
      • 靜態(tài)優(yōu)先級(jí):100---139
        進(jìn)程默認(rèn)啟動(dòng)時(shí)的nice 值是0珍剑,優(yōu)先級(jí)為120
        只有root用戶才能降低nice值(提高優(yōu)先級(jí))

nice 命令

nice -n -10 命令 :指定命令執(zhí)行的優(yōu)先級(jí)

renice 命令:

renice 10 pid 調(diào)整正在運(yùn)行的進(jìn)程的優(yōu)先級(jí),重新設(shè)置進(jìn)程優(yōu)先級(jí)(-20----19)

  • 查看進(jìn)程優(yōu)先級(jí)

    ps axo pid,commod,nice 其中axo中的o必須放后面

pgrep

pgrep 工具:專(zhuān)門(mén)支持進(jìn)程搜索
pgrep [option]

-u uid: effective user死陆,生效者
-U uid: real user招拙,真正發(fā)起運(yùn)行命令者
-t terminal: 與指定終端相關(guān)的進(jìn)程,指定終端措译。
-l: 顯示進(jìn)程名
-a: 顯示完整格式的進(jìn)程名
-P pid: 顯示指定進(jìn)程的子進(jìn)程
pgrep命令支持正則表達(dá)式:
pgrep -a "^vi.*"

pidof###

顯示服務(wù)或命令的進(jìn)程pid别凤,可以用來(lái)監(jiān)控服務(wù)

pidof bash 顯示命令的進(jìn)程號(hào)
  如果某個(gè)服務(wù)沒(méi)有啟動(dòng),這時(shí)候查找不到進(jìn)程號(hào)领虹,這個(gè)時(shí)候的echo $?查看到的返回值為1 规哪,可以用這個(gè)原理進(jìn)行監(jiān)控功能服務(wù)是否正常,如果服務(wù)關(guān)閉了塌衰,可以重新啟動(dòng)由缆。
    pidof httpd > /dev/null || systemctl restart httpd.service

tu!!!!!!!

uptime

顯示系統(tǒng)的負(fù)載均衡

顯示當(dāng)前時(shí)間,系統(tǒng)已啟動(dòng)的時(shí)間猾蒂、當(dāng)前上線人數(shù)均唉,系統(tǒng)平均負(fù)載(1、5肚菠、10分鐘的平均負(fù)載舔箭,一般不會(huì)超過(guò)1)(如果超過(guò)了1,說(shuō)明每一分鐘就會(huì)有一個(gè)進(jìn)程在等待蚊逢,完成不了层扶。)

  • 系統(tǒng)平均負(fù)載:
    指在特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù)
    通常每個(gè)CPU內(nèi)核的當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3,那么系統(tǒng)的性能良好烙荷。如果每個(gè)CPU內(nèi)核的任務(wù)數(shù)大于5镜会,那么此主機(jī)的性能有嚴(yán)重問(wèn)題
    如果linux主機(jī)是1個(gè)雙核CPU,當(dāng)Load Average 為6的時(shí)候說(shuō)明機(jī)器已經(jīng)被充分使用

tu!!!!!!!!

top

進(jìn)程監(jiān)視工具

 (空間概念:用戶空間(應(yīng)用程序不需要使用內(nèi)核终抽,該程序的進(jìn)程就在用戶空間中進(jìn)行)內(nèi)核空間(應(yīng)用程序的進(jìn)程需要加載內(nèi)核進(jìn)行戳表,內(nèi)核所使用的空間就是內(nèi)核空間)

排序

P:以占據(jù)的CPU百分比,%CPU
M:占據(jù)內(nèi)存百分比,%MEM
T:累積占據(jù)CPU時(shí)長(zhǎng),TIME+
首部信息顯示
uptime信息: l命令
tasks及cpu信息: t命令
cpu分別顯示: 1 (數(shù)字)
memory信息: m命令
退出命令: q
修改刷新時(shí)間間隔: s
終止指定進(jìn)程: k
保存文件: W(大寫(xiě))

欄位信息簡(jiǎn)介

us:用戶空間
sy:內(nèi)核空間
ni:調(diào)整nice時(shí)間
id:空閑
wa:等待IO時(shí)間
hi:硬中斷
si:軟中斷(模式切換)
st:虛擬機(jī)偷走的時(shí)間

  • 進(jìn)入top之前可以指定選項(xiàng):

    • 選項(xiàng):
      -d #: 指定刷新時(shí)間間隔,默認(rèn)為3秒
      -b: 全部顯示所有進(jìn)程
      -n #: 刷新多少次后退出
  • 進(jìn)入top后有如下快捷鍵:
    t 可以打開(kāi)和關(guān)閉'tasks行' 和'%CPU行'(centos6)(centos7中會(huì)有些不一樣)
    1 可以顯示所有CPU內(nèi)核的利用率
    m 可以打開(kāi)和關(guān)閉'Mem行'和'Swap行'
    s 可以輸入數(shù)字昼伴,修改刷新時(shí)間間隔
    l 可以打開(kāi)和關(guān)閉首部的top行信息
    k 可以輸入進(jìn)程的PID殺死進(jìn)程

htop

 **需從Fedora-EPEL源安裝**
    選項(xiàng):
        -d #: 指定延遲時(shí)間匾旭;
        -u UserName: 僅顯示指定用戶的進(jìn)程
        -s COLUME: 以指定字段進(jìn)行排序
    子命令:
        s: 跟蹤選定進(jìn)程的系統(tǒng)調(diào)用
        l: 顯示選定進(jìn)程打開(kāi)的文件列表
        a:將選定的進(jìn)程綁定至某指定CPU核心
        t: 顯示進(jìn)程樹(shù)

內(nèi)存工具

vmstat

虛擬內(nèi)存信息
-s: 顯示內(nèi)存的統(tǒng)計(jì)數(shù)據(jù)

vmstat 2   加一個(gè)數(shù)字是指定每隔幾秒刷新一次,
vmstat 2 5 加兩個(gè)數(shù)字圃郊,前一個(gè)數(shù)字是表示每隔多少秒刷新一次价涝,后一個(gè)數(shù)字是指刷新多少次退出。
  • vmstat 命令結(jié)果中的菜單項(xiàng)
    • procs:
      r:可運(yùn)行(正運(yùn)行或等待運(yùn)行)進(jìn)程的個(gè)數(shù)持舆,和核心數(shù)有關(guān)
      b:處于不可中斷睡眠態(tài)的進(jìn)程個(gè)數(shù)(被阻塞的隊(duì)列的長(zhǎng)度)
    • memory:
      **swpd: **交換內(nèi)存的使用總量
      free:空閑物理內(nèi)存總量
      buffer:用于buffer的內(nèi)存總量
      cache:用于cache的內(nèi)存總量
    • swap:
      si:從磁盤(pán)交換進(jìn)內(nèi)存的數(shù)據(jù)速率(kb/s)
      so:從內(nèi)存交換至磁盤(pán)的數(shù)據(jù)速率(kb/s)
      io:
      bi:從塊設(shè)備讀入數(shù)據(jù)到系統(tǒng)的速率(kb/s)
      **bo: **保存數(shù)據(jù)至塊設(shè)備的速率
    • system:
      in: interrupts 中斷速率色瘩,包括時(shí)鐘
      cs: context switch 進(jìn)程切換速率
    • cpu:
      us:Time spent running non-kernel code (用戶空間利用率)
      sy:Time spent running kernel code (系統(tǒng)內(nèi)核空間利用率)
      id:Time spent idle. Linux 2.5.41前,包括IO-wait time.(CPU空閑百分比)
      wa: Time spent waiting for IO. 2.5.41前伪窖,包括in idle. (CPU等待IO時(shí)間)
      st: Time stolen from a virtual machine. 2.6.11前, unknown.(被偷走的內(nèi)存空間)

iostat

統(tǒng)計(jì)CPU和設(shè)備IO信息

示例
iostat 1 10
iostat 2 加一個(gè)數(shù)字是指定每隔幾秒刷新一次,

iostat 2 5 加兩個(gè)數(shù)字居兆,前一個(gè)數(shù)字是表示每隔多少秒刷新一次覆山,后一個(gè)數(shù)字是指刷新多少次退出。

pmap

進(jìn)程對(duì)應(yīng)的內(nèi)存映射,進(jìn)程的運(yùn)行占用內(nèi)存的地址對(duì)應(yīng)關(guān)系

  • pmap [options] pid [...]
    -x | -d : 顯示詳細(xì)格式的信息
    • 示例:pmap 1
      另外一種實(shí)現(xiàn):
      cat /proc/PID/maps

系統(tǒng)監(jiān)控工具

glances

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-Ppassword] [--password] [-t refresh] [-f file] [-o output]
內(nèi)建命令:
        a Sort processes automatically 
        l Show/hide logs
        c Sort processes by CPU% 
        b Bytes or bits for network I/O
        m Sort processes by MEM% 
        w Delete warning logs
        p Sort processes by name 
        x Delete warning and critical logs
        i Sort processes by I/O rate 
        1 Global CPU or per-CPU stats
        d Show/hide disk I/O stats 
        h Show/hide this help screen
        f Show/hide file system stats 
        t View network I/O as combination
        n Show/hide network stats 
        u View cumulative network I/O
        s Show/hide sensors stats 
        q Quit (Esc and Ctrl-C also work)
        y Show/hide hddtemp stats
    常用選項(xiàng):
        -b: 以Byte為單位顯示網(wǎng)卡數(shù)據(jù)速率
        -d: 關(guān)閉磁盤(pán)I/O模塊
        -f /path/to/somefile: 設(shè)定輸入文件位置
        -o {HTML|CSV}:輸出格式
        -m: 禁用mount模塊
        -n: 禁用網(wǎng)絡(luò)模塊
        -t #: 延遲時(shí)間間隔
        -1:每個(gè)CPU的相關(guān)數(shù)據(jù)單獨(dú)顯示
  • C/S模式下運(yùn)行g(shù)lances命令
    • 服務(wù)器模式:

      glances -s -B IPADDR
      IPADDR: 指明監(jiān)聽(tīng)的本機(jī)哪個(gè)地址
      也可以不指定-B IPADDR史辙,這樣默認(rèn)監(jiān)聽(tīng)本機(jī)上所有的端口汹买,客戶端可以通過(guò)任意一個(gè)本機(jī)的IP地址進(jìn)行監(jiān)控佩伤。一旦-B IPADDR之后聊倔,就將glances服務(wù)器端綁定到了固定的Ip上,客戶端只有通過(guò)綁定的IP地址才可以進(jìn)行監(jiān)控生巡。

    • 客戶端模式:

      glances -c IPADDR
      IPADDR:要連入的服務(wù)器端地址

dstat

系統(tǒng)資源統(tǒng)計(jì),代替vmstat,iostat

  • dstat [-afv] [options..] [delay [count]]
    -c: 顯示cpu相關(guān)信息
    -C #,#,...,total
    -d: 顯示disk相關(guān)信息
    -D total,sda,sdb,...
    -g:顯示page相關(guān)統(tǒng)計(jì)數(shù)據(jù)
    -m: 顯示memory相關(guān)統(tǒng)計(jì)數(shù)據(jù)
    -n: 顯示network相關(guān)統(tǒng)計(jì)數(shù)據(jù)
    -p: 顯示process相關(guān)統(tǒng)計(jì)數(shù)據(jù)
    -r: 顯示io請(qǐng)求相關(guān)的統(tǒng)計(jì)數(shù)據(jù)
    -s: 顯示swapped相關(guān)的統(tǒng)計(jì)數(shù)據(jù)

kill

向進(jìn)程發(fā)送控制信號(hào)耙蔑,以實(shí)現(xiàn)對(duì)進(jìn)程管理,每個(gè)信號(hào)對(duì)應(yīng)一個(gè)數(shù)字,信號(hào)名稱(chēng)以SIG開(kāi)頭(可省略)孤荣,不區(qū)分大小寫(xiě)甸陌,kill命令默認(rèn)發(fā)送15代碼信號(hào)。
顯示當(dāng)前系統(tǒng)可用信號(hào): kill –l,trap -l
常用信號(hào):man 7 signal

kill命令并不是只是用來(lái)殺死進(jìn)程的盐股,它是用來(lái)給進(jìn)程發(fā)送信號(hào)的钱豁,所謂的殺死進(jìn)程其實(shí)是,給進(jìn)程發(fā)送信號(hào)疯汁,讓進(jìn)程自己自動(dòng)終結(jié)牲尺。
    1) SIGHUP: 無(wú)須關(guān)閉進(jìn)程而讓其重讀配置文件
    2) SIGINT: 中止正在運(yùn)行的進(jìn)程;相當(dāng)于Ctrl+c
    3) SIGQUIT:相當(dāng)于ctrl+\
    9) SIGKILL: 強(qiáng)制殺死正在運(yùn)行的進(jìn)程
    15) SIGTERM:終止正在運(yùn)行的進(jìn)程
    18) SIGCONT:繼續(xù)運(yùn)行
    19) SIGSTOP:后臺(tái)休眠
    指定信號(hào)的方法:
    (1) 信號(hào)的數(shù)字標(biāo)識(shí):1, 2, 9
    (2) 信號(hào)完整名稱(chēng):SIGHUP (3) 信號(hào)的簡(jiǎn)寫(xiě)名稱(chēng):HUP

kill -0 pid 使用0信號(hào)幌蚊,可以對(duì)進(jìn)程進(jìn)行錯(cuò)誤檢查谤碳。如果進(jìn)程不正常,會(huì)返回錯(cuò)誤信息溢豆,返回值為非0蜒简,如果進(jìn)程正常返回正確的0值,這個(gè)可以用來(lái)檢測(cè)進(jìn)程是否正常漩仙。

 對(duì)于有些進(jìn)程是不能殺死的搓茬,例如tty2、tty3队他、tty4垮兑、tty5、tty6這些控制臺(tái)進(jìn)程是殺不死的漱挎。
      kill (tty)pid (默認(rèn)發(fā)送15代碼信號(hào))殺不死
      kill -9 (tty)pid  殺不死

可以有殺死的辦法:

先將所有進(jìn)程的父進(jìn)程pid=1 init這個(gè)進(jìn)程殺死系枪。雖然殺不死,但是會(huì)對(duì)init這個(gè)進(jìn)程造成一定得傷害磕谅,使init進(jìn)程自身的一些功能受到一些破壞私爷,造成進(jìn)程的不完整性雾棺。
這個(gè)時(shí)候再次進(jìn)行kill -9 tty(pid) 就會(huì)把控制臺(tái)終端進(jìn)程殺死。

Killall衬浑、pkill

killall Pname :指定進(jìn)程名捌浩,可以批量殺死進(jìn)程,不需要一個(gè)個(gè)指定進(jìn)程編號(hào)那么麻煩工秩。

  • pkill [options] pattern
    • option

      -SIGNAL
      -u uid: effective user尸饺,生效者
      -U uid: real user,真正發(fā)起運(yùn)行命令者
      -t terminal: 與指定終端相關(guān)的進(jìn)程
      -l: 顯示進(jìn)程名(pgrep可用)
      -a: 顯示完整格式的進(jìn)程名(pgrep可用)
      -P pid: 顯示指定進(jìn)程的子進(jìn)程
      可加選項(xiàng)指定特定進(jìn)程特定的條件將進(jìn)程殺死助币。

作業(yè)管理

Linux的作業(yè)控制

前臺(tái)作業(yè):通過(guò)終端啟動(dòng)浪听,且啟動(dòng)后一直占據(jù)終端;
后臺(tái)作業(yè):可通過(guò)終端啟動(dòng)眉菱,但啟動(dòng)后即轉(zhuǎn)入后臺(tái)運(yùn)行(釋放終端)

作業(yè)在后臺(tái)有兩種狀態(tài):后臺(tái)運(yùn)行迹栓、后臺(tái)休眠

(1) 運(yùn)行中的作業(yè): Ctrl+z 將作業(yè)放入后臺(tái)休眠
(2) 尚未啟動(dòng)的作業(yè):# COMMAND & 命令后加上& 符號(hào)

  后臺(tái)作業(yè)雖然被送往后臺(tái)運(yùn)行,但其依然與終端相關(guān)俭缓;退出終端克伊,將關(guān)閉后臺(tái)作業(yè)。如果希望送往后臺(tái)后华坦,剝離與終端的關(guān)系
  • nohup COMMAND &
    例如:nohup ping 127.0.1 & 關(guān)閉終端后愿吹,作業(yè)仍然在后臺(tái)進(jìn)行作業(yè)不會(huì)中斷。
  • screen;COMMAND
    這個(gè)是新開(kāi)一個(gè)screen惜姐,將作業(yè)放進(jìn)去執(zhí)行犁跪。

查看當(dāng)前終端所有作業(yè)
# jobs 顯示后臺(tái)作業(yè)的編號(hào)
作業(yè)控制
# fg [作業(yè)的編號(hào)]:把指定的后臺(tái)作業(yè)調(diào)回前臺(tái)
# bg [作業(yè)的編號(hào)]:讓送往后臺(tái)的作業(yè)在后臺(tái)繼續(xù)運(yùn)行
# kill [%作業(yè)的編號(hào)]: 終止指定的作業(yè)(作業(yè)編號(hào)前要加%)

作業(yè)并行運(yùn)行
同時(shí)運(yùn)行多個(gè)進(jìn)程,提高效率载弄,這個(gè)思想也可以作用與命令耘拇,可以讓不同的命令并行執(zhí)行。

方法1
vi all.sh 編寫(xiě)一個(gè)腳本宇攻,在腳本中添加不同的腳本或命令惫叛,在每一個(gè)腳本或命令后加上一個(gè)&符號(hào)
f1.sh&
f2.sh&
f3.sh&
方法2
(f1.sh&);(f2.sh&);(f3.sh&) 可以作用與腳本或命令
方法3
{ f1.sh& f2.sh& f3.sh& } 可以作用與腳本或命令

任務(wù)計(jì)劃

  • 執(zhí)行一次:at 在指定的時(shí)間點(diǎn)執(zhí)行一次指定的命令
  • 空閑時(shí)執(zhí)行:batch 系統(tǒng)自動(dòng)選擇空閑的時(shí)間去執(zhí)行指定的命令(也就是系統(tǒng)負(fù)載較低的情況下)
  • 周期性執(zhí)行:cron 根據(jù)指定的時(shí)間自動(dòng)的周期性執(zhí)行指定的動(dòng)作。

at

(交互式任務(wù)計(jì)劃逞刷,按Ctrl + D 完成指定任務(wù)退出交互)

    可以通過(guò)管道和重定向?qū)⒂?jì)劃任務(wù)輸入at嘉涌,例如:
        cat at.txt | at 14:00
        at 14:00 < at.txt
首先需要安裝at包
安裝完后需要啟動(dòng)該服務(wù),在不同的操作系統(tǒng)下服務(wù)位置不同夸浅,例如:
    centos6中
        /etc/rc.d/init.d/atd  服務(wù)路徑
        service atd start     啟動(dòng)服務(wù)
    centos7中
        /usr/lib/systemd/system/atd.service  服務(wù)路徑
        systemctl start atd.service     啟動(dòng)服務(wù)
        chkconfig atd.service on     指定開(kāi)機(jī)自啟動(dòng)
  • 常用選項(xiàng):
    -V 顯示版本信息:
    -l 列出指定隊(duì)列中等待運(yùn)行的作業(yè)仑最;相當(dāng)于atq
    -d:刪除指定的作業(yè);相當(dāng)于atrm
    -c 查看具體作業(yè)任務(wù)
    -f /path/from/somefile:從指定的文件中讀取任務(wù)
    -m 當(dāng)任務(wù)被完成之后帆喇,將給用戶發(fā)送郵件警医,即使沒(méi)有標(biāo)準(zhǔn)輸出
    注意:作業(yè)執(zhí)行命令的結(jié)果中的標(biāo)準(zhǔn)輸出和錯(cuò)誤以郵件通知給相關(guān)用戶
  **時(shí)間格式**:
        可以在具提的時(shí)間點(diǎn)后加上時(shí)間來(lái)指定執(zhí)行的時(shí)間,例如:
         at now + 5 minutes
        時(shí)間點(diǎn)有:noon(12:00) midnight(24:00) teatime(16:00) tomorrow 
        now + {minutes,hours,days, OR weeks} 

        HH:MM 02:00
            在今日的 HH:MM 進(jìn)行,若該時(shí)刻已過(guò)预皇,則明天此時(shí)執(zhí)行任務(wù)
        HH:MM YYYY-MM-DD 02:00 2016-09-20
            規(guī)定在某年某月的某一天的特殊時(shí)刻進(jìn)行該項(xiàng)任務(wù)
        HH:MM[am|pm] [Month] [Date]
            04pm March 17
            17:20 tomorrow
        HH:MM[am|pm] + number [minutes|hours|days|weeks]
            在某個(gè)時(shí)間點(diǎn)再加幾個(gè)時(shí)間后才進(jìn)行該項(xiàng)任務(wù)
            now + 5 minutes
            02pm + 3 days
at 任務(wù)隊(duì)列存放在:/var/spool/at/目錄中
    并不是所有的用戶都可以使用at命令:
    安裝過(guò)at命令后會(huì)有兩個(gè)文件:
        白名單:/etc/at.allow   默認(rèn)不存在
        黑名單:/etc/at.deny    默認(rèn)存在
    白名單和黑名單中放用戶名侈玄,有如下幾種情況:
        兩個(gè)文件都不存在,只有root用戶可以使用at計(jì)劃任務(wù)
        如果不存在白明單吟温,不在黑名單中的用戶可以使用at命令序仙。
        存在白名單,白名單的優(yōu)先級(jí)高于黑名單鲁豪,有白名單黑名單就不起作用潘悼,不在白名單中的用戶不能使用at命令。

cron

周期性計(jì)劃任務(wù)(計(jì)劃任務(wù)中不要有標(biāo)準(zhǔn)輸出爬橡,否則會(huì)以郵件方式發(fā)送個(gè)管理員)

 相關(guān)的程序包:
    cronie: 主程序包治唤,提供crond守護(hù)進(jìn)程及相關(guān)輔助工具
    cronie-anacron:cronie的補(bǔ)充程序,用于監(jiān)控cronie任務(wù)執(zhí)行狀況堤尾,如cronie中的任務(wù)在過(guò)去該運(yùn)行的時(shí)間點(diǎn)未能正常運(yùn)行肝劲,則anacron會(huì)隨后啟動(dòng)一次此任務(wù)
    crontabs:包含CentOS提供系統(tǒng)維護(hù)任務(wù)
    創(chuàng)建周期性任務(wù)的命令是主程序包提供的crontab命令:/usr/bin/crontab
    首先要保證crond.service 服務(wù)開(kāi)啟
        centos6 :service crond.service start
        centos7 :systemctl start crond.service
    周期性計(jì)劃任務(wù)的日志在:/var/log/cron
  • 創(chuàng)建周期性計(jì)劃任務(wù)有兩種方法:
    • 一迁客、通過(guò)編輯文件:/etc/crontab
      在該文件中編輯指定時(shí)間就可以了格式為:
      * * * * * user command
    • 二郭宝、通過(guò)命令進(jìn)行指定:
      crontab -e 該命令一執(zhí)行就會(huì)自動(dòng)進(jìn)入編輯類(lèi)似于/etc/crontab的文件,格式也是:
      * * * * * user command
  • 時(shí)間表示法:
    • (1) 特定值
      給定時(shí)間點(diǎn)有效取值范圍內(nèi)的值
    • (2) *
      給定時(shí)間點(diǎn)上有效取值范圍內(nèi)的所有值
      表示“每...”
    • (3) 離散取值
      #,#,# 1,4,6
  • 時(shí)間表示法
    • (4) 連續(xù)取值
      #-# 6-19
      (5) 在指定時(shí)間范圍上掷漱,定義步長(zhǎng)
      /#: #即為步長(zhǎng) 例如:*/5(沒(méi)五分鐘執(zhí)行一次)

在文件中也可以這樣編輯:

例如
@reboot root echo nihao 每次重啟之后以root身份執(zhí)行命令粘室。
@yearly root echo nihao 每年執(zhí)行一次
@reboot Run once after reboot.

  • @yearly 0 0 1 1 *
    + @annually 0 0 1 1 *
    + @monthly 0 0 1 * *
    + @weekly 0 0 * * 0
    + @daily 0 0 * * *
    + @hourly 0 * * * *
示例:每3小時(shí)echo和wall命令
    0 */3 * * * centos /bin/echo “howdy”;/usr/bin/wall “welcome to jiakehome!”
系統(tǒng)的計(jì)劃任務(wù):
    /etc/crontab
    /etc/cron.d/ 配置文件
    /etc/cron.hourly/ 腳本
    /etc/cron.daily/ 腳本
    /etc/cron.weekly/ 腳本
    /etc/cron.monthly/腳本
    定義了每周、每天卜范、每月衔统、每小時(shí)要執(zhí)行的計(jì)劃任務(wù)

選項(xiàng)
-l: 列出所有任務(wù);
-e: 編輯任務(wù)海雪;
-r: 移除所有任務(wù)锦爵;
-i:同-r一同使用,以交互式模式移除指定任務(wù)
-u user: 僅root可運(yùn)行奥裸,指定用戶管理cron任務(wù)

crontab這命令任何用戶都可以使用险掀,它也有白名單和黑名單,
        白名單:/etc/cron.allow   默認(rèn)不存在
        黑名單:/etc/cron.deny    默認(rèn)存在
    白名單和黑名單中放用戶名湾宙,有如下幾種情況:
        兩個(gè)文件都不存在樟氢,只有root用戶可以使用at計(jì)劃任務(wù)
        如果不存在白明單,不在黑名單中的用戶可以使用at命令侠鳄。
        存在白名單埠啃,白名單的優(yōu)先級(jí)高于黑名單,有白名單黑名單就不起作用伟恶,不在白名單中的用戶不能使用at命令碴开。
每當(dāng)有用戶創(chuàng)建一個(gè)周期性執(zhí)行任務(wù)的時(shí)候都會(huì)在/var/spool/cron/目錄下有一個(gè)對(duì)應(yīng)的用戶文件。該文件就是對(duì)應(yīng)用戶的周期性執(zhí)行任務(wù)的cron文件博秫,每個(gè)用戶只有一個(gè)對(duì)應(yīng)用戶名字的文件潦牛,如果用戶想多次創(chuàng)建多個(gè)周期性計(jì)劃任務(wù)鹃骂,則打開(kāi)的是同一個(gè)文件。

當(dāng)作業(yè)需要精確到秒級(jí)別的時(shí)候可以使用sleep命令來(lái)配合操作罢绽,例如:
* * * * * root for A in {0-9};do echo $A;sleep 20; done

    還可以通過(guò)sleep 定義各種時(shí)長(zhǎng):
        sleep 數(shù)字[prefix]
            prefix : s  秒畏线,默認(rèn)
                     d  天,
                     m  分良价,
                     h  小時(shí)寝殴,
crontab -e 默認(rèn)使用的是vi工具打開(kāi)的文件,可以在/etc/profile.d/目錄下定義一個(gè)環(huán)境變量:
    export EDITOR=vim
就可以默認(rèn)使用vim 編輯器打開(kāi)了明垢。

蚣常!*!對(duì)于cron任務(wù)來(lái)講痊银,%有特殊用途抵蚊;如果在命令中要使用%,則需要轉(zhuǎn)義溯革,將%放置于單引號(hào)中贞绳,則可不用轉(zhuǎn)義

注意:運(yùn)行結(jié)果的標(biāo)準(zhǔn)輸出和錯(cuò)誤以郵件通知給相關(guān)用戶
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null

anacron系統(tǒng)

? 運(yùn)行計(jì)算機(jī)關(guān)機(jī)時(shí)cron不運(yùn)行的任務(wù),CentOS6以后版本取消anacron服務(wù)致稀,由crond服務(wù)管理
? 對(duì)筆記本電腦冈闭、臺(tái)式機(jī)、工作站抖单、偶爾要關(guān)機(jī)的服務(wù)器及其它不一直開(kāi)機(jī)的系統(tǒng)很重要對(duì)很有用

 配置文件:/etc/anacrontab萎攒,負(fù)責(zé)執(zhí)行/etc/ cron.daily
    /etc/cron.weekly /etc/cron.monthly中系統(tǒng)任務(wù)。
    ? 字段1:如果在這些日子里沒(méi)有運(yùn)行這些任務(wù)……
    ? 字段2:在重新引導(dǎo)后等待這么多分鐘后運(yùn)行它
    ? 字段3:任務(wù)識(shí)別器矛绘,在日志文件中標(biāo)識(shí)
    ? 字段4:要執(zhí)行的任務(wù)
    - 由/etc/cron.hourly/0anacron執(zhí)行
    - 當(dāng)執(zhí)行任務(wù)時(shí)耍休,更新/var/spool/anacron/cron.daily 文件
    的時(shí)間戳

知識(shí)小擴(kuò)展


windows遠(yuǎn)程桌面連接:運(yùn)行輸入"mstsc",打開(kāi)遠(yuǎn)程連接終端。輸入對(duì)方的IP地址货矮。

內(nèi)存泄漏:應(yīng)用程序占用內(nèi)存不釋放羊精,造成內(nèi)存占用越來(lái)越大。
例如應(yīng)用程序打開(kāi)數(shù)據(jù)庫(kù)次屠,不進(jìn)行關(guān)閉园匹,造成占用內(nèi)存不釋放。
可以使用pmap 內(nèi)存工具查看某一進(jìn)程內(nèi)存占用情況劫灶。

更改httpd服務(wù)的主目錄

  • 原網(wǎng)頁(yè)存放目錄:/var/www/html
  • 需要修改的文件:/etc/httpd/conf/httpd.conf
  • DecumentRoot "PATH" PATH改為你指定的目錄
  • kill -1 httpd進(jìn)程編號(hào) 讓該服務(wù)重新讀配置文件使更改后的配置文件生效裸违。

echo $$ 查看當(dāng)前bash的進(jìn)程編號(hào)

crontab -e -Uwang 編輯的文件,默認(rèn)是vi 打開(kāi)本昏,定義環(huán)境變量可以使用vim打開(kāi):export EDITOR=vim
計(jì)劃任務(wù)中的任務(wù)不要帶輸出供汛,否則會(huì)給指定用戶發(fā)郵件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怔昨,隨后出現(xiàn)的幾起案子雀久,更是在濱河造成了極大的恐慌,老刑警劉巖趁舀,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赖捌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矮烹,警方通過(guò)查閱死者的電腦和手機(jī)越庇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奉狈,“玉大人卤唉,你說(shuō)我怎么就攤上這事∪势冢” “怎么了桑驱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)跛蛋。 經(jīng)常有香客問(wèn)我熬的,道長(zhǎng),這世上最難降的妖魔是什么问芬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任悦析,我火速辦了婚禮寿桨,結(jié)果婚禮上此衅,老公的妹妹穿的比我還像新娘。我一直安慰自己亭螟,他們只是感情好挡鞍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著预烙,像睡著了一般墨微。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扁掸,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天翘县,我揣著相機(jī)與錄音,去河邊找鬼谴分。 笑死锈麸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牺蹄。 我是一名探鬼主播忘伞,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了氓奈?” 一聲冷哼從身側(cè)響起翘魄,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舀奶,沒(méi)想到半個(gè)月后暑竟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡育勺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年光羞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怀大。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纱兑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出化借,到底是詐尸還是另有隱情潜慎,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布蓖康,位于F島的核電站铐炫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蒜焊。R本人自食惡果不足惜倒信,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泳梆。 院中可真熱鬧鳖悠,春花似錦、人聲如沸优妙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)套硼。三九已至卡辰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間邪意,已是汗流浹背九妈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雾鬼,地道東北人萌朱。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呆贿,于是被迫代替她去往敵國(guó)和親嚷兔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子森渐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 進(jìn)程相關(guān)概念系統(tǒng)進(jìn)程管理工具任務(wù)計(jì)劃 一、進(jìn)程相關(guān)概念 定義:進(jìn)程(Process)是運(yùn)行中的程序的一個(gè)副本冒晰,是被...
    哈嘍別樣閱讀 557評(píng)論 0 0
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,135評(píng)論 2 34
  • 又來(lái)到了一個(gè)老生常談的問(wèn)題同衣,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問(wèn)題開(kāi)始壶运,來(lái)談?wù)劜?..
    tangsl閱讀 4,088評(píng)論 0 23
  • 一個(gè)程序被加載到內(nèi)存當(dāng)中運(yùn)行耐齐,那么在內(nèi)存內(nèi)的那個(gè)數(shù)據(jù)就被稱(chēng)為進(jìn)程(process)。進(jìn)程是操作系統(tǒng)上非常重要的概念...
    Zhang21閱讀 1,919評(píng)論 0 12
  • 心博驟停(Cardiac Arrest, CA)是指各種原因引起的蒋情、在未能預(yù)計(jì)的情況和時(shí)間內(nèi)心臟突然停止搏動(dòng)埠况,從而...
    Joan_He閱讀 3,636評(píng)論 5 29