首页 > 系统相关 >Linux系统日常进程管理与监控

Linux系统日常进程管理与监控

时间:2023-02-01 15:34:23浏览次数:39  
标签:00 0.0 mysrs systemd 日常 监控 Linux 进程 root

1.进程是什么
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

在LINUX系统中进程ID用PID表示,范围从0-32768,其中PID=1的进程为init初始化进程。

2.进程的分类
进程可分为系统进程和用户进程。

1)系统进程:

可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。

2)用户进程:

通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。

用户进程分类3类:

交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。

批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。

守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。例如httpd进程,一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。

3.进程的查看
3.1使用ps命令查看进程(瞬间)
1)查看系统中所有进程,使用BSD操作系统格式

[root@mysrs ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 193940 7048 ? Ss 1月13 1:22 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 1月13 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 1月13 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 1月13 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 1月13 0:01 [migration/0]
root 8 0.0 0.0 0 0 ? S 1月13 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 1月13 1:39 [rcu_sched]
……
2)查看系统中所有进程,使用LINUX标准命令格式

[root@mysrs ~]# ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 48485 ep_pol ? 00:01:22 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 4 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 smpboo ? 00:00:00 ksoftirqd/0
1 S 0 7 2 0 -40 - - 0 smpboo ? 00:00:01 migration/0
1 S 0 8 2 0 80 0 - 0 rcu_gp ? 00:00:00 rcu_bh
1 S 0 9 2 0 80 0 - 0 rcu_gp ? 00:01:39 rcu_sched
1 S 0 10 2 0 60 -20 - 0 rescue ? 00:00:00 lru-add-drain
5 S 0 11 2 0 -40 - - 0 smpboo ? 00:00:12 watchdog/0
……
3)查看系统中所有进程

[root@mysrs ~]# ps -A
PID TTY TIME CMD
1 ? 00:01:22 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 ksoftirqd/0
7 ? 00:00:01 migration/0
8 ? 00:00:00 rcu_bh
9 ? 00:01:39 rcu_sched
10 ? 00:00:00 lru-add-drain
11 ? 00:00:12 watchdog/0
12 ? 00:00:09 watchdog/1
13 ? 00:00:00 migration/1
14 ? 00:00:00 ksoftirqd/1
16 ? 00:00:00 kworker/1:0H
……
4)详细显示每个进程信息

[root@mysrs ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 5117 5101 0 19:04 pts/0 00:00:00 -bash
root 5478 5117 0 19:35 pts/0 00:00:00 ps -f
[root@mysrs ~]#
5)ps选项的解释

a:显示一个终端的所有进程,除了会话引线 u:显示进程的归属用户及内存的使用情况 x:显示没有控制终端的进程 -l:长格式显示。显示更加详细的信息 -e:显示所有进程,和-A作用一致

-f:详细显示每个进程信息,经常和e组合使用,如ps -ef

6)ps命令输出各字段的含义

[root@mysrs ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
上面字段含义如下:

USER:该进程是由哪个用户产生的;PID:进程的ID号;%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;VSZ:该进程占用虚拟内存的大小,单位KB;RSS:该进程占用实际物理内存的大小,单位KB;TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。STAT:进程状态。常见的状态有:R:运行,S:睡眠,T:停止,s:包含子进程,+:位于后台START:该进程的启动时间;TIME:该进程占用CPU的运算时间,它不是系统时间;COMMAND:产生此进程的命令名。

3.2使用pstree命令查看进程树
[root@mysrs ~]# pstree
systemd─┬─ModemManager───2[{ModemManager}]
├─NetworkManager───2
[{NetworkManager}]
├─2[abrt-watch-log]
├─abrtd
├─accounts-daemon───2
[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3[{at-spi-bus-laun}]
├─at-spi2-registr───2
[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
……
它有两个选项:

-p:显示进程的PID-u:显示进程的所属用户

如下,加了参数后输出形式:

[root@mysrs ~]# pstree -pu
systemd(1)─┬─ModemManager(754)─┬─{ModemManager}(770)
│ └─{ModemManager}(775)
├─NetworkManager(873)─┬─{NetworkManager}(882)
│ └─{NetworkManager}(885)
├─abrt-watch-log(740)
├─abrt-watch-log(741)
├─abrtd(738)
├─accounts-daemon(787)─┬─{accounts-daemon}(797)
│ └─{accounts-daemon}(804)
├─alsactl(743)
├─at-spi-bus-laun(1855,gdm)─┬─dbus-daemon(1860)───{dbus-daemon}(1861)
│ ├─{at-spi-bus-laun}(1856)
│ ├─{at-spi-bus-laun}(1857)
│ └─{at-spi-bus-laun}(1859)
├─at-spi2-registr(1863,gdm)─┬─{at-spi2-registr}(1865)
│ └─{at-spi2-registr}(1866)
├─atd(1199)
……
3.3使用top命令查看系统的健康状态(实时)
top命令显示的是实时的系统信息,其常用选项如下:

-d 秒数:指定top命令每隔几秒更新,默认是3秒。-b:使用批处理模式输出,一般和“-n”选项合用。-n 次数:指定top命令执行的次数,一般和“-b”选项合用。

在top命令的交互式模式当中可以执行的命令:

?或h:显示交互模式的帮助P:以CPU使用率排序,默认就是此项M:以内存的使用率排序N:以PID排序q:退出top

top命令使用及含义解释:

[root@mysrs ~]# top
top - 20:02:15 up 17 days, 8:45, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 188 total, 2 running, 186 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 7.1 sy, 0.0 ni, 92.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3879984 total, 2980560 free, 459996 used, 439428 buff/cache
KiB Swap: 8257532 total, 8257532 free, 0 used. 3154196 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5765 root 20 0 162128 2260 1536 R 5.0 0.1 0:00.07 top
1 root 20 0 193940 7048 4208 S 0.0 0.2 1:22.40 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.42 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd/0 ……
1)top命令输出第一行的含义:

内容 说明
20:02:15 系统当前时间
up 17 days, 8:45 系统运行时间,本机已运行17天8小时45分钟
1 user 当前登录了一个用户
load average: 0.00, 0.01, 0.05 系统在之前1分钟、5分钟、15分钟的平均负载。
这个值和CPU核数有关,大于CPU核数,说明系统已超出负载。
2)top命令输出第二行的含义:

Tasks: 188 total, 2 running, 186 sleeping, 0 stopped, 0 zombie

表示当前总进程为188个,其中2个在运行,186个进程处理睡眠状态。

3)top命令输出第三行的含义:

内容 说明
%Cpu(s): 0.0 us 用户模式占的CPU百分比
7.1 sy 系统模式占的CPU百分比
0.0 ni 改变过优先级的用户进程占用的CPU百分比
92.9 id 空闲CPU的CPU百分比,目前表示很空闲
0.0 wa CPU等待硬盘写入时间,判断硬盘I/O
0.0 hi CPU处理硬中断占用的百分比
0.0 si CPU处理软中断占用的百分比
0.0 st 虚拟时间百分比
3.4使用lsof命令查看进程打开了哪些文件
lsof命令常用参数如下:

-p pid : 输出指定进程打开的文件;

-l : 输出中使用ID代替用户名;

-u userName : 输出指定用户打开的文件;

-c string : 输出COMMAND列中包含 string 的项;

-d fd : 输出包含指定描述符的项;

fileName : 输出打开文件fileName的所有项;

1)不加任何参数输出:

[root@mysrs ~]# lsof | more
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 246 64 /
systemd 1 root rtd DIR 253,0 246 64 /
systemd 1 root txt REG 253,0 1628608 67646570 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20064 33665971 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265576 34120301 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 33665967 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 33673545 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 33673538 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 33693897 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,0 19248 33665533 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,0 402384 33665953 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem REG 253,0 2156592 35882801 /usr/lib64/libc-2.17.so
systemd 1 root mem REG 253,0 142144 33665880 /usr/lib64/libpthread-2.17.so
……
上面各字段的含义如下表:

字段名称 功能含义
COMMAND 命令名称
PID 进程ID
TID 线程ID,如果为空代表列出的是进程
USER 用户ID号或登录名
FD 文件描述符
TYPE 与文件关联结点的类型
DEVICE 设备号
SIZE/OFF 文件大小/偏移量,以字节为单位
NODE 文件结点
NAME 文件挂载点和文件所在的系统
2)列出1号进程打开的文件

[root@mysrs ~]# lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 246 64 /
systemd 1 root rtd DIR 253,0 246 64 /
systemd 1 root txt REG 253,0 1628608 67646570 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20064 33665971 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265576 34120301 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 33665967 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 33673545 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 33673538 /usr/lib64/libcap-ng.so.0.0.0
……
3)lsof常用组合

显示进程打开的文件数
[root@mysrs ~]# lsof -c sshd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1183 root cwd DIR 253,0 246 64 /
sshd 1183 root rtd DIR 253,0 246 64 /
sshd 1183 root txt REG 253,0 852856 35937005 /usr/sbin/sshd
sshd 1183 root mem REG 253,0 61560 33665870 /usr/lib64/libnss_files-2.17.so
sshd 1183 root mem REG 253,0 68192 33673554 /usr/lib64/libbz2.so.1.0.6
……
统计sshd进程打开的文件数
[root@mysrs ~]# lsof -c sshd | wc -l
146
[root@mysrs ~]#
查看80端口和22端口对应的用户进程
[root@mysrs ~]# lsof -i :80
[root@mysrs ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1183 root 3u IPv4 21489 0t0 TCP *:ssh (LISTEN)
sshd 1183 root 4u IPv6 21491 0t0 TCP *:ssh (LISTEN)
sshd 5101 root 3u IPv4 1222049 0t0 TCP mysrs:ssh->123.183.158.11:ddns-v3 (ESTABLISHED)
[root@mysrs ~]# lsof -i tcp:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1183 root 3u IPv4 21489 0t0 TCP *:ssh (LISTEN)
sshd 1183 root 4u IPv6 21491 0t0 TCP *:ssh (LISTEN)
sshd 5101 root 3u IPv4 1222049 0t0 TCP mysrs:ssh->123.183.158.11:ddns-v3 (ESTABLISHED)
[root@mysrs ~]#
3.5使用pgrep命令查看进程PID信息
这个命令只输出进程PID号,如下:

[root@mysrs ~]# pgrep -f sshd
1183
5101
[root@mysrs ~]#
可以用前面的ps命令进行验证一下:

[root@mysrs ~]# ps -ef | grep sshd
root 1183 1 0 1月13 ? 00:00:00 /usr/sbin/sshd -D
root 5101 1183 0 19:04 ? 00:00:00 sshd: root@pts/0
可以看出两个命令的结果是一致的。

4.进程的终止
进程的终端通常用kill和killall命令。这里有一个信号类型的概念,可以用kill -l命令查看:

[root@mysrs ~]# kill -l

  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX
    从上面可以看出一共有64个信号类型,其中 :9) SIGKILL、2) SIGINT、15) SIGTERM分别对应数字9、2、15。

