當前位置:成語大全網 - 漢語詞典 - linux是如何停止進程的?

linux是如何停止進程的?

Linux下查看和終止進程的技巧

1.在LINUX命令平臺上輸入1-2字符後,按tab鍵會自動完成以下部分(前提是這個東西可用,比如安裝了tomcat,輸入to,按Tab)。

2.ps命令用於查看當前運行的進程。

Grep就是搜索。

例如:ps -ef | grep java

意味著在所有進程中查看CMD是java的進程信息。

ps -aux | grep java

-aux顯示所有狀態。

著名圖象處理軟件

3.kill命令用於終止進程

示例:kill -9 [PID]

-9表示強制進程立即停止。

通常使用ps查看進程PID,使用kill命令終止進程。

網上這兩塊的內容。

-

附言(同postscript);警官(police sergeant)

-

1介紹。著名圖象處理軟件

Ps命令是查看進程的最基本和最強大的命令。使用這個命令,我們可以確定哪些進程正在運行以及運行狀態,進程是否結束,進程是否死亡,哪些進程占用了太多的資源等。簡而言之,大部分信息都可以通過執行這個命令獲得。

2.ps命令及其參數

Ps命令最常用於監視後臺進程的工作,因為後臺進程沒有配備標準的輸入/輸出設備,如屏幕鍵盤。

進行通信,所以如果需要檢測它的情況,可以使用ps命令。

該命令的語法格式如下:

PS[選項]

-e顯示所有進程和環境變量。

-f完整格式

-h不顯示標題。

-l長格式

-w寬輸出

顯示終端上的所有進程,包括其他用戶的進程。

r只顯示正在運行的進程。

x表示沒有控制終端的進程。

O[+|-] k1 [,[+|-] k2 [,…]]根據快捷鍵k1和k2中快捷鍵指定的多級排序順序顯示進程列表。

不同格式的ps都有默認的訂單名稱。這些默認訂單可以被用戶的指定覆蓋。這裏“+”字符是可選的,“-”字符是反轉指定鍵的方向。

Pids只列出進程標識符,用逗號分隔。必須在命令行參數的最後壹個選項後立即給出進程列表,中間沒有空格。比如:ps -f1,4,5。

以下是長命令行選項,它們都以“-”開頭:

-sort x [+|-] key [,[+|-] key [,…]]從排序鍵部分選擇壹個多字母鍵。“+”字符是可選的,因為默認方向是數字升序或字典順序。比如ps -jax -sort=uid,-ppid,+pid。

- help顯示幫助信息。

- version顯示命令的版本信息。

在前面的選項描述中提到了排序鍵,下面將進壹步解釋排序鍵。需要註意的是,排序中使用的值是ps使用的內部值,而不是某些輸出格式中使用的偽值。排序鍵列表見表4-3。

表4-3排序鍵列表

c

煤礦管理局

簡單的可執行名稱

C

命令行

完整的命令行

f

旗幟

長模式標記

g

pgrp

流程的組ID

G

tpgid

控制tty進程組ID

j

可愛的我

累計用戶時間

J

cstime

累積系統時間

k

實用時間

用戶時間

K

時間

系統時間

m

min_flt

次要頁面錯誤的數量

M

主要_飛行

關鍵頁面上的錯誤數量

n

cmin_flt

累積較小的頁面錯誤

普通

cmaj_flt

累積關鍵頁錯誤

o

會議

對話ID

p

pid

流程ID

P

ppid

父進程ID

r

簡易資訊聚合

駐留大小

稀有

居民

常駐頁面

s

大小

內存大小(千字節)

S

分享

* * *享受的頁數

t

電傳打字機

Tty次要設備號

T

開始時間

流程啟動時間

U

用戶界面設計(User Interface Design的縮寫)

用戶界面設計(User Interface Design的縮寫)

u

用戶

用戶名

v

vsize

虛擬內存的總量(字節)

y

優先

內核調度優先級

3.經常使用的ps命令參數

三個最常用的參數是u、a和x,它們的具體用法將在下面舉例說明。

[例20]以root用戶身份登錄系統,查看當前進程狀態。

$ ps

PID TTY時間命令

5800 ttyp0 00:00:00 bash

