成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

8個用于有效地管理進(jìn)程的Linux命令

系統(tǒng) Linux
一般來說,應(yīng)用程序進(jìn)程的生命周期有三種主要狀態(tài):啟動、運(yùn)行和停止。如果我們想成為稱職的管理員,每個狀態(tài)都可以而且應(yīng)該得到認(rèn)真的管理。這八個命令可用于管理進(jìn)程的整個生命周期。

[[243868]]

 通過這些關(guān)鍵的命令來全程管理你的應(yīng)用。

一般來說,應(yīng)用程序進(jìn)程的生命周期有三種主要狀態(tài):啟動、運(yùn)行和停止。如果我們想成為稱職的管理員,每個狀態(tài)都可以而且應(yīng)該得到認(rèn)真的管理。這八個命令可用于管理進(jìn)程的整個生命周期。 

啟動進(jìn)程

啟動進(jìn)程的最簡單方法是在命令行中鍵入其名稱,然后按回車鍵。如果要啟動 Nginx web 服務(wù)器,請鍵入 nginx 。也許您只是想看看其版本。

  1. alan@workstation:~$ nginx
  2.  
  3. alan@workstation:~$ nginx -v
  4. nginx version: nginx/1.14.0 

查看您的可執(zhí)行路徑

以上啟動進(jìn)程的演示是假設(shè)可執(zhí)行文件位于您的可執(zhí)行路徑中。理解這個路徑是可靠地啟動和管理進(jìn)程的關(guān)鍵。管理員通常會為他們想要的目的定制這條路徑。您可以使用 echo $PATH 查看您的可執(zhí)行路徑。

  1. alan@workstation:~$ echo $PATH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 

WHICH

使用 which 命令查看可執(zhí)行文件的完整路徑。

  1. alan@workstation:~$ which nginx
  2. /opt/nginx/bin/nginx

我將使用流行的 web 服務(wù)器軟件 Nginx 作為我的例子。假設(shè)安裝了 Nginx。如果執(zhí)行 which nginx 的命令什么也不返回,那么是找不到 Nginx 了,因?yàn)樗凰阉髂付ǖ目蓤?zhí)行路徑。有三種方法可以補(bǔ)救一個進(jìn)程不能簡單地通過名字啟動的情況。首先是鍵入完整路徑 —— 雖然,我不情愿輸入全部路徑,您會嗎?

  1. alan@workstation:~$ /home/alan/web/prod/nginx/sbin/nginx -v
  2. nginx version: nginx/1.14.0

第二個解決方案是將應(yīng)用程序安裝在可執(zhí)行文件路徑中的目錄中。然而,這有時可能是辦不到的,特別是如果您沒有 root 權(quán)限。

第三個解決方案是更新您的可執(zhí)行路徑環(huán)境變量,包括要使用的特定應(yīng)用程序的安裝目錄。這個解決方案是與 shell 相關(guān)的。例如,Bash 用戶需要在他們的 .bashrc 文件中編輯 PATH= 行。

  1. PATH="$HOME/web/prod/nginx/sbin:$PATH"

現(xiàn)在,重復(fù)您的 echowhich 命令或者嘗試檢查版本。容易多了!

  1. alan@workstation:~$ echo $PATH
  2. /home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  3.  
  4. alan@workstation:~$ which nginx
  5. /home/alan/web/prod/nginx/sbin/nginx
  6.  
  7. alan@workstation:~$ nginx -v                                                
  8. nginx version: nginx/1.14.0 

保持進(jìn)程運(yùn)行 

NOHUP

注銷或關(guān)閉終端時,進(jìn)程可能不會繼續(xù)運(yùn)行。這種特殊情況可以通過在要使用 nohup 命令放在要運(yùn)行的命令前面讓進(jìn)程持續(xù)運(yùn)行。此外,附加一個& 符號將會把進(jìn)程發(fā)送到后臺,并允許您繼續(xù)使用終端。例如,假設(shè)您想運(yùn)行 myprogram.sh 。

  1. nohup myprogram.sh &

nohup 會返回運(yùn)行進(jìn)程的 PID。接下來我會更多地談?wù)?PID。 

管理正在運(yùn)行的進(jìn)程

每個進(jìn)程都有一個***的進(jìn)程標(biāo)識號 (PID) 。這個數(shù)字是我們用來管理每個進(jìn)程的。我們還可以使用進(jìn)程名稱,我將在下面演示。有幾個命令可以檢查正在運(yùn)行的進(jìn)程的狀態(tài)。讓我們快速看看這些命令。 

