Linux进程以及计划任务_linux启动项和计划任务-程序员宅基地

技术标签: 运维  linux  服务器  Linux系统管理  缓存  

本章概述

本章主要介绍程序和进程的区别,如何查看进行,有多种方式进行查看;进程的启动方式,有多种启动方式,前台运行还是后台运行,如何互相调用前后台运行;设置周期性任务,一次性任务还是周期性任务怎么设置,怎么删除;如何删除一个进行,怎么删除,批量删除还是强制删除。

一、程序和进程以及线程

1、程序

  • 保存在硬盘、光盘等介质中的可执行代码和数据
  • 静态保存的代码
总结:程序二进制文件,静态的。

2、进程

  • 在CPU及内存中运行的程序代码
  • 动态执行的代码
  • 每个程序可以创建一个或多个进程
总结:进程是程序运行的过程,动态的,有生命周期及运行状态

3、线程

  • 负责功能的运行

  • 多线程可同时运行多个任务

  • 有三种状态

    ①就绪状态:在创建线程后存在等待cpu过来的执行的时间称为就绪状态

    ②运行状态:当cpu过来执行就会转变成运行状态

    ③阻塞状态:线程因为某种原因放弃对cpu的使用权后进入阻塞状态,等变成就绪状态后才可运行。

总结:线程是进程下面执行任务。最小程序的执行单位。

4、名词解释

4.1 僵尸进程

解释: 一个子进程退出,而父进程并没有对子进程进行回收,释放子进程占用的资源,此时子进程将成为僵尸进程。

弊端: 僵尸进程无法直接杀掉,它占用一些资源(进程号),虽然占用的不多,但是僵尸进程如果过多的话,会导致其它正常进程无法使用。

消除僵尸进程办法:

①找到僵尸进程的父进程然后将父进程杀死,这样就会结束掉僵尸进程,但是这样做存在风险,因为该父进程下面其它所有的进程都会被杀掉。

②假如已经杀死了僵尸进程的父进程,但是僵尸进程还没,这时,僵尸进程会变成孤儿进程,孤儿进程会被init进程收养,init进程会对孤儿进程完成收养工作。

②假如僵尸进程的父进程是init进程,那不能杀init进程,杀了将整个系统就挂了,那就可以实现“曲线救国”的方式,将僵尸进程挂起,挂起之后,什么都做不了。

4.2孤儿进程

解释: 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程所收养,并由init进程对他们完成状态收集工作。

二、查看进程统计信息

1、查询进程静态信息-ps

1.1 ps -aux

解释:以简单列表的形式显示出进程信息。

常用选项

选项 作用
-a 显示当前终端下的所有进程信息,包括其他用户的进程
-u 使用以用户为主的格式显示进程信息
-x 显示当前用户在所有终端下的进程信息

image-20220525143201513

上述信息中,第一行为列表的标题,其字段的含义描述如下

标题 含义
USER 启动该进程的用户账号名称
PID 该进程在系统中的数字ID号,在当前系统中是唯一的
%CPU CPU占用的百分比
%MEM 内存占用百分比
VSZ 该进程使用的虚拟内存量(单位:KB)
RSS 该进程占用的物理内存量(单位:KB)
TTY 标明该进程在哪个终端上运行。
pts是远程登录终端,tty1:图像界面,tty2和tty6:字符界面,?:系统本身执行的进程
STAT 该进程的状态
START 启动该进程的时间(什么时候启动的)
TIME 该进程占用CPU的时间(启动需要花多少时间)
COMMAND 启动该进程的命令的名称

其中STAT进程状态描述信息如下

D:系统守护进程(daemon)

R:正在运行(running)

S:睡眠状态(sleep)

Z:僵尸状态(zombie)

T:停止状态

优先级符号:

<:表示进程运行在高优先级上

N:表示进程运行在低优先级上

L:表示进程有页面锁定在内存中

s:表示进程是控制进行

l:表示进程是多线程的

+:表示当前进程运行在前台

1.2 ps -elf

解释:将以长格式显示系统中的进程信息

常用选项

选项 作用
-e 显示系统内的所有进程信息
-l 使用长格式显示进程信息
-f 使用完整的格式显示进程信息

image-20220525145351444

上述各列的解释

标题 解释
F 内核分配给进程的系统标记
S 进程的状态
UID 启动这些进程的用户
PID 进程ID
PPID 父进程的进程ID
C 进程生命周期中的CPU利用率
PRI 进程的优先级(越大的数字代表越低的优先级)
NI 谦让度值,用来参与决定优先级
ADDR 进程的内存地址
SZ 假如进程被换出,所需交换空间的大致大小
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
STIME 进程启动时的系统时间
TTY 进程启动时的终端设备
TIME 运行进程需要的累计CPU时间
CMD 进程的启动命令

