Linux系统–进程管理process:
man ls ----(会显示ls手册,关于ls说明 类似于help)
一、静态查看进程ps(静态:一瞬间的显示 不实时)
静态查看进程ps:
[root@localhost tmp]# ps aux |head -2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128236 6940 ? Ss 10:50 0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
分析: USER:运行进程的用户
PID :进程ID
%CPU:CPU占用率
%MEM:内存占用率
VSZ :占用虚拟内存(硬盘上的一部分空间)
RSS :占用实际内存(占了多少字节)
TTY :进程运行的终端(?:没有打开终端 系统没有终端)
STAT:进程状态 R :运行 S:可中断的睡眠状态 T:停止的进程 Z:僵尸进程 (退出状态)X:死掉的进程 D:不可中断的睡眠状态 X:退出状态,进程即将被销毁(死掉的进程)
START:进程的启动时间
TIME:进程占用CPU的总时间 分钟:秒(0:01—1秒)
COMMAND(命令):进程文件,进程名,路径
.
四大资源:MEM内存 :起到缓冲作用 程序在运行时占内存(先从硬盘上复制到内存上运行)
disk IO磁盘 :程序运行时会占用disk的IO
CPU :运算
net :网络
进程排序: (sort:排序 用来查看四大资源)
[root@localhost ~]# ps aux --sort %cpu |head -5 (给CPU排序%cpu:升序-%cpu降序)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 09:05 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:05 0:00 [kworker/0:0]
root 4 0.0 0.0 0 0 ? S< 09:05 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 09:05 0:00 [kworker/u256:0]
[root@localhost ~]# ps aux --sort -%cpu |head -5 (降序)
显示当前终端类型:
[root@localhost ~]# tty
/dev/pts/1
三个终端:
终端一:root用户用vim打开文档1
终端二:user01用户用vim打开文档2
终端三:root用户输入ps aux | grep vim 查看进程
结果:[root@localhost ~]# ps aux |grep vim
root 3228 0.1 0.3 149796 5600 pts/0 S+ 09:32 0:00 vim 123
user01 3314 0.2 0.2 149696 5500 pts/1 S+ 09:32 0:00 vim 456
root 3353 0.0 0.0 112728 972 pts/2 R+ 09:32 0:00 grep --color=auto vim
最后一个是当前搜索时的vim (可查看谁在使用计算机,在做什么)
进程的父子关系: PID:进程的ID
[root@localhost ~]# ps -ef |head -5 (PID和PPID)(PPID是PID的父系)
UID PID PPID C STIME TTY TIME CMD
root 1 0 1 17:41 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 17:41 ? 00:00:00 [kthreadd]
root 3 2 0 17:41 ? 00:00:00 [kworker/0:0]
root 4 2 0 17:41 ? 00:00:00 [kworker/0:0H] (父系是2--[kthread])
自定义显示字段:[root@localhost ~]# ps axo user,pid,ppid |head -3 (定义显示user,pid,ppid)
USER PID PPID
root 1 0
root 2 0
可显示进程有多少行:[root@localhost ~]# ps aux |wc -l
212
[root@localhost ~]# ls /tmp |wc -l(也适用)
83
将文件的大小以单位形式显示:
[root@localhost ~]# ll /usr/bin/passwd -h
-rwsr-xr-x. 1 root root 28K 8月 9 2019 /usr/bin/passwd (文件大小28K)
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 8月 9 2019 /usr/bin/passwd(文件大小27856)
[root@localhost ~]# ps aux --sort %cpu | ll -h | head -4
总用量 20K
-rw-r--r--. 1 root root 0 11月 19 09:23 1.txt
-rw-r--r--. 1 root root 7 11月 19 09:33 77
-rw-r--r--. 1 root root 15 11月 17 19:52 9
-rw-------. 1 root root 1.7K 11月 17 09:52 anaconda-ks.cfg
二、动态查看进程top
输入top后 显示的上半部分
[root@localhost ~]# top
top - 09:46:37 up 41 min, 2 users, load average: 0.07, 0.05, 0.05
程序名 当前系统时间 系统运行时间 时:分 当前登录用户数 系统(CPU)负载 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
Tasks: 207 total, 1 running, 206 sleeping, 0 stopped, 0 zombie
进程总数:207 运行数1 睡眠数206 停止数0 僵死数0
%Cpu(s): 4.9 us, 2.1 sy, 0.0 ni, 93.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU使用占比 用户占得百分比 系统占用的 用户进程空间内改变过优先级的进程占用CPU百分比 空闲CPU百分比 等待输入输出的CPU时间百分比 硬件CPU中断占用百分比 软中断占用百分比 虚拟机占用百分比
KiB Mem : 1863076 total, 536072 free, 775688 used, 551316 buff/cache
物理内存 物理内存总量 空闲内存总量 使用的物理内存总量 内核(cache)缓存硬盘内容的内存量
KiB Swap: 2097148 total, 2097148 free, 0 used. 908600 avail Mem
交换空间 交换区总量 空闲交换区总量 使用的交换区量
内存空间 :G M K (top的KiB Mem 和KiB Swap 的free )
[root@localhost ~]# free -g 单位是 G
total used free shared buff/cache available
Mem: 1 0 0 0 0 0
Swap: 1 0 1
[root@localhost ~]# free -k单位是K
total used free shared buff/cache available
Mem: 1863076 929372 332784 30408 600920 736948
Swap: 2097148 0 2097148
常用指令:
h或? :帮助
M : 按内存的使用排序
P :按CPU使用排序
N :以PID的大小排序
< : 向前
> : 向后
z :彩色,直接切换颜色
Z :设置彩色,使用数字调整
快捷键:按“b”打开高亮显示功能,然后按“x”打开排序高亮显示
使用cpu的总时间TIME+来排序按 “M”键
cpu排序,需要按“P”键
刷新:
[root@localhost ~]# top 回车 立即刷新(3s一次)
[root@localhost ~]# top -d 1 每1s刷新
[root@localhost ~]# top -d1 -p 3213 每1s刷新一次PID为3213的进程
[root@localhost ~]# top -d1 -p 3213,1516 可查看多个
使用信号控制进程kill:
kill -编号 PID
- SIGHUP 重新加载配置
- SIGINT 键盘中断Ctrl+C
- SIGQUIT 键盘退出Ctrl+\,类似SIGINT
- SIGKILL 强制终止,无条件
- SIGTERM 终止(正常结束),缺省信号相当于exit
- SIGCONT 继续
- SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
验证:
1、终端1 root@localhost ~]# vim file1
2、终端2 root@localhost ~]# vim file2
3、终端3
[root@localhost ~]# ps aux |grep vim
root 8841 0.0 0.2 149696 5508 pts/0 S+ 17:48 0:00 vim file1
root 8886 0.0 0.2 149696 5508 pts/2 S+ 17:48 0:00 vim file2
4、分别发送信号 给两个file
[root@localhost ~]# kill -15 8841
[root@localhost ~]# kill -9 8886
两个终端 file1被终止 file2被杀死
进程优先级nice:
Linux进程调度及多任务:每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
在top中显示的优先级有 PR值和nice值
NI : 实际nice值 (可修改)
PR :PR值=NI值+20 (不可修改)
优先级特性:nice值越大 ;优先级越低; 反之亦然
查看优先级排序:ps axo :自定义显示字段
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | head -5
PID COMMAND NI
32 [khugepaged] 19
743 /usr/sbin/alsactl -s -n 19 19
2570 /usr/libexec/tracker-extrac 19
2573 /usr/libexec/tracker-miner- 19
启动进程时,通常会继承父进程的 nice级别,默认为0。
手动设置不同的优先级:
[root@localhost ~]# nice -n -6 sleep 500 & 设置程序的优先级为 -6
[7] 11402
oot@localhost ~]# ps axo command,pid,nice --sort=-nice | grep sleep
sleep 60 11428 0
grep --color=auto sleep 11431 0
sleep 5000 9978 -5
sleep 500 11402 -6
sleep 6000 9963 -15
作业控制jobs:
作业控制是一个命令功能,也叫后台运行
后台程序控制实例:
1、观察占领前台的现象
[root@localhost ~]# sleep 500
^C
[root@localhost ~]#
运行一个程序,当前终端无法输入,观察占领前台的现象,大部分命令行输入已经无效 可用Ctrl+C或Ctrl+Z或Ctrl+/ 可结束当前进程
2、运行后台程序
[root@localhost ~]# sleep 500 &
使此进程在后台运行 不妨碍当前操作
3、ps查询所有程序
[root@localhost ~]# ps aux |grep sleep
root 9323 0.0 0.0 107956 612 ? S 19:14 0:00 sleep 60
root 9332 0.0 0.0 107956 616 pts/1 S 19:15 0:00 sleep 500
4、jobs查看后台进程(jobs只能在当前终端查询出当前设置的后台进程)
(了解)
[root@localhost ~]# jobs
[1] 运行中 sleep 500 &
[2]- 运行中 sleep 5666 &
[3]+ 运行中 sleep 566 &
+,-代表,使用fg时,默认调动至前台的进程。先是+,后是-(+是最后一个进程 -是倒数第二个上显示的)
5、调动后台程序至前台
foreground fg 前台进程:是在终端中运行的命令,占领终端。
background bg 后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
root@localhost ~]# fg 2
sleep 5666
^C
[root@localhost ~]#
将后台程序[2]调到前台进行 可用Ctrl+c结束进程
[1]- 运行中 sleep 500 &
[3]+ 运行中 sleep 566 &
[root@localhost ~]# fg
sleep 566
fg默认调动最后一个
Ctrl +Z将调出的程序放回后台并停止
bg 1 让[1] 回后台继续运行
6、消灭后台进程
[root@localhost ~]# jobs
[1]- 运行中 sleep 500 &
[2]+ 运行中 sleep 9652 &
[root@localhost ~]# kill %1
[1]- 已终止 sleep 500
注意:kill 1 :终止 PID 为1的进程
kill %1 :杀死作业序号为1的后台程序
更改现有进程的nice级别:
1、创建一个睡眠后台程序
[root@localhost ~]# sleep 852&
[3] 9551
2、修改它的nice值
[root@localhost ~]# ps axo command,pid,nice | grep sleep
sleep 6000 9963 -5
sleep 5000 9978 -5
sleep 60 10062 0
[root@localhost ~]# renice -15 9963
9963 (进程 ID) 旧优先级为 -5,新优先级为 -15
查证:
[root@localhost ~]# ps axo command,pid,nice | grep sleep
sleep 6000 9963 -15
sleep 5000 9978 -5
sleep 60 10096 0
查证:
[root@localhost ~]# ps axo command,pid,nice --sort=-nice | grep sleep
sleep 60 10563 0
grep --color=auto sleep 10600 0
sleep 5000 9978 -5
sleep 6000 9963 -15
[root@localhost ~]# top -p 9978 (可只查看一个进程)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9978 root 15 -5 107956 616 520 S 0.0 0.0 0:00.00 sleep
PR 15
NI -5
虚拟文件系统proc(了解):
采集服务器自身 内核、进程运行的状态信息
CPU:/proc/cpuinfo
[root@localhost ~]# cat /proc/cpuinfo
内存:/proc/meminfo
[root@localhost ~]# cat /proc/meminfo
内核:/proc/cmdline
[root@localhost ~]# cat /proc/cmdline