进程管理的作用
查看系统中所有进程,使用BSD操作系统格式
# ps aux
查看系统中所有进程,使用linux标准命令格式
# ps -le
ps aux格式
[root@hanchao ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 5.3 0.3 43384 3728 ? Ss 07:26 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 07:26 0:00 [kthreadd]
root 3 0.1 0.0 0 0 ? S 07:26 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 07:26 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 07:26 0:00 [kworker/0:0H]
USER | 该进程是由哪个用户产生 |
PID | 该进程的ID号 |
%CPU | 该进程占用cpu资源的百分比 |
%MEM | 该进程占用物理内存的百分比 |
VSZ | 该进程占用虚拟内存大小,单位KB |
RSS | 该进程占用实际物理内存的大小,单位KB |
TTY | 该进程是在哪个终端中运行。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端,pts/0-256代表虚拟终端 |
STAT | 进程的状态。常见的状态有:R运行、S睡眠、T停止状态、s包含子进程、+位于后台 |
START | 该进程的启动时间 |
TIME | 该进程占用CPU的运算时间,注意不是系统时间 |
COMMAND | 产生此进程的命令名 |
TOP命令
top - 07:27:10 up 0 min, 1 user, load average: 0.74, 0.28, 0.10
Tasks: 113 total, 1 running, 112 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 997956 total, 760304 free, 102712 used, 134940 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 740088 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125312 3808 2568 S 0.0 0.4 0:01.15 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
内容 | 说明 |
07:27:10 | 系统当前时间 |
up 0 min | 系统的运行时间,本机已经运行了不到1min |
1 user | 当前登陆了两个用户 |
load average:0.00,0.00,0.00 | 系统在之前1分钟、5分钟、15分钟的平均负载,一般认为小于1,负载较小,如果大于1,系统已超出负荷 |
内容 | 说明 |
Tasks:113 Total | 系统中的进程总数 |
1 running | 正在运行状态的进程数 |
112 sleeping | 睡眠的进程数 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
内容 | 说明 |
Cpu(s):0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程占用的CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待时间CPU的时间百分比 |
5、查看进程树
安装pstree
[root@localhost ~]# yum install psmisc
[root@localhost ~]# pstree [选项]
选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
#################################################################################
终止进程
1、kill命令
信号代号 | 信号名称 | 说明 |
1(常用) | SIGHUP | 该信号让进程立即关闭,然后重新读取配置文件之后重启 |
2 | SIGINT | 程序终止信号,用于终止前台进程。相当于输出ctrl+c快捷键 |
8 | SIGFPE | 在发生致命的算术运算错误时发出。不仅包含浮点运算错误,还包括溢出及除数为0等其他所有的算术的错误 |
9(常用) | SIGKILL | 一般用来立即结束程序的运行,本信号不能被阻塞、处理或忽略。一般用于强制终止进程 |
14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm函数使用该信号 |
15(常用) | SIGTERM | 正常结束进程的信号,kill命令的默认信号,有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是信号9 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行,本信号不能被阻断 |
19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入ctrl+z快捷键。本信号不能被阻断 |
重启进程
[root@localhost ~]# kill l pid
正常结束进程
kill 15 pid #默认kill pid就是调用的15信号
强制杀死进程
[root@localhost ~]# kill 9 pid
2、killall命令
# killall [选项] [信号] 进程名
#按照进程名杀死进程
选项:
-i: 交互式询问是否要杀死某个进程
-I: 忽略进程名的大小写
[root@localhost ~]# killall 9 httpd
3、pkill命令
# pkill [选项][信号] 进程名
#按照进程名终止进程
选项:
-t: 按照终端号踢出用户
[root@localhost ~]# pkill -t pts/0
4、把进程放入后台
把执行的命令之后加上 & 符号
# tar -zcf etc.tar.gz /etc & 后台运行
5、查看后台的工作
[root@localhost ~]# jobs [选项]
选项:
-l: 显示工作的PID
注:'+'号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作,'-'号代表倒数第二个放入后台的工作
6、将后台暂停的工作恢复到前台执行
[root@localhost ~]# fg %工作号
参数:
%工作号 %号可以省略,但是注意工作号和PID的区别
7、将后台暂停工作恢复到后台执行
[root@localhost ~]# bg %工作号
参数:
%工作号 %号可以省略,但是注意工作号和PID的区别
注:后台恢复执行的命令,不能和前台有交互,否则不能恢复到后台执行
#################################################################################################
1、vmstat命令监控系统资源
# vmstat [刷新延时 刷新次数]
[root@localhost ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 761632 2092 133752 0 0 52 6 74 134 0 0 99 0 0
0 0 0 761632 2092 133784 0 0 0 0 53 55 0 0 100 0 0
0 0 0 761632 2092 133784 0 0 0 0 46 40 0 1 99 0 0
2、dmesg开机时内核检测信息
[root@localhost ~]# dmesg
[root@localhost ~]# dmesg | grep CPU
3、free命令查看内存使用状态
[root@localhost ~]# free [-b|-k|-m|-g]
选项:
-b:以字节为单位显示
-k:以KB为单位先似乎,默认就时以KB单位显示
-m:以MB为单位显示
-g:以GB为单位显示
缓存和缓冲的区别
缓存是用来加速数据从硬盘中读取的,
缓冲是用来加速数据写入硬盘的
4、查看CPU信息
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz
stepping : 3
microcode : 0x22
cpu MHz : 3300.007
cache size : 8192 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat
bogomips : 6600.01
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
5、查看系统与内核相关的信息
# uname [选项]
选项:
-a 查看系统所有相关信息
-r 查看内核版本
-s 查看内核名称
6、判断当前系统的位数
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c5ad78cfc1de12b9bb6829207cececb990b3e987, stripped
7、列出进程打开或使用的文件信息
# lsof [选项]
#列出进程调用或打开的文件的信息
选项:
-c 字符串 只列出以字符串开头的进程打开的文件
-u 用户名 只列出某个用户的进程打开的文件
-p pid 列出某个PID进程打开的文件
###################################################################################################
项目 | 含义 | 范围 |
第一个* | 一小时当中的第几分钟 | 0-59 |
第二个* | 一天当中的第几个小时 | 0-23 |
第三个* | 一个月当中的第几天 | 1-31 |
第四个* | 一年当中的第几个月 | 1-12 |
第五个* | 一周当中的星期几 | 0-7(0和7都代表星期日) |
格式 | 含义 |
45 22 * * * 命令 | 在每天22点45分执行命令 |
0 17 * * 1 命令 | 每周一的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行的命令。 |
* 17 * * 1 命令 | 每周一的17点每分钟执行一次(注:这个是示例) |
特殊符号 | 含义 |
* | 代表任何时间。比如第一个*就代表1小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如"0 8,12,16 * * * * 命令",就代表在每天的8点0分,12点0分,16点0分都执行一次的命令 |
- | 代表连续的时间范围。比如"0 5 * * 1-6 命令",代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟就执行一次命令 |