使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理
1、進程管理介紹
什么是進程
- 程序是人使用計算機語言編寫的,可以實現(xiàn)一定功能,并且可以執(zhí)行的代碼集合
- 進程是正在執(zhí)行當中的程序。程序在執(zhí)行時,執(zhí)行人的權限和屬性、以及程序的代碼都會被加載進內(nèi)存,操作系統(tǒng)給這個進程分配一個 ID 號,我們稱為 PID
進程管理的作用
- 判斷服務器健康狀態(tài)。進程管理最主要的工作就是判斷服務器當前運行是否健康,是否需要人為干預。如果服務器的 CPU 占用率、內(nèi)存占用率過高,就需要人為介入解決問題
- 查看系統(tǒng)中所有的進程。
- 殺死進程
2、ps 命令
ps 命令是用來靜態(tài)顯示系統(tǒng)中進程的命令。不過這個命令有些特殊,他的部分命令的選項不能加 『-』如命令:『ps aux』,其中 aux 是選項,但是這個選項不能加入 『-』。這是因為 ps 命令的部分選項需要遵守 BSD 操作系統(tǒng)的格式。
[root@hepingfly 桌面]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.7 0.1 19348 1548 ? Ss 21:23 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 21:23 0:00 [kthreadd]# USER : 該進程是由哪個用戶產(chǎn)生的 # PID : 進程 ID # %CPU : 該進程占用的 CPU 資源百分比,占用越高,進程越耗費資源 # %MEM : 該進程占用的物理內(nèi)存百分比,占用越高,進程越耗費資源 # VSZ : 該進程占用的虛擬內(nèi)存大小,單位是 KB # RSS : 該進程占用實際物理內(nèi)存的大小,單位是 KB # START : 該進程的啟動時間 # TIME :該進程占用 CPU 的運算時間 # COMMAND :產(chǎn)生此進程的命令名3、top 、pstree 命令
top
top [選項]選項:
? -d 秒數(shù) :指定 top 命令每隔幾秒更新。默認是 3 秒
? -b : 使用批處理模式輸出。一般和 "-n" 選項合用,用于把 top 命令重定向到文件中
? -n 次數(shù) : 指定 top 命令執(zhí)行的次數(shù)。一般和 "-b" 選項合用
在 top 命令的交互模式當中可以執(zhí)行的命令:
? P :以 CPU 使用率排序,默認就是此項。
? M :以內(nèi)存的使用率排序top -b -n 1 > top.log # 讓 top 命令只執(zhí)行一次,然后把結果保存到 top.log 中。這樣就能看到所有的進程了
pstree
這個命令的作用就是用進程樹的方式展示進程
pstree [選項]選項:
? -p :顯示進程的 PID
4、殺死進程
1)、kill 命令
kill [信號] PID2)、killall 命令
killall [選項] [信號] 進程名選項:
? -i :交互式,詢問是否要殺死某個進程
? -I :忽略進程名的大小寫killall -9 httpd
3)、pkill 命令
pkill [信號] [選項] 進程名選項:
? -t 終端號 :按照終端號踢出用戶pkill -9 -t pts/1 # 強制殺死從 pts/1 虛擬終端登錄的進程
killall 和 pkill 后面跟的是進程名字,因此他們可以殺死一類進程。
5、工作管理
- 前臺是指當前可以操控和執(zhí)行命令的這個操作環(huán)境,后臺是指工作可以自行運行,但是不能直接用 ctrl + c 來終止它,只能使用 fg/bg 來調(diào)用工作
- 當前的登錄終端只能管理當前終端的工作,而不能管理其他登錄終端的工作。如:tty1 登錄的終端是不能管理 tty2 終端中的工作的
- 放入后臺的命令必須可以持續(xù)運行一段時間,這樣我們才能捕捉和操作這個工作。如果把 ls 命令放入后臺執(zhí)行,它很快就會執(zhí)行完成,我們很難操作它。
- 放入后臺的命令不能和前臺用戶有交互或需要前臺輸入,否則放入后臺只能暫停,而不能執(zhí)行。比如,vi 命令放入后臺只能暫停,而不能執(zhí)行,因為 vi 需要前臺輸入信息。
如何把命令放入后臺:
① 使用 『&』 讓命令在后臺執(zhí)行注意:放入后臺執(zhí)行的命令不能與前臺有交互,否則這個命令是不能再后臺執(zhí)行的。
② 在命令執(zhí)行過程中按 『ctrl + z』快捷鍵,但是命令在后臺是暫停狀態(tài)
使用這種方法放入后臺的命令,就算不和前臺有交互,能在后臺執(zhí)行的命令,也是暫停狀態(tài)。
查看后臺的工作:
jobs [-l]選項:
? -l :顯示工作的 PID
將后臺暫停的工作恢復到前臺執(zhí)行
fg %工作號參數(shù):
? %工作號:%可以省略,但是注意工作號和 PID 的區(qū)別
將后臺暫停的工作恢復到后臺執(zhí)行
bg %工作號后臺命令脫離登錄終端運行
我們已經(jīng)知道把命令放入后臺,只能在當前登錄終端執(zhí)行。如果我是遠程管理的服務器,在遠程終端中執(zhí)行了后臺命令,這時候我退出登錄,這個后臺命令還能繼續(xù)執(zhí)行嗎?答案是不行。這個而后天命令會被終止。但是我們確實需要在遠程終端中執(zhí)行某些命令,該如何執(zhí)行?- 第一種方法是把需要后臺執(zhí)行的命令加入 『/etc/rc.local』 文件,讓系統(tǒng)在啟動時執(zhí)行這個后臺程序。這種方法的問題是服務器是不能隨便重啟的
- 第二種方法是使用系統(tǒng)定時任務,讓系統(tǒng)在指定時間執(zhí)行某個后臺命令。這樣放入后臺的命令與終端無關,是不依賴登錄終端的。
- 最后一種方法是使用 nohup 命令
- nohup 命令的作用就是讓后臺工作在離開操作終端時,也能夠正確的在后臺執(zhí)行
- nohup [命令] &
6、系統(tǒng)資源查看
1)、vmstat 命令監(jiān)控系統(tǒng)資源
vmstat [刷新延時 刷新次數(shù)][root@hepingfly 桌面]# vmstat 1 3 每秒刷新 1 次,總共刷新 3 次 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st0 0 0 365248 23684 247820 0 0 4087 192 568 1871 11 22 63 4 0 0 0 0 365704 23684 247852 0 0 0 0 55 136 1 1 98 0 0 0 0 0 365704 23684 247852 0 0 0 40 54 126 0 0 100 0 0- procs :進程信息字段
- r :等待運行的進程數(shù),數(shù)量越大,系統(tǒng)越繁忙
- b :不可被喚醒的進程數(shù)量。數(shù)量越大,系統(tǒng)越繁忙
- memory :內(nèi)存信息字段
- swpd :虛擬內(nèi)存使用情況,單位是KB
- free :空閑的內(nèi)存容量,單位是KB
- buff :緩沖的內(nèi)存容量,單位是KB
- cache :緩存的內(nèi)存容量,單位是KB
- swap :交換分區(qū)信息字段
- si :從磁盤中交換到內(nèi)存中數(shù)據(jù)的數(shù)量,單位是 KB
- so : 從內(nèi)存中交換到磁盤中數(shù)據(jù)的數(shù)量,單位是 KB 。這兩個數(shù)越大,證明數(shù)據(jù)需要經(jīng)常在磁盤和內(nèi)存之間交換,系統(tǒng)性能越差
- io :磁盤讀寫信息字段
- bi :從塊設備讀入數(shù)據(jù)的總量,單位是塊
- bo :寫到塊設備的數(shù)據(jù)的總量,單位是塊。這兩個數(shù)越大,代表系統(tǒng) I/O 越繁忙
- system :系統(tǒng)信息字段
- in :每秒被中斷的進程次數(shù)
- cs :每秒鐘進行的事件切換次數(shù)。這兩個數(shù)越大,代表系統(tǒng)與接口設備的通信越繁忙
2)、dmesg 顯示開機時內(nèi)核檢測信息
dmesg | grep CPU # 查看 CPU 信息 dmesg | grep eth0 # 查詢第一塊網(wǎng)卡信息3)、free 命令查看內(nèi)存使用狀態(tài)
[root@hepingfly 桌面]# free -h total used free shared buffers cached Mem: 980M 635M 345M 3.4M 24M 242M -/+ buffers/cache: 368M 612M Swap: 1.0G 0B 1.0G# -/+ buffers/cache: 第一個數(shù): used - buffers - cached <==> 635 - 24 -242 = 369 # 第二個數(shù): free + buffers + cached <==> 345 + 24 + 242 = 6114)、查看 cpu 信息
CPU 的主要信息保存在 /proc/cpuinfo 這個文件當中,我們只要查看這個文件,就可以知道 cpu 的相關信息
5)、查看系統(tǒng)與內(nèi)核相關信息
使用 uname 命令查看內(nèi)核相關信息
uname [選項]選項:
? -a :查看系統(tǒng)所有相關信息
? -r :查看內(nèi)核版本
? -s :查看內(nèi)核名稱[root@hepingfly 桌面]# uname -a Linux hepingfly 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@hepingfly 桌面]# uname -r 2.6.32-642.el6.x86_64
6)、查看當前 Linux 系統(tǒng)的發(fā)行版本
lsb_release -a[root@hepingfly hepingfly]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.8 (Final) Release: 6.8 Codename: Final7、crontab 使用
每個用戶都可以實現(xiàn)自己的 crontab 定時任務,只需要使用這個用戶身份執(zhí)行 crontab -e 命令即可
crontab [選項]選項:
? -e :編輯 crontab 定時任務
? -l :查詢 crontab 定時任務
? -r :刪除當前用戶所有的 crontab 任務
表示時間時,有些特殊符號:
crontab 注意事項:
- 六個選項都不能為空,必須填寫。如果不確定使用 『* 』代表任意時間
- crontab 定時任務,最小有效時間是分鐘,最大時間范圍是月。像 2018 年某時執(zhí)行,3 點 30 分 30 秒這樣的時間都不能識別
- 在定義時間時,日期和星期最好不要在一條定時任務中出現(xiàn),因為他們都是以天作為單位,非常容易讓管理員混亂
- 在定時任務中,不管是直接寫命令,還是在腳本中寫命令,最好都是用絕對路徑
總結
以上是生活随笔為你收集整理的使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python选项卡控件_python G
- 下一篇: linux ls-l getswd,li