进程跟程序有什么区别
程序由代码及命令集合组成的。是一个静态的概念,存放在磁盘中,永久的存在。
进程是程序在系统上运行的一种机制,是一个动态的概念,存放内存中,随着程序启动,运行,终止,消除等操作影响。
进程是有生命周期用户打开一个程序,程序启动,父进程收到任务,fork生成一个子进程,子进程会继承父进程的任务,处理任务,父进程进入等待,在这时,如果父进程退出了,子进程还在工作中,就没有父进程进行管理,就会变成僵尸进程。每个进程都有自己的PID PPID。如果父进程没有退出,子进程任务完成,子进程退出。
监控进程状态
静态
[root@qls ~]# ps aux ps 静态的显示当前进程的状态信息
a 所有进程
u 显示有效用户及id号
x 把没有终端的进程显示出来
USER 进程运行的用户
PID 进程运行的ID号 PID
%CPU 进程占用CPU的百分比
%MEM 进程占用内存的百分比
VSZ 虚拟内存集 进程所占用的虚拟内存的空间
RSS 物理内存集 进程所占用的物理内存的空间
TTY 进程运行的终端
? 系统或者内核运行的终端
tty1 机器终端,虚拟机本地VMware
pts/0 远程连接的终端 0 第一个
pts/1 第二个远程连接终端
STAT 进程状态
S 在休眠状态
s 父进程,表示下面有子进程
R 运行中
N 优先级低
< 优先级高
+ 表示前台运行
l 使用线程运行
| 多线程运行
T 暂停的或者被追踪进程
Z 僵尸进程
D 无法终止的休眠状态进程
START 进程运行启动时间
TIME 进程占用CPU的运行时间
COMMAND 进程所执行的指令
[] 内核态,系统运行的
无[] 用户态的进程
动态
top 实时显示系统状态信息
[root@qls ~]# top
10:58:29 当前系统时间
up 2 days, 31 min 系统从开机到现在的运行时间
3 users 终端的数量,用户的登录数量
load average: 0.04, 0.04, 0.05 平均负载 1分钟 5 15分钟的负载情况
Tasks: 任务
118 total, 总任务的个数
1 running, 1个在运行
116 sleeping, 116个在休眠
1 stopped, 1个停止
0 zombie 0个僵尸
%Cpu(s): 程序占用CPU的时间百分比
0.0 us, 用户态的
0.0 sy, 系统态的
0.0 ni, 优先级程序占用cpu时间百分比
100.0 id, 空闲的
0.0 wa, 等待io线程的占用cpu时间百分比
0.0 hi, 硬中断占用cpu时间百分比
0.0 si, 软中断占用cpu时间百分比
0.0 st 虚拟机窃取宿主机的CPU时间百分比
KiB Mem : 995740 total, 132080 free, 446868 used, 416792 buff/cache
物理内存的状态 总的 剩余的 使用的 缓冲或缓存
KiB Swap: 3121144 total, 3068672 free, 52472 used. 380396 avail Mem
虚拟内存的状态
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID 进程id
USER 进程运行的用户
PR 优先级,一般显示20
NI 优先级,一般显示0 优先级的值越小,优先级越高
VIRT 虚拟内存占用
RES 物理内存占用
SHR 共享内存的占用
S 状态
%CPU 占用CPU的使用百分比
%MEM 占用内存的使用百分比
TIME+ 进程占用CPU的时间
COMMAND 执行的指令
htop实时显示系统状态信息,top的升级版
top
-d 指定更新的时间
-p 显示指定的进程号信息
-u 显示指定用户的进程信息
中断
硬中断 处理速度的快的任务
软中断 将处理时间长的放入到后台,系统其它机制进行处理
## 查看系统性能的命令
iotop iftop glances top htop w uptime free df netstat ss
# 进程管理
怎么关闭进程 查看kill 的信号
1) SIGHUP 重载,重新加载配置文件,进程号不变的 nginx reload
9) SIGKILL 强制
15) SIGTERM 默认,终止进程
[root@qls ~]# kill 78869 #终止进程
[root@qls ~]# kill -9 78869 #强制终止
#结束多个进程
[root@qls ~]# ps aux |grep [t]op
root 84160 0.1 0.2 161992 2188 pts/0 S+ 11:50 0:00 top
root 84164 0.2 0.2 122456 2108 pts/2 S+ 11:50 0:00 htop
[root@qls ~]# ps aux |grep [t]op |awk '{print $2}' |xargs kill -9
killall 结束进程的命令,根据进程名称终止进程,进程不存在,会报错
[root@qls ~]# yum install -y psmisc
pkill 结束进程的命令,根据进程的名称进行终止,进程不存在,不会报错模糊终止 ,包含进程名称,都给终止
后台进程管理
前台运行的程序,如果不小心退出了终端,对应的前台程序也会退出
早期使用nohup &
[root@qls ~]# nohup tar czf etc.tar.gz /etc/ /var/ &
使用
rtl键+z 放入到后台,停止状态
jobs 查看后台的所有的程序
bg 让一个后台的程序进行运行
fg 让一个后台的程序放到前台运行
% id
screen 后台运行的指令,重新打开一个新的会话窗口执行指令
-S 创建一个新的会话窗口时,并起一个名称
-list 显示screen存在的会话列表
-r 进入指定会话
话中操作
Crtl键+a+d 临时退出会话窗口
exit 退出