2、查询进程动态信息-top

  • 默认情况下每3秒刷新一次,按s键修改刷新时间,按空格:立即刷新。

2.1 top中内容介绍

image-20220525152428917

第一行信息解释

image-20220525152926464

信息 含义
15:28:22 当前时间
up 3:57 系统运行时间
4 users 当前登录的用户数
load averaqe :0.00,0.01,0.05 系统负载,即任务队列的平均长度,三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

平均负载解释:

  • 假如是单核cpu:
    满负载就是1.00,满负载不是代表系统以及运行不了了,而是如果有多出来的任务,那就需要进行等待。
    如果为1.20,表示CPU已经超负载运行,有两个任务需要进行等待才可以运行。
    如果为0.70,表示CPU在未达到满负载运行,还可以运行其他任务。

  • 假如是双核CPU:
    那满负载的值就是2.00。其它依次类推

第二行信息解释(系统任务)

image-20220525153402046

信息 含义
185 total 总进程数185个
1 running 正在运行的进程数1个
183 sleeping 休眠的进程数:183个
1 stopped 中止的进程数:1个
0 zombie 僵死无响应的进程数:0个

第三行信息解释(CPU占用信息)

image-20220525153838836

信息 含义
0.0 us 用户占用
0.0 sy 内核占用
0.0 ni 优先级调度占用
100.0 id 空闲CPU
0.0 wa I/O等待占用
0.0 hi 硬件中断占用
0.0 si 软件中断占用
0.0 st 虚拟化占用

第四行信息解释(内存占用)

image-20220525154515683

信息 含义
total 总内存空间
free 空闲内存
used 已用内存
buff/cache 物理内存和交换内存的缓冲区总和

第五行信息解释(交换空间)

image-20220525154846917

信息 含义
total 总交换空间
free 空闲交换空间
used 已用交换空间
avail Mem 可用物理空间

内容详细说明

image-20220525155302769
信息 含义
PID 进程id
USER 进程所有者的用户名
PR 优先级(由内核动态调整),用户不能
NI 进程优先级,nice值,负值表示高优先级,正值表示低优先级,用户可自己调整
VIRT 虚拟内存,是进程正在使用的所有内存
RES 进程所使用的物理内存
SHR 共享内存大小,(单位KB)
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行

2.2 交互命令介绍

top 命令全屏操作界面快捷键

命令键 功能
P 按CPU排序
M 按内存排序
T 按时间排序
k 根据提示输入指定进程的PID号,并按Enter键终止对应的进程
p 进程IP,查看某个进程状态
N 根据启动时间进行排序
数字键1 显示每个内核的CPU的个数和状态
h 可以获得top程序的在线帮助信息
q 退出top程序

2.3 压力过高测试与解决办法

①制造压力

创建一个目录,使用dd复制内存大的文件到/目录下。

image-20220525162836768

查看top中cpu和内存的使用情况

image-20220525163527138

②解决cpu占用

在生产环境中,也许某一个程序一直在占用高性能的cpu,但是我们不知道是什么程序造成,可以在top中将该进程结束掉。

image-20220525164719277 image-20220525164821831

③解决硬盘占用

上述①结果造成的后果为硬盘不足,下面进行排除与解决

先查看哪个目录占用过大。

image-20220525163854630

再进到该目录,查看哪个文件较大,最后将它删除即可

image-20220525163954964

3、其它查看进程信息

3.1 根据特定条件查询进程PID信息–pgrep

常用选项

选项 作用
-l 同时输出对应的进程名以及PID
-U 查询特定用户的进程
-t 查询在特定终端运行的进程

实例:

image-20220525170327800

3.2 以树形结构列出进程信息-pstree

默认情况下指显示个进程的名称。

常用选项

选项 作用
-p 使用时可以同时列出对应的PID号
-u 可以列出对应的用户名
-a 可以列出完整的命令信息

实例:

image-20220525171050921

三、进程的启动方式

1、手工启动

  • 前台启动: 用户输入命令,直接执行程序
  • 后台启动: 在命令行尾加上“&”符号
image-20220525172202942

1.1、进程的前后台调度(jobs、fg、bg)

Ctrl+Z 组合键 : 将当前进程挂起,即调入后台并停止执行

jobs命令: 查看当前终端处于后台的任务列表

  • -l:显示进程对应的id号

fg命令: 将后台进程恢复到前台运行,可指定任务序号

bg命令: 将后台程序继续在后台运行。

image-20220525174632665

2、调度启动- 计划任务管理

  • 使用at命令,设置一次性任务
  • 使用crontab命令,设置周期性计划任务

2.1 一次性计划任务-at

格式:at [HH:MM](时间) [yyy-mm-dd] (年月日,可以省略)

ctrl +D : 提交任务

atq: 查看一次性任务管理