PS

最常見的是 ps 命令。ps 的默認(rèn)輸出是當(dāng)前終端中運(yùn)行的進(jìn)程的簡單列表。如下所示,***列包含 PID。

  1. alan@workstation:~$ ps
  2. PID TTY          TIME CMD
  3. 23989 pts/0    00:00:00 bash
  4. 24148 pts/0    00:00:00 ps

我想看看我之前啟動的 Nginx 進(jìn)程。為此,我告訴 ps 給我展示每一個正在運(yùn)行的進(jìn)程(-e)和完整的列表(-f)。

  1. alan@workstation:~$ ps -ef
  2. UID        PID  PPID  C STIME TTY          TIME CMD
  3. root         1     0  0 Aug18 ?        00:00:10 /sbin/init splash
  4. root         2     0  0 Aug18 ?        00:00:00 [kthreadd]
  5. root         4     2  0 Aug18 ?        00:00:00 [kworker/0:0H]
  6. root         6     2  0 Aug18 ?        00:00:00 [mm_percpu_wq]
  7. root         7     2  0 Aug18 ?        00:00:00 [ksoftirqd/0]
  8. root         8     2  0 Aug18 ?        00:00:20 [rcu_sched]
  9. root         9     2  0 Aug18 ?        00:00:00 [rcu_bh]
  10. root        10     2  0 Aug18 ?        00:00:00 [migration/0]
  11. root        11     2  0 Aug18 ?        00:00:00 [watchdog/0]
  12. root        12     2  0 Aug18 ?        00:00:00 [cpuhp/0]
  13. root        13     2  0 Aug18 ?        00:00:00 [cpuhp/1]
  14. root        14     2  0 Aug18 ?        00:00:00 [watchdog/1]
  15. root        15     2  0 Aug18 ?        00:00:00 [migration/1]
  16. root        16     2  0 Aug18 ?        00:00:00 [ksoftirqd/1]
  17. alan     20506 20496  0 10:39 pts/0    00:00:00 bash
  18. alan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginx
  19. alan     20521 20520  0 10:39 ?        00:00:00 nginx: worker process
  20. alan     20526 20506  0 10:39 pts/0    00:00:00 man ps
  21. alan     20536 20526  0 10:39 pts/0    00:00:00 pager
  22. alan     20564 20496  0 10:40 pts/1    00:00:00 bash

您可以在上面 ps 命令的輸出中看到 Nginx 進(jìn)程。這個命令顯示了將近 300 行,但是我在這個例子中縮短了它??梢韵胂?,試圖處理 300 行過程信息有點(diǎn)混亂。我們可以將這個輸出輸送到 grep,過濾一下僅顯示 nginx。

  1. alan@workstation:~$ ps -ef |grep nginx
  2. alan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginx
  3. alan     20521 20520  0 10:39 ?        00:00:00 nginx: worker process

確實(shí)更好了。我們可以很快看到,Nginx 有 20520 和 20521 的 PID。 

PGREP

pgrep 命令更加簡化單獨(dú)調(diào)用 grep 遇到的問題。

  1. alan@workstation:~$ pgrep nginx
  2. 20520
  3. 20521

假設(shè)您在一個托管環(huán)境中,多個用戶正在運(yùn)行幾個不同的 Nginx 實(shí)例。您可以使用 -u 選項(xiàng)將其他人排除在輸出之外。

  1. alan@workstation:~$ pgrep -u alan nginx
  2. 20520
  3. 20521 

PIDOF

另一個好用的是 pidof。此命令將檢查特定二進(jìn)制文件的 PID,即使另一個同名進(jìn)程正在運(yùn)行。為了建立一個例子,我將我的 Nginx 復(fù)制到第二個目錄,并以相應(yīng)的路徑前綴啟動。在現(xiàn)實(shí)生活中,這個實(shí)例可能位于不同的位置,例如由不同用戶擁有的目錄。如果我運(yùn)行兩個 Nginx 實(shí)例,則pidof 輸出顯示它們的所有進(jìn)程。

  1. alan@workstation:~$ ps -ef |grep nginx
  2. alan     20881  1454  0 11:18 ?        00:00:00 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
  3. alan     20882 20881  0 11:18 ?        00:00:00 nginx: worker process
  4. alan     20895  1454  0 11:19 ?        00:00:00 nginx: master process nginx
  5. alan     20896 20895  0 11:19 ?        00:00:00 nginx: worker process

