ps命令 & proc文件系統

ps命令 & proc文件系統

ps
	查詢所有的進程:
		ps -ef | head -1 && ps -ef | grep "進程名" 	# 顯示所有的進程,顯示的項目有:UID,PID,PPID,C,STIME,TTY,TIME,CMD
		或
		ps auxf | head -1 && ps auxf grep "進程名"	# 顯示所有的進程,顯示的項目有:USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND

		# 參數:
			# f 用ASCII字符顯示樹狀結構,以顯示進程間的相互關係(父子關係)。
				舉例:ps auxf grep "進程名" -A 10 # 查看指定進程和該進程的子進程。

			# a 顯示所有用戶的所有進程(包括其它用戶)
		# 結果:
			# USER 	啓動進程的用戶
			# PID	進程ID
			# %CPU 	進程佔用CPU的百分比
			# %MEM 	進程佔用內存的百分比
			# VSZ	進程使用的虛擬內存量(KB)
			# RSS	進程佔用的內存量(KB)
			# TTY	啓動該進程的終端 (注:tty是終端設備的統稱,一般:?表示不關係終端,pts/0表示通過網絡連接的終端,)
			# STAT: 該進程的狀態:
				R 	正在運行或在運行隊列中等待
				S 	處於休眠狀態
				s 	包含子進程
				l 	該進程是一個多線程進程
				< 	高優先級進程
				N 	低優先級進程
				+ 	位於後臺的進程組

				D 不可中斷的休眠
				T 停止
				Z 僵死
				W 無駐留頁
				L 內存鎖頁
			# START		進程的啓動時間
			# TIME		進程使用的總cpu時間
			# COMMAND	正在執行的命令行的命令

	查看指定進程下的線程:
		ps -T PID 	# 進程下的線程數:(ps -T PID | wc -l) - 1
		參數:-T Show threads, possibly with SPID column

	查看佔用內存最多的進程:
		 ps aux | awk '{print "used mem "$4 " -pid "$2}' | sort -r | head -5
		

	/proc
		概念:Linux內核提供了一種通過proc文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。proc文件系統是一個僞文件系統,它只存在內存當中,而不佔用外存空間。
		使用:ps aux | grep xxx 找到進程的PID,然後 ls -al /proc/PID 查看進程的相關信息。
		說明:
			/proc/PID/cmdline	進程的完整命令行信息
			/proc/PID/cwd		進程當前工作目錄的符號鏈接	eg:/home/jxn/test
			/proc/PID/environ	進程的環境變量
			/proc/PID/exe		運行程序的符號鏈接			eg:exe -> /home/jxn/soft/java8/bin/java
			/proc/PID/status	進程的狀態信息,包括:名稱(Name)、父進程id(ppid)、狀態(State)、線程數(Threads)、內存的使用情況(VmSize、VmRSS) 等。

									VmSize 	分配給該進程的內存大小。
									VmRSS 	該進程當前使用的物理內存大小,即該進程的常駐集合內存大小(RSS:Resident Set Size)
									VmPeak 	進程運行過程中佔用內存的峯值
									說明:若進程使用之前已分配但並非正在使用的內存,則VmRSS會變大,而VmSize會保持不變。

			/proc/PID/task 		進程下的任務(線程)。統計進程的線程數:ls /proc/PID/task | wc -l

			/proc/PID/task/線程id/status 線程的狀態信息,包括:名稱(Name)、線程id(Pid)、進程id(Tgid)、狀態(State)

		舉例:
			# 查看指定進程的內存使用情況。
			pid=`ps aux | grep appName | grep -v grep | awk '{print $2}'`
			memSize=`cat /proc/${pid}/status | grep "VmRSS" | awk '{print $2}'`


	pstree
		格式:pstree 參數 PID
		參數:
			-p 顯示進程id
			-a 顯示命令行參數
		舉例:
			pstree
			# 查看所有的進程,以樹狀的形式展現。

			pstree -a -p PID
			# 查看指定進程的進程樹(包含PID進程和其子孫進程)。



			

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章