4.1 kill命令
它的命令格式为:

kill [信号类型] 进程PID

kill -9 进程PID:表示强制结束进程
kill -2 进程PID:表示结束进程,但是并不是强制性的
kill -15 进程PID:表示正常结束进程,默认类型就是15。
下面以我们安装的nginx服务为例,进行终止:

先用ps -ef | grep nginx或者pgrep -f nginx查看进程端口:

[root@mysrs ~]# ps -ef | grep nginx
root 6563 1 0 21:09 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 6564 6563 0 21:09 ? 00:00:00 nginx: worker process
nginx 6565 6563 0 21:09 ? 00:00:00 nginx: worker process
nginx 6566 6563 0 21:09 ? 00:00:00 nginx: worker process
nginx 6567 6563 0 21:09 ? 00:00:00 nginx: worker process
root 6587 5117 0 21:10 pts/0 00:00:00 grep --color=auto nginx
[root@mysrs ~]# pgrep -f nginx
6563
6564
6565
6566
6567
[root@mysrs ~]#
然后再用kill命令终止:

[root@mysrs ~]# kill -9 6563
终止后验证检查是否生效:

[root@mysrs ~]# pgrep -f nginx
6564
6565
6566
6567
[root@mysrs ~]#
4.2 killall命令
killall也是关闭进程的一个命令,与kill不同的是,killall后面跟的是进程的名字,而不是进程的PID,因而,killall可以终止一组进程。

killall [信号类型] 进程名称

如上面:

[root@mysrs ~]# killall -9 nginx
[root@mysrs ~]# ps -ef | grep nginx
root 6669 5117 0 21:16 pts/0 00:00:00 grep --color=auto nginx
[root@mysrs ~]#

标签:00,0.0,mysrs,systemd,日常,监控,Linux,进程,root
From: https://www.cnblogs.com/zhuanqian-yangmeng/p/17082960.html

相关文章

  • 基于EasyCVR视频技术的远程电力巡检监控综合管理设计方案
    一、方案背景电力行业和人民的生活、生产息息相关,一旦电力设施遭遇破坏或工作失误,就会造成大面积停电,其后果不堪设想,尤其是2003年美加“8.14”和2005年莫斯科“5.25”这两起......
  • linux load排查脚本
    Loadaverage的值来源在使用top命令检查系统负载的时候,可以看到Loadaverages字段,但是这个字段并不是表示CPU的繁忙程度,而是度量系统整体负载。Loadaverages采样是从/pr......
  • [Linux]fork与exec
    写这篇文章的原因是看到了一段与Linux下进程复制有关的代码,感觉很神奇,不甚理解,所以找了一些相关的资料想要弄明白Linux的fork、进程复制到底是怎么工作的,于是有了这篇......
  • Linux使用gtest测试so文件
    我使用的环境是Ubuntu22.04.1LTSgoogletest的下载链接:https://github.com/google/googletest/archive/refs/tags/v1.13.0.zip下载下来之后解压,cd到解压的文件夹里面......
  • Linux+libusb开发用户USB无驱通讯
    0.libusb的介绍:参考[1]1.环境:vmware_fedora_10(linux-2.6.x)2.获取源代码:http://sourceforge.net/projects/libusb/(最好选择libusb-1.0.9版本,下载次数最多,自是有它的......
  • Linux 安装 CentOS7
    1、linux下载http://mirrors.aliyun.com/centos/7/isos/x86_64/centos-7-isos-x86_64安装包下载_开源镜像站-阿里云(aliyun.com)选择绝大多数人下载的版本就可以了,使......
  • Linux逻辑卷
    Linux逻辑卷架构与相关命令1.为什么要设计逻辑卷(lvm)Linux操作系统中的存储/文件系统,一般都是基于磁盘分区策略来实现的。这过程类似聚会上切蛋糕,一块蛋糕切出来,再分给......
  • Java 创建一个快捷窗口 用于监控文件夹与打开文件夹
    样式代码结构全部代码importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjav......
  • linux
    linuxubantu中放大终端窗口的字体显示ctrl+shift+=缩小ctrl+-自动补全tab曾经使用的命令向上键另起一行ctrl+c常见命令命令作用ls查看当前文件......
  • content-type的理解和日常实践
    Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码。在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它......