使用 greppgrep 將顯示 PID 數(shù)字,但我們可能無法辨別哪個實(shí)例是哪個。

  1. alan@workstation:~$ pgrep nginx
  2. 20881
  3. 20882
  4. 20895
  5. 20896

pidof 命令可用于確定每個特定 Nginx 實(shí)例的 PID。

  1. alan@workstation:~$ pidof /home/alan/web/prod/nginxsec/sbin/nginx
  2. 20882 20881
  3.  
  4. alan@workstation:~$ pidof /home/alan/web/prod/nginx/sbin/nginx
  5. 20896 20895 

TOP

top 命令已經(jīng)有很久的歷史了,對于查看運(yùn)行進(jìn)程的細(xì)節(jié)和快速識別內(nèi)存消耗等問題是非常有用的。其默認(rèn)視圖如下所示。

  1. top - 11:56:28 up 1 day, 13:37,  1 user,  load average: 0.09, 0.04, 0.03
  2. Tasks: 292 total,   3 running, 225 sleeping,   0 stopped,   0 zombie
  3. %Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  4. KiB Mem : 16387132 total, 10854648 free,  1859036 used,  3673448 buff/cache
  5. KiB Swap:        0 total,        0 free,        0 used. 14176540 avail Mem
  6.  
  7.   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  8. 17270 alan      20   0 3930764 247288  98992 R   0.7  1.5   5:58.22 gnome-shell
  9. 20496 alan      20   0  816144  45416  29844 S   0.5  0.3   0:22.16 gnome-terminal-
  10. 21110 alan      20   0   41940   3988   3188 R   0.1  0.0   0:00.17 top
  11.     1 root      20   0  225564   9416   6768 S   0.0  0.1   0:10.72 systemd
  12.     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
  13.     4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
  14.     6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
  15.     7 root      20   0       0      0      0 S   0.0  0.0   0:00.08 ksoftirqd/0

可以通過鍵入字母 s 和您喜歡的更新秒數(shù)來更改更新間隔。為了更容易監(jiān)控我們的示例 Nginx 進(jìn)程,我們可以使用 -p 選項(xiàng)并傳遞 PID 來調(diào)用 top。這個輸出要干凈得多。

  1. alan@workstation:~$ top -p20881 -p20882 -p20895 -p20896
  2.  
  3. Tasks:   4 total,   0 running,   4 sleeping,   0 stopped,   0 zombie
  4. %Cpu(s):  2.8 us,  1.3 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  5. KiB Mem : 16387132 total, 10856008 free,  1857648 used,  3673476 buff/cache
  6. KiB Swap:        0 total,        0 free,        0 used. 14177928 avail Mem
  7.  
  8.   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  9. 20881 alan      20   0   12016    348      0 S   0.0  0.0   0:00.00 nginx
  10. 20882 alan      20   0   12460   1644    932 S   0.0  0.0   0:00.00 nginx
  11. 20895 alan      20   0   12016    352      0 S   0.0  0.0   0:00.00 nginx
  12. 20896 alan      20   0   12460   1628    912 S   0.0  0.0   0:00.00 nginx

在管理進(jìn)程,特別是終止進(jìn)程時,正確確定 PID 是非常重要。此外,如果以這種方式使用 top,每當(dāng)這些進(jìn)程中的一個停止或一個新進(jìn)程開始時,top 都需要被告知有新的進(jìn)程。 

終止進(jìn)程 

KILL

有趣的是,沒有 stop 命令。在 Linux 中,有 kill 命令。kill 用于向進(jìn)程發(fā)送信號。最常用的信號是“終止”(SIGTERM)或“殺死”(SIGKILL)。然而,還有更多。下面是一些例子。完整的列表可以用 kill -L 顯示。

  1.  1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
  2.  6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
  3. 11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM

注意第 9 號信號是 SIGKILL,通常,我們會發(fā)出比如 kill -9 20896 這樣的命令。默認(rèn)信號是 15,這是 SIGTERM。請記住,許多應(yīng)用程序都有自己的停止方法。Nginx 使用 -s 選項(xiàng)傳遞信號,如 stopreload。通常,我更喜歡使用應(yīng)用程序的特定方法來停止操作。然而,我將演示用 kill 命令來停止 Nginx 進(jìn)程 20896,然后用 pgrep 確認(rèn)它已經(jīng)停止。PID 20896 就不再出現(xiàn)。

  1. alan@workstation:~$ kill -9 20896
  2.  
  3. alan@workstation:~$ pgrep nginx
  4. 20881
  5. 20882
  6. 20895
  7. 22123 

PKILL

