<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          進(jìn)程管理-Linux每日一練(6)

          共 2999字,需瀏覽 6分鐘

           ·

          2020-09-17 08:02

          題目一:進(jìn)程有哪幾種狀態(tài)(生命周期)?

          平時(shí)學(xué)的是這五種狀態(tài)新建、就緒、運(yùn)行、阻塞、終止,但是在Linux里面可以查看到的要更加詳細(xì),如下命令的 STAT 列就是展示了狀態(tài)

          $?ps?-aux?
          USER???????????????PID??%CPU?%MEM??????VSZ????RSS???TT??STAT?STARTED??????TIME?COMMAND
          root???????????????981???7.3??0.0??4724748???2764???????S????五02下午??73:31.27?hexo
          root?????????????79519???0.0??0.0??4277540????728?s007??S+????9:18下午???0:00.00?xxx

          有很多狀態(tài),就看首字母,其他不用在意太多

          • R 運(yùn)行
          • S 可中斷睡眠 Sleep
          • D 不可中斷睡眠 (usually IO)
          • T 停止的進(jìn)程
          • Z 僵尸進(jìn)程
          • X 死掉的進(jìn)程

          題目二:通過(guò) ps 命令我們可以獲取哪些關(guān)鍵信息?

          ps 命令一般是用來(lái)查 pid 的,我們就可以通過(guò) kill 的方式干掉進(jìn)程,或者通過(guò) pid 去讀取 /proc 目錄獲取進(jìn)程監(jiān)控信息。

          top 命令一樣,使用 ps -aux 參數(shù),可以看到進(jìn)程的各種指標(biāo)

          • USER: 運(yùn)行進(jìn)程的用戶
          • PID: 進(jìn)程 ID
          • %CPU: CPU 占用率
          • %MEM: 內(nèi)存占用率
          • VSZ: 占用虛擬內(nèi)存
          • RSS: 占用實(shí)際內(nèi)存 駐留內(nèi)存
          • TTY: 進(jìn)程運(yùn)行的終端
          • STAT: 進(jìn)程狀態(tài) man ps (/STATE)
          • STARTED: 啟動(dòng)日期
          • TIME: 運(yùn)行時(shí)間
          • COMMAND: 啟動(dòng)命令

          當(dāng)然,如果只是想查看下pid,可以直接 pgrep 進(jìn)程名

          $?pgrep?sshd?
          10180

          題目三:top 命令怎么根據(jù) cpumem 排序?通過(guò)此命令我們還能獲取哪些關(guān)鍵信息?

          使用 uptime 可以查看機(jī)器負(fù)載情況

          $?uptime
          21:31??up?4?days,??6:54,?3?users,?load?averages:?3.54?3.27?3.02

          使用 top 可以臨時(shí)查看進(jìn)程的實(shí)時(shí)使用情況

          #?指定刷新時(shí)間間隔
          $?top?-d?1
          #?查看指定進(jìn)程的動(dòng)態(tài)信息
          $?top?-p?10126?
          $?top?-p?10126,1?
          #?查看指定用戶的進(jìn)程
          $?top?-u?apache?
          #?將兩次刷新寫入文件中
          $?top?-d?1?-b?-n?2?>?top.txt

          在使用命令的時(shí)候, 直接在終端輸入下面字符有奇效,臨時(shí)發(fā)現(xiàn)占用問(wèn)題很管用

          h|??幫助
          M?按內(nèi)存的使用排序
          P?按?CPU?使用排序
          N?以?PID?的大小排序
          R?對(duì)排序進(jìn)行反轉(zhuǎn)
          f?自定義顯示字段
          1 顯示所有 CPU 的負(fù)載
          >?向后
          z?彩色
          W?保存?top?環(huán)境設(shè)置?~/.toprc

          當(dāng)然,這個(gè)命令臨時(shí)查看某臺(tái)機(jī)器的某個(gè)進(jìn)程是Ok的,但是無(wú)法查看趨勢(shì),也沒(méi)辦法批量查看多臺(tái)服務(wù)器,我推薦使用今天發(fā)文的10個(gè)開源監(jiān)控組件把服務(wù)器監(jiān)控起來(lái)。

          題目四:怎么讓進(jìn)程在后臺(tái)運(yùn)行?怎么讓后臺(tái)運(yùn)行的進(jìn)程切換到前臺(tái)?

          這一題講的是作業(yè)控制 job ,我們可以通過(guò)他靈活的讓進(jìn)程在前后臺(tái)切換、暫停.

          我在此處用 sleep 命令來(lái)舉例, sleep 的作用就是運(yùn)行一個(gè)進(jìn)程,然后等到一段時(shí)間,在這里用來(lái)測(cè)試進(jìn)程前后臺(tái)切換再合適不過(guò)。

          要了解作業(yè)控制之前,先要知道前后臺(tái)是什么概念,前臺(tái)運(yùn)行一個(gè)進(jìn)程,會(huì)等待交互,會(huì)卡住命令行終端,除非你使用 ctrl+c 終止,或者 ctrl+z 暫停

          $?sleep?5
          #?鼠標(biāo)在此閃爍,5秒之內(nèi)啥也干不了
          #?用ctrl+c?以后會(huì)終止進(jìn)程,打印一個(gè)^C
          $?sleep?5
          ^C
          #?用ctrl+z以后會(huì)暫停進(jìn)程
          $?sleep?5
          ^Z
          [1]+??Stopped?????????????????sleep?5

          暫停的進(jìn)程上第一題的命令查看狀態(tài),狀態(tài)是 T ,如果忘了是啥意思滑上去看看。

          $?ps?-aux?|grep?sleep
          root?????29196??0.0??0.0?107952???356?pts/0????T????21:45???0:00?sleep?5

          jobs 命令也可以看到后臺(tái)進(jìn)程情況,暫停也算是切換到后臺(tái)運(yùn)行了,下面的輸出是一個(gè)

          $?jobs
          [1]+??Stopped?????????????????sleep?5

          可以看到 [1] ,代表他的標(biāo)號(hào)是1, 嘗試把他調(diào)度到前臺(tái)運(yùn)行,會(huì)卡那直到運(yùn)行完

          $?fg?%1
          sleep?5

          怎么創(chuàng)建一個(gè)進(jìn)程讓他直接在后臺(tái)運(yùn)行?只需要在結(jié)尾用一個(gè) & 符號(hào)

          $?sleep?100?&
          [1]?29932
          $?jobs
          [1]+??Running?????????????????sleep?100?&

          要暫停后臺(tái)運(yùn)行的進(jìn)程得先調(diào)到前臺(tái),再用 ctrl+z

          $?fg?%1
          sleep?100
          ^Z
          [1]+??Stopped?????????????????sleep?100
          $?jobs
          [1]+??Stopped?????????????????sleep?100

          讓暫停的進(jìn)程直接切換到后臺(tái)運(yùn)行

          $?bg?%1
          [1]+?sleep?100?&
          $?jobs
          [1]+??Running?????????????????sleep?100?&

          注意: 我以前在用 curl 命令的時(shí)候會(huì)忘記給 url 加引號(hào),如果是一個(gè)GET請(qǐng)求,有參數(shù)的話,一般是下面這種形式,參數(shù)分隔符會(huì)被誤認(rèn)為是后臺(tái)進(jìn)程執(zhí)行符號(hào)!

          http://127.0.0.1/query?name=coding3min&passwd=abc

          最后進(jìn)程管理中,怎么干掉一個(gè)進(jìn)程就不必說(shuō)了吧~,可以發(fā)送信號(hào),也可以直接干掉,最好是通過(guò)守護(hù)進(jìn)程干掉他。

          拓展知識(shí)點(diǎn):守護(hù)進(jìn)程

          最不想遇到的事就是進(jìn)程掛掉,一個(gè)告警電話打過(guò)來(lái),半夜兩三點(diǎn)爬起來(lái)就為了手動(dòng)啟動(dòng)一個(gè)進(jìn)程。所以進(jìn)程自動(dòng)拉起是很重要的。

          一般用用 systemctlsupervisorctl 或者自己寫個(gè) crontab 定時(shí)任務(wù)、上 k8s 也可以,簡(jiǎn)單點(diǎn)的 docker-compose 也可以。

          k8s 不僅支持進(jìn)程自動(dòng)拉起,還可以維護(hù)多副本,配置好一定數(shù)量的副本,掛掉一個(gè)會(huì)自動(dòng)恢復(fù),甚至里面的 HPA 支持負(fù)載均衡,可以根據(jù)你的進(jìn)程占用情況自動(dòng)增減副本數(shù)量。

          進(jìn)行守護(hù)如果想耍流氓,怎么殺也殺不掉,那就做成進(jìn)程互相拉起,寫到代碼里,比如 360-A 進(jìn)程掛了, 360-B 進(jìn)程拉起來(lái), 360-B 掛了 360-A 拉起來(lái)(對(duì),我就是在黑360)

          下次主題:管道與重定向

          題目一:>>> 有什么區(qū)別?題目二:重定向怎么把錯(cuò)誤輸出和正確輸出分離開?題目三:怎么快速把一個(gè)非常大的文本文件清理掉?題目四:使用管道完成,組合 psgrepawkxargskill 命令為一行命令,干掉名為 apache 的進(jìn)程

          下次的問(wèn)題非常的簡(jiǎn)單,有時(shí)間就做做,如果我發(fā)現(xiàn)下次分析的時(shí)候內(nèi)容太少了,我就把下下次的多寫一點(diǎn)。


          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品免费囯产一区二区三区 | 天天操妞网 | 青青青青艹 | 亚洲69视频 | 操婷婷逼|