1. 程式人生 > >有效管理程序的 8 個 Linux 命令

有效管理程序的 8 個 Linux 命令

一般來說,應用程式程序的生命週期有三種主要狀態:啟動、執行和停止。如果我們想成為稱職的管理員,每個狀態都可以而且應該得到認真的管理。這八個命令可用於管理程序的整個生命週期。

啟動程序

啟動程序的最簡單方法是在命令列中鍵入其名稱,然後按回車鍵。如果要啟動 Nginx web 伺服器,請鍵入 nginx 。也許您只是想看看其版本。

1234 alan@workstation:~$nginxalan@workstation:~$nginx-vnginx version:nginx/1.14.0

檢視您的可執行路徑

以上啟動程序的演示是假設可執行檔案位於您的可執行路徑中。理解這個路徑是可靠地啟動和管理程序的關鍵。管理員通常會為他們想要的目的定製這條路徑。您可以使用 echo $PATH 檢視您的可執行路徑。

12 alan@workstation:~$echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

WHICH

使用 which 命令檢視可執行檔案的完整路徑。

12 alan@workstation
:~$which nginx/opt/nginx/bin/nginx

我將使用流行的 web 伺服器軟體 Nginx 作為我的例子。假設安裝了 Nginx。如果執行 which nginx 的命令什麼也不返回,那麼是找不到 Nginx 了,因為它只搜尋您指定的可執行路徑。有三種方法可以補救一個程序不能簡單地通過名字啟動的情況。首先是鍵入完整路徑 —— 雖然,我不情願輸入全部路徑,您會嗎?

12 alan@workstation:~$/home/alan/web/prod/nginx/sbin/nginx-vnginx version:nginx/1.14.0

第二個解決方案是將應用程式安裝在可執行檔案路徑中的目錄中。然而,這有時可能是辦不到的,特別是如果您沒有 root 許可權。

第三個解決方案是更新您的可執行路徑環境變數,包括要使用的特定應用程式的安裝目錄。這個解決方案是與 shell 相關的。例如,Bash 使用者需要在他們的 .bashrc 檔案中編輯 PATH= 行。

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

現在,重複您的 echowhich 命令或者嘗試檢查版本。容易多了!

12345678 alan@workstation:~$echo$PATH/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binalan@workstation:~$which nginx/home/alan/web/prod/nginx/sbin/nginxalan@workstation:~$nginx-v                        nginx version:nginx/1.14.0

保持程序執行

NOHUP

登出或關閉終端時,程序可能不會繼續執行。這種特殊情況可以通過在要使用 nohup 命令放在要執行的命令前面讓程序持續執行。此外,附加一個& 符號將會把程序傳送到後臺,並允許您繼續使用終端。例如,假設您想執行 myprogram.sh

1 nohup myprogram.sh&

nohup 會返回執行程序的 PID。接下來我會更多地談論 PID。

管理正在執行的程序

每個程序都有一個唯一的程序標識號 (PID) 。這個數字是我們用來管理每個程序的。我們還可以使用程序名稱,我將在下面演示。有幾個命令可以檢查正在執行的程序的狀態。讓我們快速看看這些命令。

PS

最常見的是 ps 命令。ps 的預設輸出是當前終端中執行的程序的簡單列表。如下所示,第一列包含 PID。

1234 alan@workstation:~$psPID TTY     TIME CMD23989pts/0  00:00:00bash24148pts/0  00:00:00ps

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

12345678910111213141516171819202122 alan@workstation:~$ps-efUID    PID PPID CSTIME TTY     TIME CMDroot    1  0 0Aug18?    00:00:10/sbin/init splashroot    2  0 0Aug18?    00:00:00[kthreadd]root    4  2 0Aug18?    00:00:00[kworker/0:0H]root    6  2 0Aug18?    00:00:00[mm_percpu_wq]root    7  2 0Aug18?    00:00:00[ksoftirqd/0]root    8  2 0Aug18?    00:00:20[rcu_sched]root    9  2 0Aug18?    00:00:00[rcu_bh]root    10  2 0Aug18?    00:00:00[migration/0]root    11  2 0Aug18?    00:00:00[watchdog/0]root    12  2 0Aug18?    00:00:00[cpuhp/0]root    13  2 0Aug18?    00:00:00[cpuhp/1]root    14  2 0Aug18?    00:00:00[watchdog/1]root    15  2 0Aug18?    00:00:00[migration/1]root    16  2 0Aug18?    00:00:00[ksoftirqd/1]alan  2050620496 010:39pts/0  00:00:00bashalan  20520 1454 010:39?    00:00:00nginx:master process nginxalan  2052120520 010:39?    00:00:00nginx:worker processalan  2052620506 010:39pts/0  00:00:00man psalan  2053620526 010:39pts/0  00:00:00pageralan  2056420496 010:40pts/1  00:00:00bash