5835 ttyp0 00:00:00 ps

可以看出,顯示的項目* * *分為四項,即PID(進程ID)、TTY(終端名)和時間(進程執行時間)。

COMMAND(該進程的命令行輸入)。

您可以使用u選項來查看流程所有者和壹些其他詳細信息,如下所示:

$ ps u

用戶PID %CPU %MEM USZ RSS TTY統計開始時間命令

測試5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00-bash

測試5836 0.0 0.3 2528 856 ttyp 0 R Nov27 0:00 PS u

bash進程前有壹條橫線;這意味著該進程是用戶的登錄shell因此,對於登錄用戶來說,只有壹個帶有短橫線的進程。還可以看到兩個選項;%CPU和% MEM;前者是指進程占用CPU時間和總時間的百分比。後者指的是進程占用的內存和總內存的百分比。

在這種情況下;我看到了控制終端的所有過程。當然,其他沒有控制終端的進程也沒有觀察到,這時候就需要使用X選項了。使用X選項可以觀察所有進程。

-

-

由於妳的職責要求,妳必須閱讀讓妳困惑的晦澀難懂的Linux應用程序文檔。然後,您將運行指令並編輯設置文件。壹切運行正常,生活真的很美好。但是,妳知道,好日子不會永遠持續下去。當您遇到令人恐懼的“給進程發送壹個SIGHUP”提示時,好日子就結束了。

“SIGHUP”是什麽,怎麽發?是不是像妳送給愛人的壹束花?雖然妳可以確定這不是命令行指令,但妳還是會嘗試鍵入。當然這是沒有結果的。然後,妳檢查鍵盤。哦,沒有信號鍵。因此,您重新閱讀了該應用程序的參考指南,並看到了以下內容:

當接收到掛斷信號時,sshd程序將重新讀取配置文件。通過在啟動程序時執行命令和選項來發送SIGHUP信號,例如/usr/sbin/sshd。

哦,我明白了。

程序員與用戶

LINUX程序在線參考指南的作者通常應該兼顧最終用戶和高級程序員的需求。所以有些說明很難理解。但是不用擔心。現在我們將揭開覆蓋這些令人困惑的內容的神秘面紗。

信號和過程控制

這個問題主要屬於信號與過程控制的範疇。對於我們的系統管理員和普通用戶來說,我們主要關心的是啟動、停止和重啟服務,停止失控的進程和掛起的進程,盡量不要中斷系統運行。因為不同

操作系統和不同的命令外殼以不同的方式處理信號。這裏只介紹Linux操作系統和bash shell。

信號用於與守護進程和進程通信。任何活動任務都是壹個進程,守護進程是壹個後臺服務,等待響應某些事件或根據調度執行任務。壹個程序必須有壹個內置的信號處理程序來捕捉和響應信號。LINUX中的信號參考指南解釋了各種信號及其用途。信號是由“殺死”命令發出的。kill -l命令可以顯示可用信號及其編號的列表。

所有守護進程和進程都有壹個進程ID(PID ),例如,顯示的內容由ps命名:

$ ps輔助

用戶PID %CPU %MEM TTY統計命令

根1 0.0 0.1?S init [2]

105 7783 0.0 0.2 ?Ss /usr/bin/dbus-daemon - system

哈爾7796 0.0 0.7?Ss /usr/sbin/hald

後綴7957 0.0 0.2?先進先出

nagios 8371 0.0 0.2?SNs/usr/sbin/Nagios/etc/Nagios/Nagios . CFG

這個輸出是簡化的。妳可以在系統中看到更多的行和列。如果壹些進程消耗了所有的CPU或內存,您可以在此輸出的%CPU和%MEM列中找到它們。找出失控進程的更快方法是使用top命令,因為默認情況下,使用最多CPU資源的進程顯示在頂部。我們可以使用“yes”命令來測試它:

$是的,卡拉很棒

這個命令會反復高速顯示“carla is teh awesum”直到妳停止它。這會讓妳的CPU使用率達到警戒線。

$ top

...

PID用戶PR NI VIRT RES SHR S %CPU %MEM時間+命令

12144卡拉25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole

22236卡拉15 0 2860 468 400先令4.3 0.1 0:00.97是

