一.什么是进程
进程就是系统未完成并且正在进行的工作/正在运行中的程序
二.进程的状态
1.R:running,程序正在运行中
2.S:sleep,目前处于睡眠状态,相当与系统的一个优化过程,可以被唤醒
3.D:不可被唤醒的睡眠状态,通常进程在等待I/O的情况
4.Z:Zomble,僵尸状态,程序已经终止但却无法被移除至内存外
5.T:停止状态,可能是在工作控制(背景暂停)或除错状态
三.查看进程
1.图形查看方式
gnome-system-monitor
2.进程查看命令
(1) ps ##当前环境下运行的进程
ps -a ##在当前程序运行的进程,不包含环境信息
[root@localhost Desktop]# ps -a
PID TTY TIME CMD
2149 pts/0 00:00:00 ps
ps -A ##所有进程
[root@localhost Desktop]# ps -A
PID TTY TIME CMD
1 ? 00:00:01 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:00 kworker/0:0
5 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 kworker/u2:0
7 ? 00:00:00 migration/0
8 ? 00:00:00 rcu_bh
9 ? 00:00:00 rcuob/0
10 ? 00:00:00 rcu_sched
11 ? 00:00:00 rcuos/0
12 ? 00:00:00 watchdog/0
13 ? 00:00:00 khelper
ps -u ##显示进程用户信息
root 用户
[root@localhost Desktop]# ps -u root用户
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 589 1.5 1.6 183012 31076 tty1 Ss+ 05:42 0:04 /usr/bin/Xorg :
root 2112 0.0 0.1 116260 2836 pts/0 Ss 05:44 0:00 /bin/bash
root 2315 0.0 0.0 123356 1324 pts/0 R+ 05:47 0:00 ps -u
student 用户
[root@localhost Desktop]# su - student
Last login: Sun Mar 31 05:48:12 EDT 2019 on pts/0
[student@localhost ~]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
student 2497 0.3 0.1 116144 2752 pts/0 S 05:53 0:00 -bash
student 2532 0.0 0.0 123356 1312 pts/0 R+ 05:53 0:00 ps -u
ps a ##在当前环境中运行的信息
[root@localhost Desktop]# ps a ##超级用户下查看
PID TTY STAT TIME COMMAND
589 tty1 Ss+ 0:15 /usr/bin/Xorg :0 -background none -verbose -auth /run
2112 pts/0 Ss 0:00 /bin/bash
2577 pts/0 R+ 0:00 ps a
[root@localhost Desktop]# su - student ##普通用户下查看
Last login: Sun Mar 31 05:53:13 EDT 2019 on pts/0
[student@localhost ~]$ ps a
PID TTY STAT TIME COMMAND
589 tty1 Ss+ 0:16 /usr/bin/Xorg :0 -background none -verbose -auth /run
2112 pts/0 Ss 0:00 /bin/bash
2587 pts/0 S 0:00 su - student
2588 pts/0 S 0:00 -bash
2624 pts/0 R+ 0:00 ps a
注意:当前环境的运行信息与用户无关,可以看出在超级用户下和普通用户下当前环境的运行信息完全相同
ps x ##列出系统中所有运行包含tty输出设备;没有输出设备的则不显示
[student@localhost ~]$ ps x
PID TTY STAT TIME COMMAND
2588 pts/0 S 0:00 -bash
2744 pts/0 R+ 0:00 ps x
ps f ##显示进程的父子关系/从属关系(当关闭父进程仍运行的子程进程则由系统初始程序管理。这些子进程称为孤儿进程)
[root@localhost Desktop]# ps f
PID TTY STAT TIME COMMAND
2112 pts/0 Ss 0:00 /bin/bash
2794 pts/0 R+ 0:00 \_ ps f ##bash的子进程
589 tty1 Ss+ 0:23 /usr/bin/Xorg :0 -background none -verbose -auth /run
ps e ##显示进程呢个的详细信息
(2)ps常用组合:
ps aux ##显示系统中所有进程并显示进程的用户
[root@localhost Desktop]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 52328 6488 ? Ss 05:42 0:02 /usr/lib/system
root 2 0.0 0.0 0 0 ? S 05:42 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 05:42 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 05:42 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 05:42 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 05:42 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 05:42 0:00 [rcuob/0]
root 10 0.0 0.0 0 0 ? R 05:42 0:00 [rcu_sched]
root 11 0.0 0.0 0 0 ? S 05:42 0:00 [rcuos/0]
root 12 0.0 0.0 0 0 ? S 05:42 0:00 [watchdog/0]
root 13 0.0 0.0 0 0 ? S< 05:42 0:00 [khelper]
root 14 0.0 0.0 0 0 ? S 05:42 0:00 [kdevtmpfs]
root 15 0.0 0.0 0 0 ? S< 05:42 0:00 [netns]
root 16 0.0 0.0 0 0 ? S< 05:42 0:00 [writeback]
root 17 0.0 0.0 0 0 ? S< 05:42 0:00 [kintegrityd]
root 18 0.0 0.0 0 0 ? S< 05:42 0:00 [bioset]
root 19 0.0 0.0 0 0 ? S< 05:42 0:00 [kblockd]
root 20 0.0 0.0 0 0 ? S 05:42 0:00 [khubd]
ps ef ##显示进程详细信息并显示进程父子关系
[root@localhost Desktop]# ps ef
PID TTY STAT TIME COMMAND
2112 pts/0 Ss 0:00 /bin/bash XDG_VTNR=1 SSH_AGENT_PID=1662 XDG_SESSION_I
2868 pts/0 R+ 0:00 \_ ps ef XDG_VTNR=1 XDG_SESSION_ID=1 SSH_AGENT_PID=1
589 tty1 Rs+ 0:28 /usr/bin/Xorg :0 -background none -verbose -auth /run
ps ax ##显示当前系统所有进程
pstree ##显示大概前系统进程树
(3)显示进程指定信息
ps -o xxx ##显示进程的指定信息
ps comm ##进程名称
[root@localhost Desktop]# ps -o comm
COMMAND
bash
ps
ps user ##进程所有人
[root@localhost Desktop]# ps -o user
USER
root
root
ps group ##进程所有组
[root@localhost Desktop]# ps -o group
GROUP
root
root
ps %cpu ##进程cpu使用率
[root@localhost Desktop]# ps -o %cpu
%CPU
0.0
0.0
ps %mem ##进程内存使用率
[root@localhost Desktop]# ps -o %mem
%MEM
0.1
0.0
ps pid ##进程id
[root@localhost Desktop]# ps -o pid
PID
2112
2991
ps nice ##进程优先级
[root@localhost Desktop]# ps -o nice
NI
0
0
ps -o ##可以同时显示多个进程
[root@localhost Desktop]# ps -o pid,%cpu,comm
PID %CPU COMMAND
2112 0.0 bash
3031 0.0 ps
(4)进程的排序
ps ax --sort=+%cpu |-%cpu |+%mem |-%men<将进程cpu由小至大排列|由大至小排列|将进程内存使用率由小至大排列|由大至小排列>
eg:查看所有进程ID并显示内存使用量最高的前5个
[root@localhost Desktop]# ps ax -o pid --sort=-%mem|head -n 6|tail -n 5
1770
589
2402
1837
1705
(5)stat中显示的信息
S 进程状态
s 顶级进程
l 内存锁定空间
N 优先级低
<优先级高
+前台运行
ps ax -o stat 查看进程的状态
3.进程优先级
(1)进程优先级范围
-20~19 ##数字越小 优先级越高。
(2)优先级的查看
ps ax -o nice 查看进程的优先级
```
PID NI COMMAND
1 0 systemd
2 0 kthreadd
3 0 ksoftirqd/0
5 -20 kworker/0:0H
7 - migration/0
8 0 rcu_bh
9 0 rcuob/0
(3)指定某个优先级开启的进程
nice -n 优先级数字 进程名 ## 在打开这个进程的同时 指定其优先级
eg:nice -n 5 vim ##打开vim,并指定其优先级为-5
renice -n 优先级数字 进程pid数字 ##已经存在的进程的优先级被修改。
eg:renice -n -5 9 ##改变9的进程优先级为-5
[root@localhost Desktop]# renice -n -5 9
9 (process ID) old priority 0, new priority -5
4.环境中进程的前后台调用
jobs ##查看被打入环境后台的进程
crtl +z ##把占用终端的进程打入后台
fg jobsnum ##把后台进程调回前台 "jobsnum"后台进程排列数
bg jobsnum ##把后台暂停的进程运行
comm & ##让命令直接在后台运行 “&”后台运行符号
(进程名称eg:firefox)
1806
[1]+ firefox &
[kiosk@foundation6 ~]$ firefox &
[2] 13822
[kiosk@foundation6 ~]$ fg 1
firefox
^Z
[1]+ Stopped firefox
[2] Done firefox
5.进程信号
(1)常用的信号等级
1 ##进程重新加载配置(在不关闭进程的情况下)
2 ##删除进程在内存中的数据
3 ##删除鼠标在进程中的数据
9 ##强行结束单个进程(不能被阻塞,强制关闭针对僵尸进程)
15 ##正常关闭进程 (可能会被阻塞,出现进程不会被关闭现象)
18 ##运行暂停的进程
19 ##暂停某个进程(不能被阻塞,关闭所有进程)
20 ##把进程打入后台(把进程打入后台,可能会出现阻塞,会有选择性关闭进程)
(2)信号命令的调用
man 7 signal ##查看信号详细信息
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
Manual page signal(7) line 117 (press h for help or q to quit
kill - 信号等级 进程pid ##给进程发送信号
killall -信号等级 进程名字(vim)
pkill -u student -信号等级 ##在student用户下给进程发送信号
6.进程的动态监控
top ##可以看到所有进程
执行top命令显示的界面为
按1 ##显示cpu每个核的负载
按s ##调整刷新频率(输入需要调整的频率,回车,则调整成功)
按c ##cpu负载排序
按m ##内存使用量排序
按h ##查看帮助
按u ##查看指定用户的进程
按k ##对指定进程发起信号
按q ##退出