您可以在上面 ps 命令的輸出中看到 Nginx 程序。這個命令顯示了將近 300 行,但是我在這個例子中縮短了它。可以想象,試圖處理 300 行過程資訊有點混亂。我們可以將這個輸出輸送到 grep,過濾一下僅顯示 nginx。

123 alan@workstation:~$ps-ef|grep nginxalan  20520 1454 010:39?    00:00:00nginx:master process nginxalan  2052120520 010:39?    00:00:00nginx:worker process

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

PGREP

pgrep 命令更加簡化單獨呼叫 grep 遇到的問題。

123 alan@workstation:~$pgrep nginx2052020521

假設您在一個託管環境中,多個使用者正在執行幾個不同的 Nginx 例項。您可以使用 -u 選項將其他人排除在輸出之外。

123 alan@workstation:~$pgrep-ualan nginx2052020521

PIDOF

另一個好用的是 pidof。此命令將檢查特定二進位制檔案的 PID,即使另一個同名程序正在執行。為了建立一個例子,我將我的 Nginx 複製到第二個目錄,並以相應的路徑字首啟動。在現實生活中,這個例項可能位於不同的位置,例如由不同使用者擁有的目錄。如果我執行兩個 Nginx 例項,則pidof 輸出顯示它們的所有程序。

12345 alan@workstation:~$ps-ef|grep nginxalan  20881 1454 011:18?    00:00:00nginx:master process./nginx-p/home/alan/web/prod/nginxsecalan  2088220881 011:18?    00:00:00nginx:worker processalan  20895 1454 011:19?    00:00:00nginx:master process nginxalan  2089620895 011:19?    00:00:00nginx:worker process

使用 greppgrep 將顯示 PID 數字,但我們可能無法辨別哪個例項是哪個。

12345 alan@workstation:~$pgrep nginx20881208822089520896

pidof 命令可用於確定每個特定 Nginx 例項的 PID。

12345 alan@workstation:~$pidof/home/alan/web/prod/nginxsec/sbin/nginx2088220881alan@workstation:~$pidof/home/alan/web/prod/nginx/sbin/nginx2089620895

TOP

top 命令已經有很久的歷史了,對於檢視執行程序的細節和快速識別記憶體消耗等問題是非常有用的。其預設檢視如下所示。

12345678910111213141516

相關推薦

有效管理程序8 Linux 命令

一般來說,應用程式程序的生命週期有三種主要狀態:啟動、執行和停止。如果我們想成為稱職的管理員,每個狀態都可以而且應該得到認真的管理。這八個命令可用於管理程序的整個生命週期。 啟動程序 啟動程序的最簡單方法是在命令列中鍵入其名稱,然後按回車鍵。如果要啟動 Nginx

每個程式設計師都應該知道的8Linux命令

cat     cat – 連線檔案,並輸出結果 sort     sort – 檔案裡的文字按行排序 grep     grep, egrep, fgrep – 打印出匹配條件的文字行 cut     cut – 刪除檔案中字元行上的某些區域 sed     se

linux 每個程式設計師都應該知道的8Linux命令

每個程式設計師,在職業生涯的某個時刻,總會發現自己需要知道一些Linux方面的知識。我並不是說你應該成為一個Linux專家,我的意思是,當面對linux命令列任務時,你應該能很熟練的完成。事實上,學會了下面8個命令,我基本上能完成任何需要完成的任務。 注意:下

8 Linux 下 ls 命令的高階用法!個個驚豔!

作者 | 良許 責編 | 胡巍巍 在Linux下,ls這個命令大家肯定太熟悉了,筆者相信只要是Linux工程師,每天都會離不開這個命令,而且一天會使用個幾百次。 但是,除了ls -l以外,你還知ls的哪些高階用法呢?筆者今天為大家介紹ls命令的8種高階用法。

從一個程序監控指令碼學幾Linux命令

首先來看看指令碼全貌 #!/bin/sh curTime=`date +%Y%m%d-%H:%M` count=1 nums=$(ps -ef | grep -E "zhudejun.*mainClass=Main" | grep -v grep | aw

測試工作中經常用到的幾Linux命令(第一彈)

