进程和计划任务

本文详细介绍了Linux系统中进程的创建、终止以及管理,包括通过执行程序、计划任务来生成进程,以及使用ps、pstree、top等工具动态查看进程状态。还讲解了进程的调度,如前台后台运行、nice值的调整。此外,文章提到了进程间通信的信号机制,并介绍了计划任务的使用,如at和crontab。
摘要由CSDN通过智能技术生成

如何产生一个进程:

  • 执行程序或者是命令
  • 计划任务

如何终止一个进程:

  • 程序或者是命令执行完毕,自动终止
  • 强制终止进程

进程管理

一.程序和进程的关系
程序:通常为二进制文件,存放在硬盘介质中,是可执行的代码和数据

进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个标识符(PID),进程就是正在运行中的程序。

父子进程:进程创建的进程为子进程

fork and exec 进程呼叫的流程:
1、系统先以fork的方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一的区别就是PID不同,并增加一个PPID(父进程ID)
2、暂存进程以exec的方式加载实际要执行的程序,变成新进程。

常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户的各项任务,被称为服务(daemon)。

大致分为两类:

  • 系统本身所需要的服务:crond、atd、rsyslogd等
  • 负责网络的服务:named、postfix等,会启动一个端口,供外部客户端连接

1.静态查看进程的统计信息;

  (1)ps:
       -a:显示终端下所有进程信息,包括其他用户的进程
       -u:显示进程的拥有者
       -x:显示当前用户所在终端下的进程信息,和a一起用,显示所有进程
       -e:显示系统内所有进程信息
       -l:长格式显示
       -f:完整的格式显示

在这里插入图片描述
其中

UID:进程的拥有者
PID:进程号
PPID:父进程号
C:cpu使用的资源百分比
STIME: 开始时间
TTY: 运行进程的终端名字
TIME:进程运行的时间
CMD:命令

在这里插入图片描述
其中

USER:拥有者
PID:进程号
%CPU:占用cpu百分比
%MEM:占用内存百分比
VSZ:占用的虚拟内存的大小
RSS:驻留内存大小
TTY:终端
STAT:进程状态
    R:该进程正在运行
    S:休眠进程sleep,可以被唤醒
    D:不可被唤醒的睡眠状态
    Z:僵尸进程,实际上该进程已经终止,但是却无法移除到内存之外
    T:该进程正在跟踪或者已经停止
START:开始时间
TIME:运行时间
COMMAND:命令
(2)pstree:树形结构查看进程信息
    -a:显示完整信息
    -u:列出名字
    -p:列出PID号

在这里插入图片描述
二、动态查看进程
top:实时查看系统运行状态 h 帮助 M 按照内存使用排序 P 按照CPU排序 N 按照PID来排序 q 退出
在这里插入图片描述

top - 21:58:51 up 40 min,  1 user,  load average: 0.22, 0.20, 0.27
     系统时间     运行时长   当前1个用户登录系统   系统在1分钟、5分钟、15分钟的平均负载情况

Tasks: 276 total,   3 running, 273 sleeping,   0 stopped,   0 zombie
    总共276个进程     3个正在运行    273个休眠      0个停止的     0个僵尸进程

%Cpu(s):  5.3 us,  1.3 sy,  0.0 ni, 93.0 id,  0.0 wa,  0.4 hi,  0.1 si,  0.0 st
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比 ,要特别注意,代表的是I/O情况
hi 硬中断(Hardware IRQ)占用CPU的百分比
si 软中断(Software Interrupts)占用CPU的百分比
st (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实
际 CPU 的时间的百分比
多核CPU的话,按数字1,可以展开其他CPU情况

MiB Mem :   3752.0 total,    142.5 free,   2845.8 used,    763.7 buff/cache
total 物理内存总量
used 使用的物理内存总量
free 空闲内存总量
buffers 用作内核缓存的内存量

MiB Swap:   4044.0 total,   4031.4 free,     12.6 used.    649.4 avail Mem
total 交换区总量
used 使用的交换区总量
free 空闲交换区总量
cached 缓冲的交换区总量。

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                 
   2339 git       20   0 1385468 759240  22808 S   4.9  19.8   2:23.10 bundle                                                  
   2246 git       20   0  374192  73276   9300 S   2.1   1.9   0:36.68 gitlab-exporter                                         
   2453 gitlab-+  20   0 1069208  32076  26068 S   1.8   0.8   0:20.10 postgres                                                
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
PRI 进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行
NI 进程Nice值,代表这个进程的优先值
%nice 改变过优先级的进程的占用CPU的百分比

f键可以编辑显示的列
在这里插入图片描述

1.仅动态查看某个进程的状态:top -p 2253 #其中2253是进程号
2.top动态查看进程:
                -P:顺序查看
3.pgrep:查看进程pid
       -l:显示进程名
       -U:指定用户
       -t:指定终端

三、进程的调度
1、前台运行:
直接在终端运行命令,会发现该程序一直占用终端,其他命令不能够再在这个终端运行
在这里插入图片描述
2、后台运行
1)命令执行的时候,直接将其放置与后台运行
在这里插入图片描述
2)对于一个已经运行的命令,ctrl+z将前台进程放置于后台,但是该进程在后台是停止的状态
在这里插入图片描述
jobs:查看后台进程运行状态
在这里插入图片描述
fg 1:激活后台进程
在这里插入图片描述

