系统进程与计划任务

目录

系统进程

ps命令

top命令

pgrep命令

pstree命令

jobs命令

计划任务

一次性计划任务at

周期性计划任务crontab


系统进程

我们系统在打开的一瞬间就会加载很多进程,那么我们该如何查看这些进程和管理这些进程呢?

ps命令

常用的参数

-a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。

-u:使用以用户为主的格式输出进程信息。

-x:显示当前用户在所有终端下的进程信息。

一般直接用 ps -aux 组合使用

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

USER:启动该进程的用户账号的名称。

PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的。

%CPU:CPU占用的百分比。

%MEM:内存占用的百分比。

VSZ:该进程使用的虚拟内存量(KB)。

RSS:该进程占用的物理内存量(KB)。

TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。

STAT:该进程的状态(包括 :D:不可中断的休眠状态:R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态: Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

状态后面还有一些字符,它们含意如下:

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

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

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

s: 表示进程是控制进程

l: 表示进程是多线程的

+: 表示当前进程运行在前台(这里有前台那肯定有后台,在命令后面加上&可以将操作直接放至后台,如后台复制光盘镜像可以用cp /dev/cdrom /home/cetos7.iso &)

D:系统守护进程

然后我们书接上文:

START:启动该进程的时间。

TIME:该进程占用的 CPU 时间。

COMMAND:启动该进程的命令的名称

下面我们来尝试改变一个进程的状态,并查看验证。

首先我们双击连接,重新打开一个终端,称为终端ZDB,在此终端vim a.txt 编辑一个文件

这时候我们回到第一个终端,下面称为ZDA,然后我们输入

ps -aux | grep a.txt       查看a.txt 的进程状态

现在我们回到ZDB然后按ctrl z 停止,这时候在ZDA再次输入ps -aux | grep a.txt

我们可以看到

这里解释一下 ctrl c 是发送 SIGINT 信号,终止一个进程 ctrl-z 是发送 SIGSTOP 信号,挂起一个进程。将作业放置到后台(暂停) 。ctrl-d 不是发送信号,代表输入完成或者注销。

除了ps -aux还有ps -elf ,这个命令的意思是以长格式显示系统中的进程信息

这里其实和 -aux大同小异

F:内核分配给进程的系统标记。

S:进程的状态。

UID:启动这些进程的用户。

PID: 进程的进程ID.

PPID:父进程的进程号(如果该进程是由另一“个进程启动的)

C:进程生命周期中的CPU利用率。

PRI:进程的优先级(越大的数字代表越低的优先级)。

NI: 谦让度值用来参与决定优先级。

ADDR:进程的内存地址。

SZ:假如进程被换出,所需交换空间的大致大小。

WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。

STIME:进程启动时的系统时间。

TTY:进程启动时的终端设备。 pts/0255代表虚拟终端,一般是远程连接的终端;tty1tty7 代表本地控制台终端。

TIME:运行进程需要的累计CPU时间。

CMD:进程的启动命令。

top命令

top命令可以动态的查看进程状态,默认每3s刷新一次

上述输出信息中

13:22:30 当前时间;

up 2:39系统运行时间 ,说明此服务器连续运行 两个小时39分钟了;

2 user 当前登录用户数;

load average  系统负载,即任务队列的平均长度;

系统任务(Tasks)信息:total,总进程数;

running,正在运行的进程数;

sleeping, 休眠的进程数;

stopped,中止的进程数;

zombie,僵死无响应的进程数;

CPU 占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O 等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分。

内存占用(Mem)信息:total,总内存空间;free,空闲内存;used,已用内存;buff/cache,物理内存和交换内存的缓冲区总和。

交换空间(Swap)占用:total,总交换空间;free,空闲交换空间;used,已用交换空间;avail Mem,可用物理空间。

下面我们来进行实验。

首先我们在ZDA执行top

然后我们去ZDB执行   dd if=/dev/zero of=/a.txt count=10 bs=100M

(这里注意不要设置太大,不然系统会卡死,进程将内存占满,远程连接会中断,如果一不小心弄爆了,需要进入虚拟机页面打开终端。 然后使用 rm -rf /a.txt 命令强制删除a.txt

删除后可能系统内存仍然不足,需要清理系统缓存和临时文件:

sync

echo 3 > /proc/sys/vm/drop_caches

(注:所有操作都是管理员账户执行

然后我们接着上面说,创建了1GB文件后,回到ZDA我们就可以看到dd这个命令的CPU使用率一下子窜上来了,有的虚拟机可能创建的时候分配的cpu比较强,这里可以适当的增大创建的文件。

op命令界面中可以通过按键对特定数值进行排序查看

P 按CPU使用率排序

M 按内存使用率排序

T 按运行时间长短排序

N 按进程ID排序

p: 进程 IP,查看某个进程状态

数字键 1:显示每个内核的 CPU 使用率

U:指定显示的用户

h:可以获得 top 程序的在线帮助信息

q:键可以正常地退出 top 程序

上面我们提到,默认 3s 刷新一次,在top命令界面下按 s 修改刷新时间按空格 :立即刷新,输入数字就是夺少秒。

注:若通过 top 排名工具发现某个进程 CPU 占用率非常高,需要终止该进程的运行,可以在 top 操作界面中按 k 键,然后在列表上方将会出现如下提示信息

根据提示输入指定进程的 PID 号并按 Enter 键, 出现二次确认的提示信息,然后继续按Enter 键确认即可终止对应的进程。

pgrep命令

pgrep命令可以产看进程信息

-l:选项可同时输出对应的进程名以及PID

-U:选项查询特定用户的进程

-t:选项查询在特定终端运行的进程

如上面用到的pgrep -l vim  就是查看名为vim的进程,或者名字中包含vim。

pstree命令

以树形结构列出进程信息

-p:选项使用时可以同时列出对应的PID号

-u:选项可以列出对应的用户名

-a:选项可以列出完整的命令信息

通常直接用 pstree -aup 组合起来使用,可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息。

jobs命令

jobs命令用于查看后台运行的进程

-l:选项可以同时显示该进程对应的PID号

jobs -l显示出后台进程列表

可以用 fg 加上进程号  将该进程放至前台

当我们对一些程序进行操作后,发现进程关不掉了,这时候我们需要用到kill命令来杀死进程。使用kill命令我们需要知道进程的PID,若该进程已经无法响应终止信号,则可以结合“-9” 选项强行终止进程。

下面我们来测试一下

进入到ZDB,vim testfile &     打开vim 程序并挂起

回到ZDA,jobs –l      查询目标进程的PID 号

kill 3459 尝试正常结束进程

但发现vim 进程并未退出

这时候我们用 kill -9 3549   强制终止目标进程,然后我们再来查看,可以看到进程已经被残忍的杀死了。

然后,当需要结束系统中多个相同名称的进程时,使用 killall 命令将更加方便,效率更高。killall 命令同样也有“-9”选项。下面我们同样来测试一下

进到ZDB,挂起两个vim进程

vim testfile1 &                                

vim testfile2 &

回到ZDA,查看, 

killall -9 vim 强制终止进程名为vim的进程,可以看到两个vim进程都被杀死了(我创了三个)

使用 pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与 pgrep 命令基本类似,如“-U”(指定用户)、“-t”(指定终端) 等。如,要终止由用户 zhangsan启动的进程(包括登录 Shell),可以执行以下操作。

在ZDB上创建用户zhangsan 这里我们就不细说了,vim t1 &   后台运行vim

然后我们回到ZDA,

pgrep –l -U "zhangsan"  查看zhangsan这小子正在后台搞什么

pkill -9 -U "zhangsan"     管他干什么肯定没干好事,直接给他全部禁止

pgrep -l -U "zhangsan"    再查看一下,万一有活着的要补枪。

然后我们回到zhangsan那边,zhangsan此时并不知情,正在用vim文本编辑器开心地写小说,突然

画面变成这样了,什么都操作不了了,我们成功了。

计划任务

有些时候我们可能在特定的时间进行一些操作,但是好巧不巧,那个时间点我们恰好有事情要处理,但是这个操作又不得不执行,面对这种两难的情况,我们就需要用到计划任务,即在指定的时间让系统进行指定的操作。

一次性计划任务at

使用at命令设置的计划任务只在指定的时间点执行一次,需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后, 否则将无法正确设置计划任务。

设置一次性计划任务时,在 at 命令行中依次指定计划执行任务的时间、日期作为参数 (若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间)

过程大概是,at [时间(格式:xx:xx)] [日期(格式:xxxx-yy-dd)],回车后进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按 Ctrl+D 组合键提交任务。所设置的命令操作将在计划的时间点被依次执行。

下面我们来举个例子实际操作一下。

设置在 2024 年 6 月 27 日的16:35 自动执行以下任务:统计该时间点系统中由 root 用户运行的进程的数量,并将该数值保存到/opt/ps.root 文件中。ps:现在是北京时间2024.6.27 16:32

at 16:23 2021-08-16

at> pgrep -U root | wc -l > /opt/ps.root           任务设置完毕后按Ctrl+D 组合键提交

这时候我们查看ps.root会提示没有这个文件,别着急,让子弹飞一会,待到山花烂漫时,文件就在灯火阑珊处

再看一下,有啦有啦

下班后人先走机器开着再装一会,领导问到就说上厕所去了,然后九点半再关机,也可以用计划任务来操作。

at 21:30

at> shutdown -h now

at> <EOT>

然后ctrl d 提交

对于已经设置但还未执行的计划任务,可以通过 atq 命令进行查询。已执行过的任务将不会再出现在列表中。

若要删除指定编号的计划任务,可以使用 atrm 命令。删除后的任务将不会被执行,并且不会显示在 atq 命令的结果中,已经执行过的任务无法删除,毕竟它都不会显示的...

于是我们发现,删除后在查看就无了,真是个相当伟大的发现

周期性计划任务crontab

周期性计划任务约等于就是永久性计划任务了,设置周期性计划任务列表主要通过 crontab 命令进行,结合不同的选项可以完成不同的计划任务管理操作,常用的选项如下

-e:编辑计划任务列表。

-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。

-l:列表显示计划任务。

-r:删除计划任务列表。

这里特别讲一下周期性计划任务的时间设置,它是有顺序的,按照“分”“时”“日”“月”“周”的顺序依次设置。“*”代表任意值;“-”代表连续区间;“/”可以直接理解为'每',/5 意思是每五天;“,”用来表示不连续的区间。然后

分钟:0-59

小时:0-23

日期:1-31

月份:1-12

星期:0-7 (0 和 7 都表示星期日)

这么说可能有点抽象,好吧不是有点,是非常。但是,你得先大概看一下上面这些代表个啥。

然后我们来用例子讲一下

crontab -e    进入计划任务编辑表     (这个应该不难懂

然后我们来设置一个每天早上7:50自动开启 sshd 服务

50 7 * * * /usr/bin/systemctl start sshd.service            

你看,这个时间就是按照“分”“时”“日”“月”“周”的顺序排的,50是分钟,7是小时,就是七点五十,后面“日”“月”“周”都是“*”,说明什么?看看上面刚写的,“*”代表任意值,什么意思?顾名思义啊,就是随便哪天,随便哪一个月,随便周几,那不就是每天吗?

后面那一坨不管,就是代表着启动sshd服务,但是,它加了个路径,这是为什么呢?因各条计划任务在执行时并不需要用户登录,所以计划任务建议使用绝对路径,避免因缺少执行路径而无法执行命令的情况。

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

下面再来个例子,每隔五天重启一下httpd服务

0 0 */6 * * /usr/bin/systemctl httpd restart

“分”“时”都是0,就是一天的0点0分,*/6就代表,每六天,无论哪一个月或者哪周几。

那如果我想要每周一、周三、周五的下午两点半重启一下httpd服务呢

30 14 * * 1,3,5 /usr/bin/systemctl httpd restart

这个应该不用再解释了吧

我们可以用crontab -l命令来查看用户的计划任务列表

对于 root 用户来说,还可以结合“-u”选项查看其他用户的计划任务,用法和刚才的pgrep差不多,很简单的,

crontab -l -u zhangsan    就可以知道zhangsan这小子肚子里装的什么坏水

crontab -r -u zhangsan    直接删除zhangsan的计划任务,让他中道崩殂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/752496.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux创建目录——mkdir命令,du命令,touch用法,创建tree拓扑图

1. mkdir 命令 格式 mkdir - 参数 路径 / 目录名 参数 -p &#xff1a;快速创建多级目录&#xff08;递归目录&#xff09; -v &#xff1a;显示创建目录的详细过程 例&#xff1a; [rootserver ~] # mkdir t1 [rootserver ~] # mkdir t2 t3 t4 [rootserver ~] # mk…

计算机毕业设计hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

测试过程及结果 本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。 &#xff08;1&#xff09;第一轮测试中执行了个20个测试用例&#xff0c;通过16个&#xff0c;失败4个&#xff0c;其中属于严重缺陷的1个&#xff0c;属于一般缺陷的3个。 &#xff08;2&am…

百元蓝牙耳机推荐2024哪个好?蓝牙耳机性价比之王推荐

现在的百元价位的蓝牙耳机成为了许多消费者入门级的选择&#xff0c;它不仅需要满足基础的通话需求&#xff0c;更要在音质、舒适度、续航能力等多方面达到一定的标准&#xff0c;随着技术的发展和市场的竞争激烈&#xff0c;各大品牌在这一价格区间推出了极具竞争力的产品&…

万能自定义预约小程序源码系统 适合任何行业在线预约报名 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;线上预约已成为各行各业不可或缺的一部分。为满足广大企业和个人对在线预约系统的需求&#xff0c;我们特别推出了这款“万能自定义预约小程序源码系统”。该系统以其高度的灵活性和可扩展性&#xff0c;为各行各业提供了完美的在线预约…

vue+fineReport 使用前端搜索+报表显示数据

--fineReprot 将需要搜索的参数添加到模版参数 sql&#xff1a; --前端传递参数 注&#xff1a;因为每次点击搜索的结果需要不一样&#xff0c;还要传递一个时间戳的参数&#xff1a; let timesamp new Date().getTime()

Python爬取中国天气网天气数据.

一、主题式网络爬虫设计方案 1.主题式网络爬虫名称 名称&#xff1a;Python爬取中国天气网天气数据 2.主题式网络爬虫爬取的内容与数据特征分析 本次爬虫主要爬取中国天气网天气数据 3.主题式网络爬虫设计方案概述&#xff08;包括实现思路与技术难点&#xff09; reques…

2023年第十四届蓝桥杯JavaB组省赛真题及全部解析(上)

目录 前言&#xff1a; 一、试题 A&#xff1a;阶乘求和&#xff08;填空&#xff09; 二、试题 B&#xff1a;幸运数字&#xff08;填空&#xff09; 三、试题 C&#xff1a;数组分割 四、试题 D&#xff1a;矩阵总面积 五、试题 E&#xff1a;蜗牛 六、试题 F&#xff…

Appium+python自动化(二十九)- 模拟手指在手机上多线多点作战 - 多点触控(超详解)

简介 在网页中我们经常使用缩放操作来便利的查看具体的信息&#xff0c;在appium中使用MultiAction多点触控的类来实现。MultiAction是多点触控的类&#xff0c;可以模拟用户多点操作。主要包含加载add()和执行perform()两个方法. 问题思考 在使用地图App中&#xff0c;我们…

PPT怎么录制视频?这里有你想要的答案!

“有人知道ppt怎么录制视频吗&#xff1f;我正在准备一个关于新产品功能介绍的演示文稿&#xff0c;希望能将我的ppt转化为一个专业且生动的视频讲解。我尝试了一些方法&#xff0c;但不知道从哪里开始。有没有哪位朋友能分享一下自己录制ppt视频的经验吗&#xff1f;” 在数字…

问题解决:python安装依赖时网络问题报错

进行 pip install 时&#xff0c;安装轮子访问过慢而造成安装失败&#xff0c;有时候配置镜像源仍会出现莫名其妙的问题&#xff0c;包括网络代理问题等。看了一些解决方案&#xff0c;找出了一个最适合的方式&#xff0c;如下所示&#xff1a; pip install -i https://pypi.t…

React小记(五)_Hooks入门到进阶

React 16.8 版本 类组件 和 函数组件 两种组件共存&#xff0c;到目前 React 18 版本&#xff0c;官方已经不在推荐使用类组件&#xff0c;在函数组件中 hooks 是必不可少的&#xff0c;它允许我们函数组件像类组件一样可以使用组件的状态&#xff0c;并模拟组件的生命周期等一…

Eclipse代码编辑器自主配色

1. 打开 Eclipse 的设置 - Java - Editor - Syntax Coloring 2. 自定义各种类型的颜色&#xff0c;例如&#xff1a; 1. Interface 勾选&#xff0c;设置为紫色 2. Class 勾选&#xff0c;设置为淡蓝色 3. Abstract classes 勾选&#xff0c;有自己默认的颜色 …

数据分析ClickHouse学习笔记

一、ClickHouse基础 1.1 ClickHouse介绍 ClickHouse是一个用于联机分析(OLAP)的列式DBMS。 简单来说&#xff0c;相比MySQL等行式数据库&#xff0c;数据存储方式是&#xff1a; Rowidis_deltitlesexcreateAt#021a12024/2/18 5:19#130b12024/2/18 8:10#241c12024/2/18 7:38…

开源了!免费合规国内可用的 OpenAI-API 来了

你还在烦恼不能自主构建和调试AI模型吗&#xff1f;你还在为自己的AI项目寻找合适的工具和框架吗&#xff1f;如果你已有一定的AI和python基础&#xff0c;我有一个好消息要告诉你&#xff1a;lang2openai已经开源了&#xff01;这个开源项目让你可以按照openai的方式使用所有模…

【合作ACM出版,稳定EI、Scopus稳定检索】第五届城市工程与管理科学国际会议(ICUEMS 2024,8月2-4)

第五届城市工程与管理科学国际会议&#xff08;ICUEMS 2024&#xff09;将于2024年8月2-4日在天津举行。 会议的目的是为从事城市工程、管理科学相关领域的专家、学者、工程师和技术研究人员提供一个平台&#xff0c;分享科研成果和前沿技术&#xff0c;了解学术发展趋势&…

图象去噪1-使用中值滤波与均值滤波

1、中值滤波 使用中值滤波去除图像的异常像素点&#xff0c;使用cv2.cv2.medianBlur(img, 3)表示再图像在中值滤波窗口3*3的范围内&#xff0c;从下到大排序&#xff0c;将当前值替换为排序中值&#xff08;如下图所示&#xff09;将56替换为&#xff08;56&#xff0c;66,90,…

智慧海洋灾害监测预警系统解决方案

一、概述 近年来&#xff0c;我国海洋经济持续增长&#xff0c;为我国综合国力带来了新机遇。但是&#xff0c;每年由于海洋灾害带来的损失也不可忽略&#xff0c;这些灾害包括&#xff1a;风暴潮、海浪、海冰、海啸动力环境灾害、赤潮、绿潮等等。针对目前海洋监管力量薄弱&am…

Vite: 插件开发

概述 说到自定义的能力&#xff0c;肯定很容易想到 插件机制 &#xff0c;利用一个个插件来扩展构建工具自身的能力虽然 Vite 的插件机制是基于 Rollup 来设计的&#xff0c;但实际上 Vite 的插件机制也包含了自己独有的一部分&#xff0c;与Rollup 的各个插件 Hook 并非完全兼…

2024年6月京东睡眠呼吸暂停和低通气事件检测赛题-baseline

赛题地址&#xff1a;DC竞赛-大数据竞赛平台 (datacastle.cn) 一、数据集介绍 train_x训练数据集特征描述&#xff0c;其样本分布不均匀&#xff0c;0样本29808&#xff0c;1样本3221&#xff0c;2样本4520&#xff0c;共计37549条样本 第一维度&#xff1a;60 位受试样本数总…

数据恢复篇:如何在Android上恢复删除的短信

如果您不小心删除了Android设备上的短信并想要检索它们&#xff0c;则可以尝试以下方法&#xff1a; 如何在Android上恢复删除的短信 检查您的备份&#xff1a; 如果您之前备份了Android设备&#xff0c;则可以从备份中恢复已删除的短信。检查您设备的内部存储空间或 Google 云…