ppi 問題 過程 哪些 工作 存在 隱藏文件 日誌 清空 自己平時測試工作中經常要在Linux下搭建測試環境,有涉及到啟動/終止服務器,修改tomcat配置文件,偶爾碰到端口被占用。。。 這時就不得不需要一些基本的Linux命令來處理遇到的這些問題(順便邁向裝B之旅) 1

評價績效管理8維度?懷才當遇整理

建議 指標 提示 企業 第一個 想象 left 說明 工資 評價績效管理的8個維度?懷才當遇整理 如何知道你的企業所實施的績效管理體系是否有效,該從哪些方面對績效管理做出評價?筆者結合工作的實際和對理論的思考,從八個緯度對這個問題做了一些思考,提出評價績效管理體系有效性的模

掌握好這23Linux命令常用項,可加薪30%

linux常用命令作為工作幾年的Linux運維老司機,總結了Linux命令行的常用的一些用法,希望對您有所收獲。1. 搜索在vi和vim中如果打開一個很大的文件,不容易找到對應的內容,可以使用自帶的搜索關鍵字進行搜索定位:在vi和vim界面中輸入:"/"(反斜杠),之後會出現一個輸入框讓你輸入,當你輸入的關鍵

運維工程師必會的109Linux命令(4)

linux 小強測試品牌 測試幫日記 點擊鏈接加入QQ群 522720170(免費公開課、視頻應有盡有):https://jq.qq.com/?_wv=1027&k=5C08ATe1 進程管理1.1 crontab1.1.1 功能說明設置計時器。1.1.2 語法crontab [-u &l

運維工程師必會的109Linux命令PDF

分享一份十分有用的運維文件:工程師必會的109個Linux命令PDF版。 1      檔案管理 1.1    basename 1.1.1    功能說明 從檔名中去掉路徑和副檔名  例:basename

[一天幾linux命令] shell指令碼之正則表示式

shell指令碼之正則表示式 原文連結:Linux–shell指令碼之正則表示式 概念及特點 概念 正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。規定一些特殊語

[一天幾linux命令] find

find 名稱 find - 在目錄樹中搜索檔案 使用 -name 正則表示式 基於檔名搜尋(檔案前的目錄會被忽略),正則與shell的正則一樣。因為檔案前的目錄會被忽略,所以查詢的檔名中永遠不要包括’/’,因此’-name a/b’查詢不到任何東西(你可能需要使用**-

最常用19Linux命令

  1.查詢檔案 find / -name filename.txt 根據名稱查詢/目錄下的filename.txt檔案。 2.檢視一個程式是否執行 ps –ef|grep tomcat 檢視所有有關tomcat的程序 3.終止執行緒 kill -9 19979 終止執行緒號位1997

Linux命令及指令碼使用中的奇淫巧技

例項1.建立一個別名,刪除原始檔案,同時在使用者的home目錄下backup中儲存副本。 #/bin/bash cp [email protected] ~/backup && rm -rf [email protected] 例項2.For

運維人員最常用150linux命令彙總

命令 功能說明 線上查詢及幫助命令(2個) man 檢視命令幫助,命令的詞典,更復雜的還有info,但不常用。 help 檢視Linux內建命令的幫助,比如cd命令

每一個程式設計師需要了解的10Linux命令

作為一個程式設計師,在軟體開發職業生涯中或多或少會用到Linux系統,並且可能會使用Linux命令來檢索需要的資訊。本文將為各位開發者分享10個有用的Linux命令,希望對你會有所幫助。 以下就是今天我們要介紹的Linux命令: man touch, cat an

讓你相見恨晚的10Linux命令別名!

自從知道這10個命令別名後我很不開心,因為要是我早知道的話,我的鈦合金鍵盤就不會被戳壞了!   別名是啥? 別名就是一個綽號,或者叫簡寫,比如你要是非洲兄弟 「誇張誇長刮鬍瓜啦誇掌 喀 炸不爛炸」名兒太長喊不利索,你可以給他取個別名「阿非」或者「阿誇」,下回兒非洲兄

常用10LINUX命令說明

LS命令 -作用:顯示目錄內容,類似DOS下的DIR -格式:LS【options】【filename】 -常用引數:   >-a:all,不隱藏任何以"."字元開始的檔案   >-l:使用較長的格式列出資訊   >-r:按照檔名的逆序列印輸出   >

測試人員常用的20Linux命令(附Linux視訊教程)

這幾天一直看到有粉絲向我要Linux的學習教程,這不今天就給大家找到了。需要的同學看文末獲取方式哦。 熟練的掌握和使用下面這些命令會提高大家測試工作的效率。 1. 命令: Find 搜尋指定目錄下的檔案,從開始於父目錄,然後搜尋子目錄。 注意: -name‘選