一文搞懂linux进程_rqaz123的博客-程序员资料_icsfilesec进程

技术标签: 运维  linux  debian  

1.进程的概念:
程序运行起来就是进程,系统会给进程分配cpu,内存,所属用户和权限....

2.进程的分类
#pstree命令查看进程数,第一列是主进程(systemd)只有一个,第二列是父进程,第三列是子进程,第四列是子子进程,一般进程也就到
第四列
[[email protected] ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─Walnuts-Main───22*[{Walnuts-Main}]
        ├─abrt-dbus───3*[{abrt-dbus}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─boltd───2*[{boltd}]
        ├─colord───2*[{colord}]
        ├─comm_srv───15*[{comm_srv}]
        ├─containerd───15*[{containerd}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dnsmasq───dnsmasq
        ├─dockerd───12*[{dockerd}]
        ├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
        │                 └─4*[{evolution-addre}]
        ├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
        │                 └─4*[{evolution-calen}]
        ├─evolution-sourc───3*[{evolution-sourc}]
        ├─fwupd───4*[{fwupd}]
        ├─geoclue───2*[{geoclue}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        ├─goa-daemon───4*[{goa-daemon}]
        ├─goa-identity-se───3*[{goa-identity-se}]
        ├─gsd-printer───2*[{gsd-printer}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
        ├─gvfsd─┬─gvfsd-trash───2*[{gvfsd-trash}]
        │       └─2*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        ├─ibus-portal───2*[{ibus-portal}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─icsfilesec───icsfilesec───16*[{icsfilesec}]
        ├─irqbalance
        ├─java───112*[{java}]
        ├─2*[java───60*[{java}]]
        ├─ksmtuned───sleep
        ├─libvirtd───16*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─mission-control───3*[{mission-control}]
        ├─nginx───4*[nginx]
        ├─packagekitd───2*[{packagekitd}]
        ├─pulseaudio───{pulseaudio}
        ├─rngd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tracker-store───7*[{tracker-store}]
        ├─tuned───4*[{tuned}]
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───{vmtoolsd}
        ├─vmtoolsd───2*[{vmtoolsd}]
        ├─wpa_supplicant
        └─xdg-permission-───2*[{xdg-permission-}]

2.1 主进程
centos7中linux第一个进程是systemd,所有的父进程都归systemd管。

2.2 父进程
运行一个程序就会出现一个进程,这个进程就是父进程,所有的父进程归主进程(systemd)管,父进程不处理具体的业务

2.3 子进程
父进程会产生一个或多个子进程来处理请求和业务,待子进程处理完成任务后,关闭子进程,回收分配给子进程的系统资源(cpu,内存....)

2.4 僵尸进程
僵尸进程是一个不好的进程,也不处理业务,也不告知父进程回收系统资源。僵尸进程可以通过关闭父进程来间接的关闭僵尸进程。

2.5 孤儿进程
也是一个不好的进程,父进程故障了,子进程无父进程管理,由systemd主进程直接接管。

2.6 守护进程
持续运行的进程,一般是系统必须运行的服务,例如:network和sshd服务....

3.管理和监控进程:
3.1 监控进程
监控通过2个命令,ps和top,更推荐使用top查看,ps只能查看你查询的那个节点的进程的状态,而top会默认每隔3s更新一次进程的状态。

3.2 平均负载
平均负载主要是由cpu的使用率和磁盘IO的使用率来决定。也是我们日常排障的时候重点关注的参数。

网站一般分2种机型:cpu密集型(网站应用需要占用大量的cpu进行计算,比如nginx,DB);I/0密集型:(需要大量的磁盘读写,比如备份机器)以视频网站为例,4K高清无码视频,1帧相当于一张照片,一般人识别的动态的画面是30-60帧,1帧是22M,1s有30帧,22*30*60*60*2=4752000/1024=4640.625(G),一个2个小时的4K高清视频是4个多T。视频网站上传视频后,会进行转码(压缩),压缩会用耗用cpu。将视频存储到硬盘就需要耗用I/O。

通过平均负载的中使用到的命令逐渐理解top,和ps命令里的一些参数。

查询cpu的核心数:

#lscpu查看机器有多少个cpu,每个cpu有多少个核心
[[email protected] ~]# lscpu
.....
CPU(s):                384              #384个核心   
.....
Core(s) per socket:    24        #每个cpu,有24个核心
Socket(s):             8            #8个cpu
.....

#此外还有其他命令来查询cpu的核心数:
    cat /proc/cpuinfo 
    lscpu
    top 按1

平均负载主要有cpu的使用率和磁盘IO的使用率决定,当系统的平均负载接近系统cpu总核心数的70%,系统就比较繁忙了。

#使用w命令查看进程的状态:load average(平均负载): 0.04, 0.06, 0.09 分别表示1分钟,5分钟,15分钟的平均负载
[[email protected] ~]# w
 00:29:52 up 54 days,  6:36,  1 user,  load average: 0.04, 0.06, 0.09
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    172.16.2.111     00:10    0.00s  0.16s  0.01s w

分析系统的平均负载

#举例:
如果平均负载为2,机器有4,2,1个核心
4核心,平均负载为2,核心占用%50
2个核心,平均负载为2,核心占用%100
1个核心,平均负载为2,1个进程没有核心来出处理。

如果1,5,15分钟内的平均负载基本相同,说明系统运行很平稳。
如果1分钟远小于15分钟的值,过去15分钟的负载高,负载逐渐减下来了。
如果1分钟远大于15分钟的值,负载突然持续上升,过去15分钟负载正常。
一旦平均负载超过cpu核心总数,表明系统负载很高,需要进行优化。

3.2 cpu导致平均负载高
使用压力来提高cpu的使用率,致使平均负载高

#stress 命令详解
stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
    --cpu 生成多少个进程供几个核心使用。
    --io  同时进行磁盘io的进程数
    --vm  几个进程
    --vm-bytes 每个进程占用多少内存空间
    --timeout  持续多久

#压力测试-产生3个进程占用3个核心,运行时间是999999(对cpu施压,提高cpu利用率,来提高平均负载)
[[email protected] ~]# stress --cpu 3 --timeout 999999


#查看平均负载,watch每2s更新一次并高亮变化的值。(观察平均负载已经很高了)
[[email protected] ~]# watch -dc w      
 19:15:56 up 7 min,  2 users,  load average: 3.04, 1.53, 0.64
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         19:08    2:52   2:50   0.00s stress --cpu 3 --timeout 999999
root     pts/1    10.0.0.1         19:13    4.00s  0.08s  0.00s w


#通过top命令查看什么进程导致的负载高,top命令默认是以cpu的使用率进行排序的。%CPU 表示cpu的使用率。
#COMMAND 进程的名字,stress进程cpu使用率特别高。
[[email protected] ~]# top    
top - 19:16:26 up 8 min,  2 users,  load average: 3.02, 1.67, 0.71
Tasks: 112 total,   5 running, 107 sleeping,   0 stopped,   0 zombie
%Cpu(s):100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2859800 total,  2321484 free,   145060 used,   393256 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  2494048 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                     
  1943 root      20   0    7312    100      0 R 33.2  0.0   1:06.88 stress                                                                      
  1944 root      20   0    7312    100      0 R 33.2  0.0   1:06.88 stress                                                                      
  1942 root      20   0    7312    100      0 R 32.9  0.0   1:06.88 stress 
  
#ps auxf显示出父进程与子进程的关系并用grep,筛选出stress进程。
[[email protected] ~]#  ps auxf | grep stress
root       1941  0.0  0.0   7312   428 pts/0    S+   19:13   0:00  |       \_ stress --cpu 3 --timeout 999999
root       1942 33.0  0.0   7312   100 pts/0    R+   19:13   2:01  |           \_ stress --cpu 3 --timeout 999999
root       1943 33.0  0.0   7312   100 pts/0    R+   19:13   2:01  |           \_ stress --cpu 3 --timeout 999999
root       1944 33.0  0.0   7312   100 pts/0    R+   19:13   2:01  |           \_ stress --cpu 3 --timeout 999999
root       1991  0.0  0.0 112808   964 pts/1    S+   19:19   0:00          \_ grep --color=auto stress


#对应占用cpu利用率高的进程通过pkill + 进程名字 命令,将进程杀掉
[[email protected] ~]# pkill stress

#杀掉进程后验证平均负载是否恢复正常。
 


3.3 IO导致平均负载高
用压力测试stress来提高磁盘的IO

#此段可忽略,仅作为扩展
#stress的io参数, 不显示磁盘进程占用情况,显示的是系统进程占用情况,--io调用的是系统的syn函数,函数与系
统内核进行沟通,所以显示的是系统进程负载高,需要使用-hdd参数
stress  --io 2    --vm 2 --vm-bytes 128M --timeout 100s


#可以看到97.4 sy,sy表示系统负载高,
[[email protected] ~]# top
top - 19:38:03 up 29 min,  2 users,  load average: 0.72, 0.23, 0.45
Tasks: 113 total,   6 running, 107 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us, 97.4 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2859800 total,  2221284 free,   244732 used,   393784 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  2394196 avail Mem
 


#使用--hdd 命令,会压测磁盘io负载
[[email protected] ~]# stress --hdd 8 --hdd-bytes 1g 8个进程,每个进程写1个g

#top命令查看, 61.0 wa(第三行),61.0 wa:cpu等待IO完成的时间,磁盘读写速度太慢,cpu需要等待磁盘
#IO完成之后,cpu才能处理数据,也会导致平均负载过高。
[[email protected] ~]# top
top - 19:41:31 up 33 min,  2 users,  load average: 3.88, 1.75, 1.00
Tasks: 118 total,   7 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us, 30.1 sy,  0.0 ni,  0.0 id, 61.0 wa,  0.0 hi,  8.2 si,  0.0 st
KiB Mem :  2859800 total,    99568 free,   149432 used,  2610800 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  2457296 avail Mem 

#看到IO负载高后,查看哪个进程导致IO负载高。iotop -o 查看哪些进程正在使用IO。
[[email protected] ~]# iotop -o

Total DISK READ : 0.00 B/s | Total DISK WRITE :     243.13 M/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE:     222.79 M/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                
  2123 be/4 root        0.00 B/s   31.17 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2124 be/4 root        0.00 B/s   31.17 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2125 be/4 root        0.00 B/s   30.28 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2121 be/4 root        0.00 B/s   30.28 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2127 be/4 root        0.00 B/s   30.28 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2063 be/4 root        0.00 B/s    0.00 B/s  0.00 % 99.99 % [kworker/u256:1]
  2126 be/4 root        0.00 B/s   30.28 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2122 be/4 root        0.00 B/s   30.28 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2120 be/4 root        0.00 B/s   29.39 M/s  0.00 % 99.99 % stress --hdd 8 --hdd-bytes 1g
  2111 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.89 % [kworker/0:1]

#过滤出读写的进程将进程pkill掉。
[[email protected] ~]# pkill stress


#杀掉进程后验证平均负载是否恢复正常。

3.4 故障排查的思路
系统平均负载高

监控和业务反馈负载高,网站访问缓慢。

top查看cpu负载高(%CPU)还是io负载高(0.0 wa)。

cpu负载高,top命令就能看出来。

io负载高,通过iotop -o命令查看哪些进程导致的io负载高

分析进程:

找出对应的进程,是否可以pkill掉进程(牧马或者肉鸡进程,挖矿进程...)

如果进程不能pkill通过查看日志,来判断什么原因导致的。

高阶:通过strace(显示命令执行过程)或者ltrace(显示命令执行过程和调用依赖)命令跟踪进程和命令执行过程。 (开发协助一起看)

top验证是否平均负载是否恢复。

3.5 ps命令详解
ps命令:只会显示你查询的时候的状态,(类似于给进程的状态拍了个照片)

auxf 在进程列(COMMAND)显示父进程子进程的关系。

#你显示标题信息,并以第五列进行排序

ps aux --no-header | sort -rnk5    #--no-header 不显示头部,只显示第五列

pstree  #查看进程树状结构

#ps aux 每一列命令详解
USER:进程属于的用户  
PID:进程的id  
%CPU %MEM:进程占用的cpu和内存百分比   
VSZ   RSS:占用虚拟内存和物理内存的大小    
TTY:进程属于哪个终端  
STAT:进程的状态,远程连接占用一个窗口,就是一个终端。?代表后台运行进程,带pts就是前台进程。带tty的表示服务器直接登录。   
START:进程开启的时间   
TIME:进程已经占用cpu的时间,cpu的核心在每个任务中间切换的足够快,每个任务占用cpu多长时间。(一个核心同时只能处理
一个进程) 
COMMAND:进程名称或叫命令


[[email protected] ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 125752  4272 ?        Ss   12:59   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
polkitd    1070  0.0  0.4 612248 13272 ?        Ssl  12:59   0:00 /usr/lib/polkit-1/polkitd --no-debug
root     103164  0.0  0.0 184584  2572 ?        S    18:08   0:00 /usr/sbin/CROND -n
root     103217  0.0  0.0 157552  1920 pts/0    R+   18:08   0:00 ps -aux
root     103218  0.0  0.0 112816   952 pts/0    S+   18:08   0:00 grep --color=auto R
polkitd  119118  8.7  0.0 619928 14408 ?        Rsl  Feb09 11944:49 /usr/lib/polkit-1/polkitd --no-debug
root       1072  0.0  0.2  99688  6084 ?        Ss   12:59   0:00 /usr/bin/VGAuthService -s
root       1604  0.0  0.0  89704  2228 ?        Ss   12:59   0:00 /usr/libexec/postfix/master -w
postfix    1623  0.0  0.1  89876  4088 ?        S    12:59   0:00 qmgr -l -t unix -u
root       1880  0.0  0.2 157324  5916 ?        Ss   12:59   0:00 sshd: [email protected]/0
root       1882  0.0  0.1 116580  3212 pts/0    Ss   12:59   0:00 -bash
root       2719  0.2  0.1 116464  2924 tty1     Ss   17:43   0:00 -bash
root       2741  0.0  0.0 108052   352 tty1     S+   17:43   0:00 sleep 9999
root       3220  0.0  0.0      0     0 ?        S<    2021   0:00 [scsi_tmf_24]
postfix    2567  0.0  0.1  89808  4072 ?        S    16:19   0:00 pickup -l -t unix -u
nginx      2665  0.0  0.0  39692  1820 ?        S    17:00   0:00 nginx: worker process
root       9800  0.0  0.0  55528  1032 ?        S<sl  2021   1:17 /sbin/auditd
root       9802  0.0  0.0  84556   908 ?        S<sl  2021   1:14 /sbin/audispd
root       9804  0.0  0.0  55636  1344 ?        S<    2021   0:48 /usr/sbin/sedispatch
rpc        9829  0.0  0.0  69272  1436 ?        Ss    2021   0:22 /sbin/rpcbind -w
avahi      9833  0.0  0.0  62284  2280 ?        Ss    2021  20:06 avahi-daemon: running [node-20.local]
root       9834  0.0  0.0 225828  4752 ?        Ss    2021   3:25 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recurs
dbus       9835  3.5  0.0  62764  4232 ?        Ss    2021 9042:06 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --system
avahi      9839  0.0  0.0  62152   392 ?        S     2021   0:00 avahi-daemon: chroot helper
rtkit      9843  0.0  0.0 198800  1748 ?        SNsl  2021   1:38 /usr/libexec/rtkit-daemon
root       9844  0.0  0.0  26760  2212 ?        Ss    2021   6:56 /usr/lib/systemd/systemd-logind
root       9845  0.0  0.0 356876  5212 ?        Ssl   2021   1:17 /usr/sbin/ModemManager
root       9849  0.0  0.0  21692  1336 ?        Ss    2021  27:13 /usr/sbin/irqbalance --foreground


VSZ:进程占用的虚拟内存大小,就是是物理内存+交换分区空间(swap空间),swap空间使用磁盘空间配置,当系统内存不足,swap空
间可以临时补充。
RSS:进程占用的物理内存大小。linux如果内存不足,主进程不知道哪个进程导致内存不足,会随机挑选进程kill。如果知道是那
个进程导致内存不足,会kill掉这个进程。
#查看机器的所有内存
[[email protected] ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        4.8G        204M        738M         10G        9.5G
Swap:           15G        756M         15G


进程的STAT:

基础进程

描述

组合进程(可以和基础进程组合)

描述

R(Runing)

正在运行的

s(session leader)

表示控制进程,Ss可以随时中断的父进程

S(sleep)

可以随时中断的进程

<

优先级,S<优先级较高的进程,优先保障的进程

T(stopped)

进程被暂停(挂起)ctrl+z就会暂停进程

N

低优先级进程,一般不常见。

D(don‘t sleep)

不可中断的进程(IO 读写的时候,中断数据会丢失)

+

当前进程运行在前台,R+正在前台运行的进程

Z(zombie)

僵尸进程

l(小写L)

由程序的开发代码定义进程是否多线程的,

Sl:进程是以线程方式运行,

超线程技术:允许一个核心同一时间处理2个进程(任务)。

linux比较常见的进程状态:

#R+: 表示前台运行的进程
[[email protected] ~]# dd if=/dev/zero of=/tmp/big bs=1M count=1000000

[[email protected] ~]# ps -aux | grep -w dd
root       2829 85.8  0.0 109132  1404 pts/0    R+   18:54   0:08 dd if=/dev/zero of=/tmp/big bs=1M count=1000000
root       2832  0.0  0.0 112808  1000 pts/1    S+   18:54   0:00 grep --color=auto -w dd


#R 仅运行中
#dd 命令加& (命令后加&就放到后台运行了)测试完成通过kill 关闭进程
[[email protected] ~]# dd if=/dev/zero of=/tmp/big bs=1M count=1000000 &
[1] 2896
[[email protected] ~]# ps -aux | grep -w dd
root       2896 46.8  0.0 109132  1408 pts/0    R    19:01   0:03 dd if=/dev/zero of=/tmp/big bs=1M count=1000000
root       2918  0.0  0.0 112808  1000 pts/1    R+   19:02   0:00 grep --color=auto -w dd
[[email protected] ~]# ps -aux | grep -w dd
root       2896 43.0  0.0 109132  1408 pts/0    D    19:01   0:03 dd if=/dev/zero of=/tmp/big bs=1M count=1000000
root       2920  0.0  0.0 112808  1000 pts/1    R+   19:02   0:00 grep --color=auto -w dd
[[email protected] ~]# kill 2896

#S 可以中断的进程
nginx      2660  0.0  0.0  39692  1820 ?        S    17:00   0:00 nginx: worker process
nginx      2661  0.0  0.0  39692  1820 ?        S    17:00   0:00 nginx: worker process
nginx      2662  0.0  0.0  39692  1820 ?        S    17:00   0:00 nginx: worker process
nginx      2663  0.0  0.0  39692  1820 ?        S    17:00   0:00 nginx: worker process


#T 进程被挂起(暂停)
#ctrl+z 挂起进程
[[email protected] ~]# vim /etc/fstab     #vim 打开文件后,ctrl+z 挂起进程
[1]+  Stopped                 vim /etc/fstab
[[email protected] ~]# 
#回到前台运行,bg继续后台运行。
[[email protected] ~]# fg
vim /etc/
...
[[email protected] ~]# ps -aux | grep -w vim
root       2855  1.1  0.1 149976  5676 pts/0    T    18:58   0:00 vim /etc/fstab
root       2857  0.0  0.0 112808   996 pts/1    S+   18:58   0:00 grep --color=auto -w vim


\

#D 不可中断进程,一般于IO有关
[[email protected] ~]# dd if=/dev/zero of=/tmp/big bs=1M count=1000000 &
[1] 2896
[[email protected] ~]# kill 2896
[[email protected] ~]# 
[[email protected] ~]# ps -aux | grep -w dd
root       2896 46.8  0.0 109132  1408 pts/0    R    19:01   0:03 dd if=/dev/zero of=/tmp/big bs=1M count=1000000
root       2918  0.0  0.0 112808  1000 pts/1    R+   19:02   0:00 grep --color=auto -w dd
[[email protected] ~]# ps -aux | grep -w dd
root       2896 43.0  0.0 109132  1408 pts/0    D    19:01   0:03 dd if=/dev/zero of=/tmp/big bs=1M count=1000000
root       2920  0.0  0.0 112808  1000 pts/1    R+   19:02   0:00 grep --color=auto -w dd

#Ss 可以中断的管理进程,父进程
[[email protected] ~]# ps -aux | grep Ss
root          1  0.0  0.1 125752  4272 ?        Ss   12:59   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root        482  0.0  0.1  39080  3124 ?        Ss   12:59   0:00 /usr/lib/systemd/systemd-journald
root        509  0.0  0.0  45736  2676 ?        Ss   12:59   0:00 /usr/lib/systemd/systemd-udevd
root        512  0.0  0.0 198572  1356 ?        Ss   12:59   0:00 /usr/sbin/lvmetad -f
root       1053  0.0  0.1 228184  5648 ?        Ss   12:59   0:00 /usr/sbin/abrtd -d -s


#Ssl 父进程and多线程
[[email protected] ~]# ps -aux | grep Ssl
root       1067  0.0  0.3 474368  8780 ?        Ssl  12:59   0:00 /usr/sbin/NetworkManager --no-daemon
polkitd    1070  0.0  0.4 612248 13272 ?        Ssl  12:59   0:00 /usr/lib/polkit-1/polkitd --no-debug
root       1073  0.1  0.2 305280  6404 ?        Ssl  12:59   0:22 /usr/bin/vmtoolsd
root       1381  0.0  0.6 574300 17312 ?        Ssl  12:59   0:03 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root       1383  0.0  0.1 222764  4436 ?        Ssl  12:59   0:01 /usr/sbin/rsyslogd -n
root       2928  0.0  0.0 112808   968 pts/1    R+   19:06   0:00 grep --color=auto Ssl


3.6 top命令详解
top:实时的显示进程的状态。默认每3s更新一次。

#TOP是一个交互命令:
    空格:刷新
    按照内存进行排序:M
    按照CPU排序:P
    1:显示cpu有多少核心,lscpu可以查看cpu的详细信息。
    z:显示颜色,x,当前排序的列显示其他颜色。<和>更当前排序列。

#top命令命令行选项,使用三剑客让top显示的一部分内容
    -b  批处理模式,方便输出内容交给其他命令二次加工处理。
    -n  刷新的次数,一般和-b一起用,-bn1 只刷新一次。
    -d  指定刷新时间 -d 1 1秒刷新一次。
    -p  指定进程信息进行查看。
    -H  查看线程信息,一般Hp一起用。
   

#top命令详细解析
机器已经运行的时间,目前登录用户数,1 5 15分钟的系统平均负载
top - 04:27:29 up 51 days, 10:21,  1 user,  load average: 0.05, 0.05, 0.08
进程总数,1个正在运行,361个在睡觉,0个挂起进程,0个僵尸进程。                
Tasks: 362 total,   1 running, 361 sleeping,   0 stopped,   0 zombie

cpu:用户进程占用用的CPU,系统进程占用,高优先级进程占用,空闲进程占用,IO wait(进程进行IO
读写,IO wait高,说明有进程大量的读写硬盘)硬中断,软中断,steal(如果机器部署虚拟机,查看
虚拟机占用了多少cpu)
%Cpu(s):  0.4 us,  0.2 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

总计内存,空闲内存,使用内存,缓存占用内存
KiB Mem : 65423612 total,  4450732 free,  1763820 used, 59209060 buff/cache

swap总计,多少空闲,多少在使用,当前的可用内存(一般是缓存+空闲内存)
KiB Swap:        0 total,        0 free,        0 used. 62124648 avail Mem 

PR+NI 优先级,VSZ,RSS,SHR(共享内存),S(进程状态),CPU MEM使用率,占用cpu时间,进程

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                        
     6 root      20   0       0      0      0 S  0.3  0.0   0:00.10 ksoftirqd/0                                    
   930 root      20   0  305280   6404   5028 S  0.3  0.2   0:01.33 vmtoolsd                                       
  1933 root      20   0  162096   2200   1548 R  0.3  0.1   0:00.27 top                                            
     1 root      20   0  125756   4308   2576 S  0.0  0.2   0:02.59 systemd                                        
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                       
     4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                   
     5 root      20   0       0      0      0 S  0.0  0.0   0:00.05 kworker/u256:0                                 
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.01 migration/0                                    
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                         
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.46 rcu_sched                                      
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain  


#top第三列:
%Cpu(s):  0.4 us,  0.2 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    0.4 us:用户cpu使用率(用户执行的服务,软件,命令,加密,转码...)
    0.2 sy:系统cpu使用率(内核进程,硬件,磁盘和网络..)
    0.0 ni:高优先级进程(一般系统内核进程)占用cpu的使用率
    0.0 wa:磁盘读写速度,满足不了系统进程的要求。cpu等待IO完成的时间。
    0.0 hi:硬中断,cpu速度极快,硬盘速度慢,cpu等待磁盘完成任务,cpu再进行处理,
    cpu在多个任务之间切换,其中就有任务属于停止中断的状态。硬中断就是硬件层面的中断,
    软中断就是系统软件层面的中断。
    0.0 si:软中断
    0.0 st:steal(机器在linux中部署虚拟机,查看虚拟机占用了多少cpu)
 
 #SHR共享内存:进程之间如果运行相似的东西,优化内存,创建共享内存来运行进程之间相似的部分。

#显示进程的线程信息。
    进程:运行的程序软件就是进程。
    线程:线程需要程序打开,一个进程下面包含多个线程, 线程负责处理任务,进程负责管理和提供资源(CPU,内存...)给线程。
    
#查看进程为2290的线程, mysql是一个使用线程的进程
[[email protected] ~]# top -Hp 2290
top - 11:58:27 up 7 min,  1 user,  load average: 0.01, 0.11, 0.07
Threads:  19 total,   0 running,  19 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2859804 total,  2166396 free,   226008 used,   467400 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  2411384 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  2290 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.18 mysqld
  2294 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2295 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2296 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2297 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2298 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.02 mysqld
  2299 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2300 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2301 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2302 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2303 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2304 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2305 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.02 mysqld
  2306 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2307 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2308 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.01 mysqld
  2309 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2317 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld
  2318 mysql     20   0  968916  85716   7208 S  0.0  3.0   0:00.00 mysqld

#top命令包括了其他命令显示的信息

 w 查看用户和平均负载   
[[email protected] ~]# w
 05:09:34 up 51 days, 11:03,  1 user,  load average: 0.08, 0.06, 0.05
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    172.16.2.111     04:25    6.00s  0.26s  0.25s -bash    

[[email protected] ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            62G        1.7G        4.2G        782M         56G         59G
Swap:            0B          0B          0B
buff/cache:linux会把一部分内存放在buff/cache,中,将打开过的文件等内容,放到缓存,
加速下次打开。


3.7 关闭进程
 推荐使用killall来关闭进程。

#kill 
    kill + 进程号:kill+pid是使用默认的kill信号。(SIGTERM)。
    kill -信号 进程号
kill相关信号
    SIGHUB(1):进程重新读取配置文件,实现的是reload功能。
    SIGKILL(9):强制结束,慎用(尤其带数据的进程,比如数据库)。
    SIGTERM(15):停止,kull,默认的信号。
    
#pkill
    pkill+进程名字,生产环境慎用,会把包含这个进程名字的其他进程也杀掉。会误杀。(比如要pkill sh 会把sshd,bash..只要进程名字
    包括sh的进程都杀掉)

#killall
    killall+进程名字:kill掉的就是精确匹配的进程名字,不会误删。

关闭顽固进程

命令卡住了。
    1.开启新窗口,kill 杀掉进程。
    2.ctrl+z 让任务挂起,bg后台运行。再用kill +数字结束任务。

3.8 后台运行进程
#查看进入后台的任务:
        jobs 查看进入后台的任务。

#进入后台进程的方法:
方法1:
    ctrl + z:进入后台后会挂起不运行,输入bg开始在后台运行任务。
    fg:放到前台运行。
    
    
方法2:
    &:在脚本的后面直接 输入&,任务就会进入后台运行。


方法3:最推荐的方法
    需要yum安装screen。
    screen:命令会打开一个screen空间,-S 指定screen空间名称。
        screen -S guo 进入guo的screen空间
        输入要执行的命令    
        如果命令执行完会自动退出screen窗口。
        如果不想等命令执行完按住ctrl +a 按完之后按d,会退出screen空间,但是命令还在screen空间执行。
        
    通过screen -ls查看,所执行的后台命令。
    通过screen -r 加进程号 进入之前退出的screen空间。查看命令执行情况。
    结束执行的进程后,ctrl +d 就会完全退出screen空间。                           

#关闭后台任务:
    kill %n:结束后台n号进程。
    kill %%:结束最后一个后台进程。
 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rqaz123/article/details/124925137

智能推荐

STM32 串口通信介绍及cubemx配置_Nie_Hen的博客-程序员资料

学习理解STM32的串口通信,中断以及I2C的使用。应用:使用中断和串口通通信获取按键值发送出来并显示到数码管上。使用I2C 将获取到的按键值保存到内存中。串口通信计算机的CPU与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。并行通信数据字节的各位同时传送的通信方式。并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。串行通信(Se...

android 背景图缩放,解决android:background背景图片被拉伸问题_weixin_39639600的博客-程序员资料

ImageView中XML属性src和background的区别:background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。此外:scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式如上所述,backg...

qt用odbc连接mysql_【原创】Qt 使用ODBC driver 连接SQL Server_午餐时间到了的博客-程序员资料

最近在做数据库的课程设计。第一个需要解决的问题是使用什么工具来实现这个系统。经过一番资料查找,决定使用SQL Server Express 2012作为服务器,使用Qt作为编写客户端程序语言。问题是client如何连接SQL Server? 下面是我的解决方法。1.开启windows上的SQL Server 的ODBC驱动ODBC 是一个调用级接口,它使得应用程序得以访问任何具有 ODBC 驱动程...

翻页时钟代码大公开_lovefan的博客-程序员资料_翻页钟开源代码

不少朋友向我要翻页时钟的代码,现在贴给大家。代码水平有限,见谅。看不明白的可以问我:)js// miniprogram/pages/flipClock/jsconst moment = require('../../../utils/moment-with-locales.min.js');const Lunar = require('../../../utils/lunar.js');var startX, endX;var moveFlag = true; // 判断执行滑动事件.

JAVA切换不了FTP服务器目录_解决linux下ftp指定访问目录无法修改的问题_豪睿刘爱上楼楼梯的博客-程序员资料

他的系统是CentOS,是RH派系的。我把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误:500 OOPS: cannot change directory:/home/ftp原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。//查看SELinux设置# getsebool -a|grep ftpftpd_disable_tr...

.NET实现网络爬虫_hyunbar的博客-程序员资料_.net 爬虫

爬虫的特征和运行方式User-Agent:主要用来将我们的爬虫伪装成浏览器。Cookie:主要用来保存爬虫的登录状态。连接数:主要用来限制单台机器与服务端的连接数量。代理IP:主要用来伪装请求地址,提高单机并发数量。爬虫工作的方式可以归纳为两种:深度优先、广度优先。深度优先就是一个连接一个连接的向内爬,处理完成后再换一下一个连接,这种方式对于我们来说缺点很明显。 广度优先...

随便推点

twisted builtins.TypeError: __init__() missing 1 required positional argument: 'dbpool'_锅前带刀小笼包的博客-程序员资料

学习爬虫异步插入,遇到问题Unhandled error in Deferred:2020-05-10 14:41:59 [twisted] CRITICAL: Unhandled error in Deferred:...builtins.TypeError: __init__() missing 1 required positional argument: 'dbpool'发现是函数名写错, 应该是from_settings ,结果写成了from_setting,低级错误,记录一下pip

Paxos、Raft、ZAB算法_知知之之的博客-程序员资料_paxos raft zab

Paxos算法是Leslie Lamport在1990年提出的一种基于消息传递的一致性算法。基于Paxos协议的数据同步与传统主备方式最大的区别在于:Paxos只需超过半数的副本在线且相互通信正常,就可以保证服务的持续可用,且数据不丢失。Paxos将系统中的角色分为提议者 (Proposer),决策者 (Acceptor),和最终决策学习者 (Learner):在多副本状态机中,每个副本同时具有Proposer、Acceptor、Learner三种角色。Paxos算法通过一个决议分为两个阶段(Learn阶段

Bibtex格式类型_小王同学w的博客-程序员资料_bibtex类型

出于保留资源和查找方便,转载自https://blog.csdn.net/kmsj0x00/article/details/85318057类型简介必需关键字可省略关键字@article期刊或杂志上的一篇文章。author, title, journal, year.volume, number, pages, month, [email protected]有确定出版社的书籍。author或editor, title, publisher, year.volume或number, series, address, e

SpringBoot-Google二步验证_apkqfa6158的博客-程序员资料

SpringBoot-Google二步验证概念:Google身份验证器Google Authenticator是谷歌推出的基于时间的一次性密码(Time-based One-time Password,简称TOTP),只需要在手机上安装该APP,就可以生成一个随着时间变化的一次性密码,用于帐户验证。Google身份验证器是一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件...

Maven_weixin_41249041的博客-程序员资料

maven帮助构建项目 项目和项目之间的依赖关系,管理jar包。项目管理工具,管理java项目:1、项目对象模型 POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。2、依赖管理系统(基础核心 )maven通过坐标对项目工程所依赖的jar包统一规范管理。3、maven定义一套项目生命周期清理、初始...

css教程系列5:px、em、rem区别介绍_邢晋宇的博客-程序员资料

1 PXpx像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。PX特点1. 浏览器无法调整px单位的字体,以em或rem为字体单位可调整字体。 2 EMem是相对长度单位。EM特点1. em的值并不是固定的;2. 行高:n倍的 em = n *父级元素的像素px大小(若无则*浏览器的默认字体)。3 REMrem是CSS3新增的一个相对单位(root em,根em),也是相对...

推荐文章

热门文章

相关标签