命令 pkill 類似于 pgrep,因?yàn)樗梢园疵Q搜索。這意味著在使用 pkill 時必須非常小心。在我的 Nginx 示例中,如果我只想殺死一個 Nginx 實(shí)例,我可能不會選擇使用它。我可以將 Nginx 選項(xiàng) -s stop 傳遞給特定的實(shí)例來消除它,或者我需要使用 grep 來過濾整個 ps 輸出。

  1. /home/alan/web/prod/nginx/sbin/nginx -s stop
  2. /home/alan/web/prod/nginxsec/sbin/nginx -s stop

如果我想使用 pkill,我可以包括 -f 選項(xiàng),讓 pkill 過濾整個命令行參數(shù)。這當(dāng)然也適用于 pgrep。所以,在執(zhí)行 pkill -f 之前,首先我可以用 pgrep -a 確認(rèn)一下。

  1. alan@workstation:~$ pgrep -a nginx
  2. 20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
  3. 20882 nginx: worker process
  4. 20895 nginx: master process nginx
  5. 20896 nginx: worker process

我也可以用 pgrep -f 縮小我的結(jié)果。pkill 使用相同參數(shù)會停止該進(jìn)程。

  1. alan@workstation:~$ pgrep -f nginxsec
  2. 20881
  3.                                            
  4. alan@workstation:~$ pkill -f nginxsec

pgrep(尤其是 pkill)要記住的關(guān)鍵點(diǎn)是,您必須始終確保搜索結(jié)果準(zhǔn)確性,這樣您就不會無意中影響到錯誤的進(jìn)程。

大多數(shù)這些命令都有許多命令行選項(xiàng),所以我總是建議閱讀每一個命令的 man 手冊頁。雖然大多數(shù)這些命令都存在于 Linux、Solaris 和 BSD 等平臺上,但也有一些不同之處。在命令行工作或編寫腳本時,始終測試并隨時準(zhǔn)備根據(jù)需要進(jìn)行更正。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-07-30 11:41:52

IT團(tuán)隊(duì)遠(yuǎn)程工作CIO

2012-09-28 15:06:43

2019-05-09 14:32:13

IT中斷災(zāi)難恢復(fù)攻擊

2011-11-02 09:54:37

測試

2017-07-07 08:46:51

災(zāi)難恢復(fù)架構(gòu)

2017-07-12 12:43:42

數(shù)據(jù)庫SQL

2013-06-04 10:35:55

虛擬化IT系統(tǒng)

2009-02-27 14:21:01

LinuxRuby系統(tǒng)管理

2019-02-28 07:34:56

欺騙勒索軟件攻擊

2009-09-11 10:34:53

CCIE知識點(diǎn)CCIE

2020-10-22 09:09:42

存儲硬件

2009-10-13 15:38:04

CMDB

2021-01-22 15:39:51

區(qū)塊鏈比特幣貨幣

2015-07-21 16:06:49

Linux進(jìn)程管理命令

2021-12-12 21:36:04

Java開發(fā)代碼

2018-11-26 07:23:08

數(shù)據(jù)數(shù)據(jù)分析

2024-03-05 13:47:24

云計(jì)算容器服務(wù)

2020-03-30 17:11:40

Python編程語言開發(fā)

2013-09-22 11:39:05

SAP

2023-12-06 13:49:00

低代碼開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 激情五月综合 | 成年人在线观看 | 免费在线观看av网站 | 亚洲精品一区二区三区中文字幕 | 中文字幕一区二区三区在线视频 | 亚洲精品一区二区三区蜜桃久 | 天天拍天天射 | 亚洲成av人影片在线观看 | 久久久.com | 欧美精品在线播放 | 国产精品久久久久久高潮 | 91亚洲欧美 | 最新国产在线 | 天天草天天 | 午夜成人免费视频 | 99爱在线视频 | 欧美a区 | 97视频精品 | 亚洲精品日韩欧美 | 亚洲一区二区网站 | 免费观看一区二区三区毛片 | 日本一区二区高清不卡 | 久久专区 | 91久色| 久久久www成人免费精品张筱雨 | 欧美一区二区二区 | 91国内产香蕉 | 欧美va大片 | 亚洲成人一区 | 91影院 | 国产黄色在线 | 日韩超碰| 欧美日韩成人影院 | 国产乱码精品一区二三赶尸艳谈 | 日日噜| 国产一级免费视频 | 一本岛道一二三不卡区 | 日韩精品久久一区二区三区 | 久久精品视频免费观看 | 国产精品一区二区三 | 色久在线 |