分析這個結果,妳會發現壹些有趣的事情。妳會發現占用CPU最多的程序是konsole虛擬終端程序,而不是“yes”命令,因為“yes”命令運行在konsole終端程序中。如果您在“真實的”控制臺中運行相同的命令序列(按Ctrl+alt+f2),您將看到“yes”命令排在第壹位。

有許多方法可以停止“是”命令。如果您想返回到運行它的shell,只需按CTRL+C。或者您可以在另壹個shell中使用“kill”命令來停止“yes”命令的操作,Kill命令後跟PID或命令名,如下所示:

$ kill 22236

或者

$ killall是的

按CTRL+c發出SIGINT(信號2),這是鍵盤請求控制的中斷信號。根據默認設置,kill和killall命令都會發出壹個SIGTERM信號(No.15)。在程序中,您可以設置是否捕獲或忽略SIGTERM信號(15)或以不同的方式解釋它。因此,如果您的程序對KILL命令的響應與您預期的不同,很可能是被殺死的目標程序有問題。

終止父進程通常也會終止其子進程。然而,情況並非總是如此。妳知道什麽是子流程嗎?使用帶有-f選項的ps命令,如下所示:

$ ps axf

22371 ?R 2:35 _ konsole [kdeinit]

22372 pts/3 Ss 0:00 | _ /bin/bash

24322 pts/3 S+ 0:00 | | _是的,卡拉是個了不起的人

22381 pts/4 Rs 0:00 | _/bin/bash

24323 pts/4 R+ 0:00 | | _ ps axf

現在,回到SIGHUP的話題。

SIGHUP的發音是“sig-hup”,是信號hangup的縮寫,意思是“停止信號”。如何發送SIGHUP信號?有幾種方法:

# kill -HUP [pid]

# kill all-HUP[進程名]

# kill -1 [pid]

# kill all-1[進程名稱]

因此,您可以使用PID或名稱、信號名稱或編號。那麽為什麽要這樣做而不是用/etc/init.d/foo命令重新啟動呢?使用它們自己的init(初始化)文件來控制服務是首選的方式,因為這些文件通常包含健康和錯誤檢查以及額外的功能。使用“kill”命令和信號的主要原因是在不重啟或註銷的情況下盡可能清楚地終止暫停的和失控的進程。

終止流程

正如您在關於信號的手冊頁中所看到的,有十幾種方法可以控制這個過程。以下是壹些常見的方法:

停止殺戮[pid]

發送SIGSTOP (17,19,23)會停止壹個進程,但不會破壞它。

壓井控制

發送SIGCONT (19,18,25)來重新啟動壹個停止的進程。

殺戮-殺戮

發送SIGKILL (9)會強制進程立即停止,並且不會實現清理操作。

kill -9 -1

終止您擁有的所有進程。

SIGKILL和SIGSTOP信號不能被捕獲、阻止或忽略,但其他信號可以。所以這是妳的終極武器。

Bash shell的Kil命令

Bash shell包含壹個內置的kill命令,當執行以下命令時:

$ type-全部殺死

kill是壹個內置的shell

kill is /bin/kill

命令的結果顯示有兩個kill命令,壹個是BASH的內置命令,壹個是/bin/kill可執行程序。壹般來說,這兩個命令沖突的可能性不大。但是,如果遇到kill命令的異常行為,可以顯式指定/bin/kill命令。

妳必須進壹步查閱以下資源中列出的參考資料,才能理解kill在Linux中的妙用,因為這是妳進入維護Linux系統領域的入場券。這些知識使妳能夠像外科手術壹樣維護系統,而不必像我們知道的壹些蹩腳的那樣,每次遇到問題都要重啟系統。

比如操作系統。

資源

Linux烹飪書“開始和結束Linux”的第7章

bash(1)-GNU Bourne-再次Shell

是(1)-在終止前重復打印字符。

信號(7)-可用信號列表

PS(1)-報告當前進程的快照。

kill(1)-表示壹個進程。

Kill all(1)-按名稱終止進程。

pkill(1)-根據名稱和其他屬性查看或指示進度。

技能(1)-發送信號或報告進程的狀態。

xkill(1)-根據X資源銷毀壹個客戶端程序。