程序: 文件,通常是二進制,靜態 /usr/sbin/httpd,/usr/sbin/sshd 進程: 是程序運行的過程, 動態,有生命週期的,動態產生和消亡的nginx
一個程序可能對應多個進程web
# ps aux |grep 'sshd' root 2705 0.0 0.0 7224 1020 ? Ss 08:48 0:00 /usr/sbin/sshd root 8158 0.0 0.0 4264 676 pts/1 R+ 14:05 0:00 grep sshd # ps aux | grep "nginx" root 208011 0.0 0.0 95800 8080 ? Ss 2018 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf web 402699 0.0 0.1 122940 34492 ? S 15:52 0:00 nginx: worker process web 402700 0.0 0.1 122940 34560 ? S 15:52 0:00 nginx: worker process web 402701 0.0 0.1 122940 33440 ? S 15:52 0:00 nginx: worker process web 402702 0.0 0.1 122940 34536 ? S 15:52 0:00 nginx: worker process web 402703 0.1 0.1 122940 34560 ? S 15:52 0:00 nginx: worker process web 402704 0.0 0.1 122940 33440 ? S 15:52 0:00 nginx: worker process web 402705 0.0 0.1 122940 34584 ? S 15:52 0:00 nginx: worker process web 402706 0.0 0.1 122940 34520 ? S 15:52 0:00 nginx: worker process
父進程:程序運行時產生的第一個進程 子進程:由父進程衍生出來的進程shell
注意:若是父進程終止,子進程也會隨之被終止
apache
一、靜態psvim
# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 init [5] USER: 運行進程的用戶 PID: 進程ID %CPU: CPU佔用率 %MEM: 內存佔用率 RSS: 佔用內存 TTY: 程序運行的終端 STAT:狀態 S 處於休眠 Sleep R 運行 Z 殭屍進程 T 中止的進程 Ss s進程的領導者,父進程 S< <優先級較高的進程 SN N優先級較低的進程 R+ +表示是後臺的進程組 START: 進程的啓動時間 TIME: 進程佔用CPU的總時間 COMMAND: 進程文件,進程名 # ps axo user,pid,ppid,%mem,command |grep nginx root 208011 1 0.0 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf web 402699 208011 0.1 nginx: worker process web 402700 208011 0.1 nginx: worker process web 402701 208011 0.1 nginx: worker process web 402702 208011 0.1 nginx: worker process web 402703 208011 0.1 nginx: worker process web 402704 208011 0.1 nginx: worker process web 402705 208011 0.1 nginx: worker process web 402706 208011 0.1 nginx: worker process # ps auxf | grep "nginx" root 208011 0.0 0.0 95800 8080 ? Ss 2018 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf web 402699 0.0 0.1 122940 34492 ? S 15:52 0:00 \_ nginx: worker process web 402700 0.0 0.1 122940 34564 ? S 15:52 0:00 \_ nginx: worker process web 402701 0.0 0.1 122940 33496 ? S 15:52 0:00 \_ nginx: worker process web 402702 0.0 0.1 122940 34536 ? S 15:52 0:00 \_ nginx: worker process web 402703 0.1 0.1 122940 34564 ? S 15:52 0:01 \_ nginx: worker process web 402704 0.0 0.1 122940 33488 ? S 15:52 0:00 \_ nginx: worker process web 402705 0.0 0.1 122940 34584 ? S 15:52 0:00 \_ nginx: worker process web 402706 0.0 0.1 122940 34520 ? S 15:52 0:00 \_ nginx: worker process web 402707 0.0 0.1 122940 33508 ? S 15:52 0:00 \_ nginx: worker process # ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:47 ? 00:00:00 init [5]
查看指定進程的PID網絡
# ps aux |grep sshd root 10180 0.0 0.0 7224 1024 ? Ss 16:00 0:00 /usr/sbin/sshd # pgrep sshd 10180 # pgrep vino-server 10126 # pstree //查看進程樹
二、動態top(查看、管理進程)ssh
# top # top -d 1 # top -d 1 -p 10126 查看指定進程的動態信息 # top -d 1 -p `pgrep sshd` 命令替換 # top -d 1 -p $(pgrep sshd) 命令替換 # top -d 1 -p $(pgrep vino-server),1 # top -d 1 -u apache 查看指定用戶的進程 # top -b -n 2 > top.txt 將2次top信息寫入到文件
第一部分:系統總體統計信息tcp
load average: 0.86, 0.56, 0.78 CPU 1分鐘,5分鐘,15分鐘平均負載
第二部分:進程信息ui
命令 M 按內存的使用排序 P 按CPU使用排序 N 以PID的大小排序 R 對排序進行反轉 f 自定義顯示字段 h|? 幫助 < 向前 > 向後 z 彩色 0---實時--99 100----------139 r 調整進程的優先級 (-20高) ---0--- (19低) k 給進程發送信號 1,9,15
設置或調整進程的優先級code
# nice -n -5 sleep 6000 & //程序運行時設置優先級 # sleep 7000 & [3] 10089 # renice -20 10089 //對已運行的進程設置新的優先級 10089: old priority 0, new priority -20
給進程發送信號
# kill -l //列出全部支持的信號 編號 信號名 1) SIGHUP 重啓 9) SIGKILL 強制終止 15) SIGTERM 終止(正常退出,乾淨),缺省信號
略
做業1: 給sshd進程發送信號
# ps aux |grep sshd root 9486 0.0 0.0 7224 1056 ? Ss 15:01 0:00 /usr/sbin/sshd # kill -1 9486 //發送重啓信號 # ps aux |grep sshd root 9947 0.0 0.0 7224 1028 ? Ss 15:42 0:00 /usr/sbin/sshd # kill 9947 //發送中止信號 # ps aux |grep sshd root 9953 0.0 0.0 4264 676 pts/1 R+ 15:44 0:00 grep sshd
做業2:
# touch file1 file2 # tty /dev/pts/1 # vim file1 # tty /dev/pts/2 # vim file2 # ps aux |grep vim root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1 root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2 # kill 4362 # kill -9 4363 # killall vim //給全部vim進程發送信號 # killall httpd
netstat:針對網絡進程
# netstat -tnlp //查看正在監聽的,使用tcp協議的進程 -t tcp協議 -u udp協議 -l listen -p PID/Program name -n 不反解,不將IP地址解析爲主機名,不將端口號解析成協議名(80 ---> http) # netstat -tnlp |grep :5900 tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 10126/vino-server # netstat -tnlp |grep :80 # service httpd start # netstat -tnlp |grep vino-server tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3772/vino-server # netstat -tnlp |grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8737/sshd # netstat -tnlp |grep :80 tcp 0 0 :::80 :::* LISTEN 10364/httpd # netstat -an |grep :5900 //查看5900端口鏈接的狀態 'tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN tcp 10 0 192.168.2.115:5900 192.168.2.129:46303 ESTABLISHED tcp 10 0 192.168.2.115:5900 192.168.2.33:39213 ESTABLISHED tcp 10 0 192.168.2.115:5900 192.168.2.116:37023 ESTABLISHED tcp 0 0 192.168.2.115:5900 192.168.2.126:35725 ESTABLISHED tcp 10 0 192.168.2.115:5900 192.168.2.124:33955 ESTABLISHED # netstat -an |grep :80 tcp 0 0 :::80 :::* LISTEN tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59872 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59873 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59874 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59875 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.1:43007 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59848 TIME_WAIT tcp 0 0 ::ffff:192.168.5.230:80 ::ffff:192.168.5.14:59849 TIME_WAIT # netstat -an |grep :80 |awk -F":" '{print $8}' |sort |uniq -c |sort -k1 -rn |head -3 2231 192.168.5.55 1031 192.168.5.29 330 192.168.5.11
/proc目錄 虛擬文件系統: 內核、進程運行的狀態信息
# du -sh /proc 0 /proc /etc/cpuinfo # grep 'processor' /proc/cpuinfo //邏輯cpu的個數 processor : 0 processor : 1 # grep 'processor' /proc/cpuinfo |wc -l 2 # grep 'physical id' /proc/cpuinfo //物理cpu physical id : 0 physical id : 0 # grep 'physical id' /proc/cpuinfo |sort |uniq -c 2 physical id : 0 flags lm(64位) vmx 支持虛擬化 intel svm 支持虛擬化 AMD # egrep --color 'lm|vmx|svm' /proc/cpuinfo flags : fpu vme de clflush dts acpi lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm flags : fpu vme de clflush dts acpi lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm /proc/cmdline # cat /proc/cmdline //內核啓動時的參數 ro root=LABEL=/1 rhgb quiet /proc/meminfo # cat /proc/meminfo # free -m total used free shared buffers cached Mem: 2017 1955 61 0 113 1426 -/+ buffers/cache: 416 1600 Swap: 8001 0 8001 # uptime 17:20:58 up 8:33, 3 users, load average: 0.43, 0.36, 0.36 若是卸載proc文件系統後。。。 # mount # umount /proc/ -l # free -m Error: /proc must be mounted To mount /proc at boot you need an /etc/fstab line like: /proc /proc proc defaults In the meantime, run "mount /proc /proc -t proc" # uptime Error: /proc must be mounted To mount /proc at boot you need an /etc/fstab line like: /proc /proc proc defaults In the meantime, run "mount /proc /proc -t proc" # mount -t proc proc /proc -t proc 指定文件系統的類型 proc 文件系統,虛擬文件系統 /proc 掛載點