进程和服务
进程和服务的基础知识
程序是一串没有运行的代码
进程是一个运行中代码
线程就是进程的实际执行者
服务的概念:
在操作系统内部或者依赖网络环境运行的一种软件组织,用来提供特定的功能或者服务(一般在后台运行,完成接收请求,处理数据等工作)
服务执行哪些操作?
1.可能是系统自带的,例如firewalld
2.第三方基于linux系统开发的运行程序,例如 mysql nginx (一般就是需要长期运行的服务)
服务之间的访问通信
服务之间可以通过端口号进行互相通信
服务之间也可以互相访问
服务以进程的方式进行,也可以进行自我分配,也可以通过管理员资源限制使用
进程的概念
操作系统分给运行程序的资源单位
1.在代码中限制资源的使用,写死了进程占用的系统资源
2.系统自动分配
3.进程之间相互隔离,彼此之间不能访问
服务与进程的区别
相同点: 1.都是特定功能的软件
2.服务也是以进程的方式运行
3.都可以对系统分配资源进行调整使用
不同点: 1.进程之间一般不能互相访问,也即是不能通过传统的IP方式,端口方式进行通信,通信只能通过系统提供的访问机制, 例如共享内存,信号等等
2.服务可以通过定义的端口和协议与其他组件通信,例如通过网络协议HTTP
3.服务一般是第三方的软件,进程大部分是系统自带
总结:
服务和进程本质上在linux上一样,都是以进程的方式进行展示
进程的创建过程
启动过程:父进程先启动--->然后启动子进程--->再由父进程给子进程分配资源
结束运行:子进程先结束--->父进程收回子进程的资源--->父进程终止
进程的基本命令
ps 查看进程,静态统计进程的信息
-a:显示所有终端上的进程,包括其他进程
-u:列出进程的用户
-x:显示所有终端的信息
关于各列的解释:
USER:进程的用户
PID:进程的ID
%CPU:进程占用的CPU百分比
%MEM:占用物理内存的百分比
VSZ:该进程使用的虚拟内存量(KB)(就是把外存当作内存来使用,便于缓解物理内存压力的不足)
RSS:该进程占用的物理内存量(KB)
TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
START:该进程被触发启动时间
TIME:该进程实际使用CPU运行的时间
COMMAND:进程的启动命令
STAT:该进程的状态
STAT状态的解释:
D:不可中断的休眠状态;
R:正在运行状态;
S:处于休眠状态,可被唤醒;
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;
Z:僵尸进程,进程已经中止,但是部分程序还在内存当中
僵尸进程的解释:
一个子进程结束必须由父进程回收资源之后,父进程才会结束,但是当父进程结束,但是子进程没有结束,就会导致子进程的资源无法被回收,子进程的资源没有回收,没有释放子进程占用的资源,那么该进程就不会变成僵尸进程。
ps -elf
-e:显示系统所有的进程信息
-l:长格式展示进程的信息
-f:使用完整的格式显示进程信息
关于各列的解释:
UID:启动这些进程的用户
PID:进程的进程ID
PPID:父进程的进程号(如果该进程是由另一个进程启动的)
F:内核分配给进程的系统标记
S:进程的状态
C:进程生命周期中的CPU利用率
PRI:进程的优先级(越大的数字代表越低的优先级)
NI:谦让度值用来参与决定优先级
ADDR:进程的内存地址
SZ:假如进程被换出,所需交换空间的大致大小
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
STIME:进程启动时的系统时间
TTY:进程启动时的终端设备
TIME:运行进程需要的累计CPU时间
CMD:进程的启动命令
top 动态查看进程信息
c 键:根据CPU使用百分比大小进行排序
数字1 键:显示CPU个数和状态
q 键:退出 top 程序
top -b -n 1 只运行一次即退出(即是动态查看)
第三行为 CPU的信息
us 用户占用
sy 内核占用
id 空闲CPU,要了解空闲的 CPU 百分比,主要看%id部分
ni 优先级调度占用
wa 磁盘读写性能
iostat--查看读写性能
hi 1分钟的cpu使用率
si 5分钟的cpu使用率
st 15分钟的cpu使用率
pstree 查看进程的线程
-p:显示进程id
-u:显示进程的用户
pgrep
根据特定条件查询PID进程信息(只可跟进程名)一般和kill配合使用
-c:仅显示匹配进程的数量,而不显示进程名和 PID
-f:只显示PID
-a:显示进程名和PID
jobs 查看后台进程的状态信息
-l:显示所有后台进程的 PID
-p:显示所有后台进程的进程组 ID
-n:仅显示最近的后台进程
-r:仅显示正在运行的后台进程
-s:仅显示已停止的后台进程
pkill 根据特定的条件终止进程
-u:根据进程用户名
-t:指定开启进程的终端
kill 终止进程
(默认为15 表示这个进程需要被终止)
kill -9 强制杀死进程(有时只使用kill杀死不成功)
kill的命令只是传递了信号,实际上是由CPU执行
计划任务
crontab * * * * * (*表示任意时间)
第一个 * 表示分(范围0-59)
第二个 * 表示时(范围0-23)
第三个 * 表示日(范围1-31)
第四个 * 表示月(范围1-12)
第五个 * 表示周(范围0-7)
* :表示任意的时间
,:表示间隔的多个不连续的时间点(1,3,5 * * * *)
/ :表示间隔时间频率 (*/10 * * * *)
- :表示连续的时间范围 (2-10 * * * *)
crontab命令
-e 创建一个定时任务
-u 表示指定用户创建
-l 查看当前定时任务
-r 清空所有定时任务(不推荐使用)
删除定时任务 进入创建页面 使用dd命令
每十分钟执行一次