用户与进程管理
进程管理
- 什么是程序:用计算机语言编写的命令序列集合,用来实现特定的目标或解决特定的问题,程序占用磁盘空间,程序是静态并且是永久的
- 什么是进程:正在运行中的程序叫进程,进程有自己的独立内存空间,每启动一个进程,系统就会为它分配内存空间并分配一个PID号, 每个进程都会对应一个父进程,而父进程可以复制多个子进程,每种进程都有两种方式存在,前台与后台,一般进程都是以后台方式运行
- 什么是线程:线程也被称为轻量级进程,被包含在进程中,是进程的一个子集,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务,每个线程都是独立的,线程之间共享进程的内存空间,在多线程的程序中,由于线程很"轻”,故线程的切换非常迅速且开销小(在同进程中)
查看进程树
-
pstree以树状结构显示进程,包括进程之间的关系
-
命令格式:pstree [选项...] [参数...]
-
常用选项:
- -p #显示进程PID
- -a #显示完成的命令行
- -u #列出每个进程所属的账号名称
[root@localhost ~]# pstree systemd─┬─ModemManager───2*[{ModemManager}] [root@localhost ~]# pstree -p systemd(1)─┬─ModemManager(782)─┬─{ModemManager}(805) [root@localhost ~]# pstree -pa visitor sshd,19156 └─bash,19160 [root@localhost ~]# [root@localhost ~]# pstree -u visitor sshd───bash [root@localhost ~]# -
ps aux:unix格式静态查看系统进程,查看所有进程信息
- a #显示当前终端所有进程
- u #以用户格式输出
- x #当前用户在所有终端下的进程
-
ps -ef liunx格式静态查看系统进程,查看系统所有进程信息
- -e #显示当前终端所有进程
- -l #以长格式输出信息
- -f #显示最完成的进程信息
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 193700 6852 ? Ss 8月16 0:04 /usr/lib/systemd/syst #解释 进程属于哪个用户 进程pid 进程占用CPU资源百分比 进程占用物理内存百分比 进程使用的虚拟内存(KB) 进程占用的固定内存量(KB) 进程在那个终端运行,如果内核能直接调用则显示?,tty1-tty6表示本机终端登录的用户进程,pts/0-255则表示远程登录用户的进程 进程状态:R运行,s休眠,s包含子进程,T停止,Z僵尸,+后台进程 进程启动时间 占用cpu运算时间 产生进程的命令 #liunx多一个ppid的字段,ppid是父进程的ID号
##### top动态查看系统健康状态
- top命令动态查看系统性能及状态信息
- 命令格式:top [选项...]
- 常用选项:-d #指定刷新秒数,默认为3秒刷新一次
- 交互界面显示指令
- 键盘上下键翻行
- h #获取交互模式帮助
- P #按照cpu使用资源排序
- M #按照内存使用资源排序
- q #退出
```bash
[root@localhost ~]# top
top - 01:11:42 #当前系统时间
up 9:22, #系统运行时间,该系统已经运行9小时22分钟
3 users, #当前系统登录用户数量
load average: 0.00, 0.01, 0.05 #cpu1分钟,5分钟,15分钟之前的平均负载量,根据CPU核数判断系统CPU负载量,1核CPU若高于1代表负载过高,2核CPU若高于2代表负载过高一次类推
Tasks: 214 total, #当前系统中的进程总数量
1 running,#正在运行的进程数量
213 sleeping, #正在休眠进程数总量
0 stopped, #正在停止的进程
0 zombie#僵尸进程数量,僵尸进程是当子进程比父进程先结束,而父进程有没有回收子进程占用的资源,此时子进程会成为一个僵尸进程
%Cpu(s): 0.0 us, #用户占用的cpu百分比
0.1 sy,#系统占用的cpu百分比
0.0 ni,#改变过优先级的用户占用的cpu百分比
99.9 id,#空闲的cpu百分
0.0 wa,#等待输入/输出的进程的占用cpu百分比
0.0 hi,#硬中断请求服务占用的CPU百分比
0.0 si, #软中断请求服务占用的cpu的百分比
0.0 st#虚拟时间百分比,当有虚拟机时,虚拟CPU等待实际CPU的事件百分比
KiB Mem : 1865308 total, #物理内存总量,单位kb
206380 free,#空闲内存总量,单位kb
881692 used,#已使用的内存总量,单位kb
777236 buff/cache#块设备与普通文件占用的缓存数量
KiB Swap: 2097148 total,#交换空间总量,单位kb
2097148 free, #空闲交换空间总量,单位kb
0 used. #已使用的交换空间总量,单位kb
739012 avail Mem #可用于进程下一次分配的物理内存数量
PID #进程pid号
USER #进程所有者用户名
PR#进程优先级执行顺序,越小有限被执行
NI#负值表示高级优先级,正值表示低优先级,越小越优先
VIRT #进程使用的虚拟内存总量单位kb
RES#进程使用的、未被换出的物理内存大小,单位kb
SHR#共享内存大小,单位kb
S #进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU#进程使用的cpu百分比
%MEM#进程使用的物理内存百分比
TIME+#进程使用的cpu时间总计,单位1/100秒
COMMAND #命令名/命令行
#查找僵尸进程及父进程
[root@localhost ~]# ps -A -o stat,ppid,pid,cmd | grep "^Zz"
命令解释:-A 列出所有进程
-o 自定义输出字段,我们设定显示字段为stat(状态),ppid(父进程),pid(进程id),cmd(这四个参数),因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ的进程
#杀死进程
kill -9 父进程号
检索进程
-
pgrep通过匹配程序名,找到匹配的进程
-
命令格式:pgrep [选项...] [参数...]
-
常用选项:
- -l #输出进程名与pid
- -U #检索指定用户进程
- -t #检索指定终端进程
- -t #精确匹配完成进程名
#查看ssh服务的进程 [root@localhost ~]# pgrep ssh 1213 20218 21001 21234 #查看服务的完整进程以及pid [root@localhost ~]# pgrep -l ssh 1213 sshd 20218 ssh-agent 21001 sshd 21234 sshd #指定用户查询进程 [root@localhost ~]# pgrep -U visitor #查看系统所有终端用户 [root@localhost ~]# who root pts/1 2022-08-18 01:04 (192.168.0.1) root pts/2 2022-08-19 00:15 (192.168.0.1) root :0 2022-08-18 01:04 (:0) #过滤用户在指定中断开启的进程信息 [root@localhost ~]# pgrep -lu root -t pts/2 21238 bash
进程的前后台调度
-
& #将进程放入后台运行
-
jobs -l #查看后台进程列表
-
fg 进程编号 #将后台进程恢复至前台运行
-
Ctrl+z #挂起当前程序进程并放入后台
-
bg 进程编号 #激活后台
[root@localhost ~]# sleep 5m & [1] 21892 [root@localhost ~]# jobs -l [1]+ 21892 运行中 sleep 5m & [root@localhost ~]# [root@localhost ~]# fg 1 sleep 5m [root@localhost ~]# fg 1 sleep 5m ^Z [1]+ 已停止 sleep 5m [root@localhost ~]# jobs -l [1]+ 21892 停止 sleep 5m [root@localhost ~]# bg 1 [1]+ sleep 5m & [root@localhost ~]# jobs -l [1]+ 21892 运行中 sleep 5m & [root@localhost ~]#
杀死进程
-
杀死进程的方式
-
Ctrl+c结束当前进程
-
kill [选项..] pid
- 常用选项 -l #列出可用进程信号
- 常用信号 -1 重启进程,-9强制杀死进程,-15正常杀死进程(默认)
-
killall -9 进程名 #强制杀死进程
-
killall -9 -u 用户名 #强制杀死该用户所有进程
-
pkill -9 进程名 #强制杀死进程
- 常用选项:-t 终端号 #踢除终端用户
[root@localhost ~]# sleep 5m & [1] 22021 [root@localhost ~]# sleep 4m & [2] 22022 [root@localhost ~]# sleep 7m & [3] 22031 [root@localhost ~]# jobs -l [1] 22021 运行中 sleep 5m & [2]- 22022 运行中 sleep 4m & [3]+ 22031 运行中 sleep 7m & [root@localhost ~]# kill 22021 [root@localhost ~]# jobs -l [1] 22021 已终止 sleep 5m [2]- 22022 运行中 sleep 4m & [3]+ 22031 运行中 sleep 7m & [root@localhost ~]# [root@localhost ~]# kill -9 22022 [root@localhost ~]# jobs -l [2]- 22022 已杀死 sleep 4m [3]+ 22031 运行中 sleep 7m & [root@localhost ~]# [root@localhost ~]# killall sleep [3] 已终止 sleep 7m [4]- 已终止 sleep 7m [5]+ 已终止 sleep 6m [root@localhost ~]# jobs -l [root@localhost ~]# [root@localhost ~]# killall -9 sleep [1]- 已杀死 sleep 6m [2]+ 已杀死 sleep 7m [root@localhost ~]# jobs -l [root@localhost ~]# [root@localhost ~]# killall -9 -u visitor [root@localhost ~]# who root pts/1 2022-08-18 01:04 (192.168.0.1) root pts/2 2022-08-19 00:15 (192.168.0.1) root :0 2022-08-18 01:04 (:0) [root@localhost ~]# [root@localhost ~]# pkill sleep [1]- 已终止 sleep 6m [2]+ 已终止 sleep 7m [root@localhost ~]# [root@localhost ~]# who visitor pts/0 2022-08-19 01:37 (192.168.0.1) root pts/1 2022-08-18 01:04 (192.168.0.1) root pts/2 2022-08-19 00:15 (192.168.0.1) root :0 2022-08-18 01:04 (:0) [root@localhost ~]# pkill -9 -t pts/0 [root@localhost ~]# who root pts/1 2022-08-18 01:04 (192.168.0.1) root pts/2 2022-08-19 00:15 (192.168.0.1) root :0 2022-08-18 01:04 (:0) [root@localhost ~]#
用户登录分析
-
users who w #查看已登录的用户信息(详细度不同)
-
last #显示登录成功的用户信息
-
lastb #显示登录失败的用户信息
[root@localhost ~]# users root root root [root@localhost ~]# [root@localhost ~]# who root pts/1 2022-08-18 01:04 (192.168.0.1) root pts/2 2022-08-19 00:15 (192.168.0.1) root :0 2022-08-18 01:04 (:0) [root@localhost ~]# [root@localhost ~]# w 01:44:12 up 11:04, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 192.168.0.1 四01 24:25m 0.03s 0.03s -bash root pts/2 192.168.0.1 00:15 4.00s 0.60s 0.05s w root :0 :0 四01 ?xdm? 3:30 0.97s /usr/libexec/gnome-session-binary --ses [root@localhost ~]# [root@localhost ~]# last visitor pts/0 192.168.0.1 Fri Aug 19 01:37 - 01:39 (00:02) visitor pts/0 192.168.0.1 Fri Aug 19 01:36 - 01:36 (00:00) root pts/2 192.168.0.1 Fri Aug 19 00:15 still logged in root pts/1 192.168.0.1 Thu Aug 18 01:04 still logged in root :0 :0 Thu Aug 18 01:04 still logged in visitor pts/2 192.168.0.1 Wed Aug 17 01:18 - 01:49 (00:31) root pts/1 192.168.0.1 Wed Aug 17 00:52 - 01:49 (00:57) root pts/0 192.168.0.1 Tue Aug 16 22:35 - 00:23 (2+01:47) root pts/0 192.168.0.1 Tue Aug 16 09:53 - 21:29 (11:35) reboot system boot 3.10.0-862.el7.x Tue Aug 16 09:52 - 01:51 (2+15:59) root pts/1 192.168.0.1 Tue Aug 16 00:08 - crash (09:43) root pts/0 192.168.0.1 Mon Aug 15 11:27 - crash (22:24) reboot system boot 3.10.0-862.el7.x Mon Aug 15 11:07 - 01:51 (3+14:43) test2 pts/1 192.168.0.1 Mon Aug 15 00:01 - 00:01 (00:00) test2 pts/1 192.168.0.1 Mon Aug 15 00:00 - 00:01 (00:00) test2 pts/1 192.168.0.1 Sun Aug 14 23:56 - 00:00 (00:03) root pts/0 192.168.0.1 Sun Aug 14 23:45 - down (03:22) visitor pts/0 192.168.0.1 Fri Aug 12 01:55 - 03:15 (01:20) root pts/1 192.168.0.1 Thu Aug 11 23:59 - 03:15 (03:16) root pts/0 192.168.0.1 Wed Aug 10 00:20 - 01:44 (2+01:23) root pts/3 192.168.0.1 Tue Aug 9 01:21 - 00:11 (2+22:49) root pts/1 192.168.0.1 Mon Aug 8 02:22 - 22:54 (-325+-3:-28 root pts/0 192.168.0.1 Mon Aug 8 01:18 - 22:07 (-325+-3:-11 root pts/2 192.168.0.1 Sat Aug 6 00:35 - 01:23 (3+00:48) root pts/1 192.168.0.1 Fri Aug 5 02:00 - 02:33 (1+00:32) root pts/0 192.168.0.1 Thu Aug 4 21:37 - 02:25 (1+04:48) root pts/2 192.168.0.1 Thu Aug 4 19:10 - 23:35 (04:25) root pts/1 192.168.0.1 Thu Aug 4 00:02 - 23:02 (23:00) root :0 :0 Wed Aug 3 10:17 - down (11+16:50) root pts/0 192.168.0.1 Wed Aug 3 10:11 - 19:31 (1+09:20) reboot system boot 3.10.0-862.el7.x Wed Aug 3 10:08 - 03:07 (11+16:58) wtmp begins Wed Aug 3 10:08:38 2022 [root@localhost ~]# lastb visitor ssh:notty 192.168.0.1 Wed Aug 17 01:18 - 01:18 (00:00) visitor ssh:notty 192.168.0.1 Fri Aug 12 01:54 - 01:54 (00:00) visitor ssh:notty 192.168.0.1 Fri Aug 12 01:54 - 01:54 (00:00) btmp begins Fri Aug 12 01:54:41 2022 [root@localhost ~]#

浙公网安备 33010602011771号