Linux 下的进程管理

本文详细介绍了Linux系统下的进程管理,包括进程的概念、状态、查看方法如pstree、ps、pgrep、pidof和top,以及进程的优先级、前后台调用、信号处理和系统守护进程的管理,特别是systemctl的使用。

Table of Contents

 

一. 什么是进程

1. 进程(Process)

2. 进程状态

二. 进程查看

1.pstree查看进程树

2. ps

3. pgrep

4. pidof

5. top

三. 进程优先级

1. 按照资源占用划分进程类型

2. 优先级范围

3.NICE直

四. 进程前后台调用

1. 进程前后台调用相关命令

五. 信号

1. 可控信号类型

2. 信号指令

六.  系统守护进程

1.  守护进程的定义

2. 守护进程类型

3.systemctl用法之一

4.systemctl用法之二


 

一. 什么是进程

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 内部参数

Pcpu百分比排序
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任务
%cpucpu占用百分比
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设定系统运行级别为图形网络模式

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值