atrm + 序号 : 删除一次性任务

注意:对于已设置单还未执行(未到时间点)的计划任务,可以通过atq命令进行查询,但是已执行的at任务将不会再出现在列表中

2.1.1 操作案例

①设置系统在22:06分关机

image-20220526220647270 image-20220526220723166

②设置23:00时将/opt/目录下文件复制到当前目录,设置23:30时将/根目录下所有文件删除,设置23:30将/home/ydq文件进行压缩。然后将第二个任务删除掉。

image-20220526224358550

2.2 周期性计划任务-crontab

  • 按照预先设置的时间周期(分钟、小时、天…)重复执行用户指定的命令操作
  • 属于周期性计划任务
  • 主要设置文件
    • 全局配置文件,位于文件:/etc/crontab
    • 系统默认的设置,位于目录:/etc/cron.*/
    • 用户定义的设置,位于文件:/var/spool/cron/用户名

概括:crontab守护进程会自动检查/etc/crontab文件、/etc/cron.d目录及/var/spool/cron/目录中的改变,如果发现配置有更改,它们就会被载入内存,所以当某个crontab文件改变后并不需要重新启动,crond守护进程就可设置生效。

2.2.1 管理crontab计划任务

默认情况下不使用-u是针对root用户,只有root用户才能对其它用户使用-u选项

  • 编辑计划任务

格式:crontab -e [-u 用户名]

  • 查案计划任务(不加-u就是查看自己的计划任务表,加-u就是指定查看某用户的计划任务表)

格式:crontab -l [-u 用户名]

  • 删除计划任务(删除全部,若要删除某一个,需要进入到crontab -e 内部进行删除)

格式:crontab -r [-u 用户名]

2.2.2 crontab 任务配置格式
字段 分钟 小时 日期 月份 星期 命令
范围 0-59 0-23 1-31 1-12 0-7(0或7代表周日) 要执行的命令或程序脚本

时间数值的特殊表示方法

  • *: 表示该方位内的任意时间
  • ,:表示间隔的多个不连续时间点
  • -:表示一个连续的时间范围
  • /:指定间隔的时间频率

应用示例:

分、时、日、月、周

0    17        *     *    1-5        周一到周五每天17:00

30   8         *     *    1,3,5      每周一、三、五的8点30分

0    8-18/2    *     *     *         8点到18点之间每2个小时

0    *        * /3   *     *         每3天
2.2.3 crontab 实例操作

因各条计划任务在执行时并不需要用户登录,所以任务配置记录中的命令建议使用 绝对路径 ,以避免因缺少执行路径而无法执行命令的情况。

另外,在设置非每分都执行的任务时, “分钟”字段也应该填写一个具体的时间数值 比如0 ,而不要保留为默认的“*”,否则将会在每分钟执行一次计划任务。

①每天早上7点50分开启sshd服务

image-20220526211637601

image-20220526211706933

②每隔3天将/opt目录下所有文件删除

image-20220526212142150

③21:30时将/opt/ydq 文件进程压缩

image-20220526213710587

④将以前的计划任任务删除,创建一个用户ydq的计划任务,每隔3天的12:00将/opt目录下所有文件复制到/mnt下面,并删除该任务。

image-20220526214237829 image-20220526214433982 image-20220526214540890

四、进程的终止

Ctrl+C 组合键:结束终端正在执行的命令

1、 Kill命令 和 Killall命令

Kill 用来终止指定PID号的进程

  • kill -l :查看所有选项发出的信号

  • 默认不加的选项是 -15

Killall 用来终止指定名称的所有进程

选项信号 作用
-1(HUP) 重新加载进程
-9(KILL) 终止进程
-15(TERM) 正常停止进程
image-20220525180514856

2、 pkill命令

根据特定条件终止相应的进程

常用命令选项

选项 作用
-U 根据进程所属的用户名终止相应进程
-t 根据进程所在的终端终止相应进程
image-20220525181533965

五、总结

1、程序和进程的关系

  • 程序时静态的,进程是动态的、是程序的运行过程。

  • 线程负责功能的运行,是执行最小单位。

2、查看进程统计信息

  • 静态查询 :ps -aux 、 ps -elf 、 pgrep 、pstree

  • 动态查询:top

3、进程的启动方式

手工启动:

  • 前台启动:直接执行命令
  • 后台启动:在执行命令的最后加上&
    • 查看后台的任务列表:jobs
    • 将后台进程恢复到前台进程运行:fg
    • 将后台进程在后台继续使用:bg

调度启动

  • 一次性计划任务----at

  • 周期性计划任务----crontab

4、终止进程的运行

  • 终止单个进程:kill

  • 终止多个进程:killall

  • 根据特定条件终止相应的进程:pkill

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_57515995/article/details/125075659

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签