Table of Contents
一. 什么是进程
1. 进程(Process)
进程是静态的文件。
进程是运行中的程序的一个副本。
进程存在生命周期(准备期、运行期、终止期)。
2. 进程状态
| 状态 | 定义 |
| R(TASK_RUNNING) | 可执行状态(RUNNING、READY) |
| S(TASK_INTERRUPTIBLE) | 可唤醒睡眠状态 |
| D(TASK_UNINTERRUPTIBLE) | 不可唤醒睡眠状态 |
| T(TASK_STOP[PED) | 暂停状态 |
| Z(EXIT_ZOMBLE) | 僵死态 |
二. 进程查看
1.pstree查看进程树
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daemon
├─boltd───2*[{boltd}]
├─colord───2*[{colord}]
├─crond
├─cupsd
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─fwupd───4*[{fwupd}]
├─gdm─┬─gdm-session-wor─┬─gdm-x-session─┬─Xorg───3*[{Xorg}]
│ │ │ ├─gnome-session-b─┬─gnome-shell+++
│ │ │ │ ├─gsd-a11y-se+
│ │ │ │ ├─gsd-clipboa+
│ │ │ │ ├─gsd-color──+++
│ │ │ │ ├─gsd-datetim+
│ │ │ │ ├─gsd-houseke+
│ │ │ │ ├─gsd-keyboar+
│ │ │ │ ├─gsd-media-k+
│ │ │ │ ├─gsd-mouse──+++
│ │ │ │ ├─gsd-power──+++
│ │ │ │ ├─gsd-print-n+
│ │ │ │ ├─gsd-rfkill─+++
│ │ │ │ ├─gsd-screens+
│ │ │ │ ├─gsd-sharing+++
│ │ │ │ ├─gsd-smartca+
│ │ │ │ ├─gsd-sound──+++
│ │ │ │ ├─gsd-wacom──+++
│ │ │ │ ├─gsd-xsettin+
│ │ │ │ └─3*[{gnome-s+
│ │ │ └─2*[{gdm-x-session}]
│ │ └─2*[{gdm-session-wor}]
│ ├─gdm-session-wor─┬─gdm-x-session─┬─Xorg───3*[{Xorg}]
│ │ │ ├─gnome-session-b─┬─gnome-shell+++
│ │ │ │ ├─gnome-softw+
│ │ │ │ ├─gsd-a11y-se+
│ │ │ │ ├─gsd-clipboa+
│ │ │ │ ├─gsd-color──+++
│ │ │ │ ├─gsd-datetim+
│ │ │ │ ├─gsd-disk-ut+
│ │ │ │ ├─gsd-houseke+
│ │ │ │ ├─gsd-keyboar+
│ │ │ │ ├─gsd-media-k+
│ │ │ │ ├─gsd-mouse──+++
│ │ │ │ ├─gsd-power──+++
│ │ │ │ ├─gsd-print-n+
│ │ │ │ ├─gsd-rfkill─+++
│ │ │ │ ├─gsd-screens+
│ │ │ │ ├─gsd-sharing+++
│ │ │ │ ├─gsd-smartca+
│ │ │ │ ├─gsd-sound──+++
│ │ │ │ ├─gsd-wacom──+++
│ │ │ │ ├─gsd-xsettin+
│ │ │ │ ├─tracker-min+
│ │ │ │ ├─tracker-min+
│ │ │ │ └─3*[{gnome-s+
│ │ │ └─2*[{gdm-x-session}]
│ │ └─2*[{gdm-session-wor}]
│ └─2*[{gdm}]
├─gnome-keyring-d───3*[{gnome-keyring-d}]
├─gsd-printer───2*[{gsd-printer}]
├─gssproxy───5*[{gssproxy}]
├─2*[ibus-x11───2*[{ibus-x11}]]
├─irqbalance───{irqbalance}
├─ksmtuned───sleep
├─libvirtd───16*[{libvirtd}]
├─lsmd
├─packagekitd───2*[{packagekitd}]
├─polkitd───9*[{polkitd}]
├─qemu-ga
├─rhsmcertd
├─rhsmd
├─rngd───2*[{rngd}]
├─rpcbind
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─2*[spice-vdagent───{spice-vdagent}]
├─spice-vdagentd
├─sshd
├─sssd─┬─sssd_be
│ └─sssd_nss
├─sssd_kcm
├─systemd─┬─(sd-pam)
│ ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ │ └─3*[{at-spi-bus-laun}]
│ ├─at-spi2-registr───2*[{at-spi2-registr}]
│ ├─dbus-daemon───{dbus-daemon}
│ ├─dconf-service───2*[{dconf-service}]
│ ├─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}]
│ ├─gnome-shell-cal───5*[{gnome-shell-cal}]
│ ├─gnome-terminal-─┬─bash───pstree
│ │ └─4*[{gnome-terminal-}]
│ ├─goa-daemon───3*[{goa-daemon}]
│ ├─goa-identity-se───3*[{goa-identity-se}]
│ ├─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───2*[{gvfsd}]
│ ├─gvfsd-fuse───5*[{gvfsd-fuse}]
│ ├─ibus-portal───2*[{ibus-portal}]
│ ├─pulseaudio───2*[{pulseaudio}]
│ ├─tracker-store───4*[{tracker-store}]
│ └─xdg-permission-───2*[{xdg-permission-}]
├─systemd─┬─(sd-pam)
│ ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ │ └─3*[{at-spi-bus-laun}]
│ ├─at-spi2-registr───2*[{at-spi2-registr}]
│ ├─dbus-daemon───{dbus-daemon}
│ ├─ibus-portal───2*[{ibus-portal}]
│ ├─pulseaudio───2*[{pulseaudio}]
│ └─xdg-permission-───2*[{xdg-permission-}]
├─systemd-journal
├─systemd-logind
├─systemd-machine
├─systemd-udevd
├─tuned───3*[{tuned}]
├─udisksd───4*[{udisksd}]
├─upowerd───2*[{upowerd}]
└─wpa_supplicant
[root@localhost ~]#
2. ps
显示当前命令执行时进程状态
a 显示与终端相关进程(BSD)
x 显示所有与终端无关进程(BSD)
u 以用户为归类来显示进程状态信息(BSD)
f 层级结构显示进程信息
o 指定查看选项,pid,comm,nice,pri,pcpu,stat,ppid
-e 显示所有进程(uinx)
-f 显示完整格式信息(unix)
-H 层级结构显示进程的相关信息
-o 指定查看选项,pid,comm,nice,%cpu,%mem,nice
ps命令显示信息
| 字段 | 解释 |
| USER | 用户名称 |
| PID | 进程id |
| %CPU | cpu用量百分比 |
| %MEM | 内存用量百分比 |
| VSZ | 占用虚拟内存大小 |
| RSS | 常住内存集大小 |
| TTY | 字符终端 |
| STAT | 进程状态 |
| START | 运行时间 |
| TIME | 占用cpu时间 |
| COMMAND | 进程名称 |
例如:


3. pgrep
显示指定信息进程
-u uid 显示指定用户进程
-U name 显示指定用户进程
-t tty 显示指定终端进程
-l 显示进程名称
-a 显示完整格式进程名
-P pid 显示指定进程的子进程
例如:


4. pidof
根据进程名称获取pid
例如:

5. top
top 内部参数
| P | cpu百分比排序 |
| M | 内存百分比 |
| T | 累计占用cpu时间 |
| I | 开启/关闭uptime信息 |
| t | 开启/关闭task&cpu信息 |
| s | 调整刷新频率 |
| k | 终止进程 |
| u | 查看指定用户进程 |
top命令参数
-d 指定刷新间隔
-b 以批次方式显示
-n 显示批次数量
top 显示进程信息详解
| top | 系统当前时间 |
| up | 系统运行时长 |
| user | 登陆当前系统的用户数量 |
| load average | 平均负载1分钟 5分钟 15分钟的队列长度(uptime) |
| task | 任务 |
| %cpu | cpu占用百分比 |
| mem | 物理内存 |
| swap | 交换分区占用 |


三. 进程优先级
1. 按照资源占用划分进程类型
| 资源使用量 | 进程类型 |
| cpu使用密集 | CPU-Bound |
| I/O使用密集 | I/O-Bound |
2. 优先级范围
对Linux而言优先级被划分成固定个数(0-139)
1-99为实时优先级,数字越大优先级越高,不用手动处理系统自用。
100-139为静态优先级,数字越小优先级越高。
3.NICE直
NICE直:-20~19对应静态优先级
普通用户只可以调低优先级,超级用户任意调整
关于优先级的命令
ps ax -o nice,pid,comm
nice -n 优先级 程序
renice-n 优先级 程序pid
例如:



四. 进程前后台调用
1. 进程前后台调用相关命令
| 指令 | 含义 |
| jobs | 查看后台任务 |
| ctrl+z | 将前台运行进程打入后台 |
| bg | 激活后台进程 |
| fg | 调回进程 |
| & | 运行在后台 |




五. 信号
1. 可控信号类型
| 可控信号 | 含义 |
| 1 | 刷新 |
| 2 | 中断键盘输入 |
| 3 | 退出键盘 |
| 9 | 强制结束 |
| 15 | 正常关闭 |
| 18 | 激活进程 |
| 19 | 强制暂停 |
| 20 | 正常暂停 |
2. 信号指令
kill 信号 pid
pkill 信号 进程名称
例如:

六. 系统守护进程
1. 守护进程的定义
守护进程就是通常讲Daemon进程,是linux后台执行的服务进程,是独立于控制终端,周期性地执行某种任务或等待处理某些发生事件,不会随终端关闭而停止,直到接受停止信息才会结束。
2. 守护进程类型
| 守护进程类型 | 使用系统及特点 |
| sysv init | 经典的守护进程类型延用到rhel6 |
| upstart | 做到并行启动rhel6中应用 |
| systemd | 独立完成启动,rhel7中使用 |
3.systemctl用法之一
| 指令 | 用途 |
| systemctl list-unit-files | 查看服务开机运行情况 |
| systemctl list-units | 查看服务当前运行情况 |
| systemctl list-dependencies | 查看服务依赖性 |
| systemctl status service | 查看服务状态 |
| systemctl start service | 开启服务 |
| systemctl stop service | 关闭服务 |
| systemctl reload service | 重新加载服务配置 |
例如:

4.systemctl用法之二
| 指令 | 用途 |
| systemctl restart service | 重新启动服务 |
| systemctl enable service | 设定服务开机启动 |
| systemctl enable-now service | 设定服务开机启动并开启服务 |
| systemctl disable service | 设定服务开机关闭 |
| systemctl set-default multi-user.target | 设定系统运行级别为无图形网络模式 |
| systemctl set-default graphical.target | 设定系统运行级别为图形网络模式 |
本文详细介绍了Linux系统下的进程管理,包括进程的概念、状态、查看方法如pstree、ps、pgrep、pidof和top,以及进程的优先级、前后台调用、信号处理和系统守护进程的管理,特别是systemctl的使用。

被折叠的 条评论
为什么被折叠?