bg 任务编号 :指定任务在后台运行
fg 任务编号 : 将后台运行的命令变成前台运行

注意:不管你是前台运行,还是后台运行,只要终端一关闭,进程就停止了。

使用nohup命令可以让命令或者程序脱离终端
在这里插入图片描述

中断进程
IPC:Interconnect Process Communication 进程间通信
进程间通信的四种方式:
1、管道 pipe
2、信号 signal
3、消息 message
4、共享内存 shared memor

信号是类unix系统中的一种通信机制,它用来中断运行的进程执行某些操作

常用的信号:
查看信号的列表:kill -l
1) SIGHUP:重置进程的配置,即不停止服务的情况下,重新读取配置文件
kill -1 PID 或者kill -HUP PID 
2) SIGINT:中断(interrupt),相当于执行了ctrl+c
kill -2 PID
9) SIGKILL:强制杀死进程、无条件杀死
kill -9 PID
15) SIGTERM:终止进程,进程不一定会死
kill -15 PID
20) SIGTSTP:相当于按下ctrl+z的时候发送的信号
kill -20 PID
pkill:按照进程的属性结束进程
       按照进程名字杀死进程
killall:
killall 命令名字 #杀死全部的同名进程
xkill:杀死图形化资源
当执行了xkill之后,鼠标会变成“x”形,点到任何图形资源,就会终止该资源的运行

谦让值:nice
作用:
指定或者调整用户进程的nice值
nice值越高,该进程抢占资源的能力越弱
nice值越低,该进程抢占资源的能力越强
范围:-20~19

nice:运行时直接设置nice值
格式:nice -n 数字 command

renice:对于已经运行的,调整nice值
格式:renice 数字 PID

nice越大,获得的资源越少,反之则反。

例:
在程序执行时,直接指定nice值:nice -n 7 ./loop.sh &
使用renice调整运行中的进程的nice值:renice 19 8890
进程的调度:
  ctrl+Z:转入后台并且停止
  jobs:查看处于后台的任务
  fg:将后台的进程恢复前台运行,可指定任务号
  ctrl+c:中断正在执行的命令
  kill:终止PID -9 强制终止
  pkill:根据 特定条件终止进程
    -t:停止终端进程
    -U:按用户名终止进程

计划任务

at: 一次性计划任务

at: 一次性计划任务
at [HH:MM] [yy-mm-dd]
    >command
    >(ctrl+d)
atq:查看任务
atrm:删除任务 后边指定要删除的任务号 atrm 1
时间格式也可以:now + count time-units(minutes,hours,days,weeks)

在这里插入图片描述
crontab 周期性计划任务
crontab命令----crond服务
全局设定的配置文件:/etc/crontab
系统默认的设置:/etc/cron.*
用户自定义的配置文件:/var/spool/cron/user_name

编辑任务:crontab -e [-u user_name]
查看任务:crontab -l [-u user_name]
删除任务:crontab -r [-u user_name]
注:省略用户表表示操作当前用户的crontab

编辑任务时可以使用的操作符:
* 取值范围内的所有数字
/ 每过多少个数字
- 从X到Z
,散列数字

例:
* * * * * echo "test is a test" > testfile
分 时 月 日 周 命令/脚本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值