Linux中进程和计划任务管理(2)

news/2024/10/21 5:36:27/

一.进程命令

1.lsof

lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

格式:lsof  [选项]

选项功能
-c 字符串只列出以字符串开头的进程打开的文件。
+d 目录名列出某个目录中所有被进程调用的文件。
-u 用户名只列出某个用户的进程打开的文件。
-p pid列出某个 PID 进程打开的文件。
-i : 端口号查看哪些进程打开了这个端口

示例:

(1)lsof  -i  :80查看哪些进程打开了80端口

(2)lsof  -p  pid  列出某个 PID 进程打开的文件。

实验:

1.模拟删除大文件

删除大文件不释放空间即有用户在使用该文件

(1)向/boot/bigfile 中输入0,写满空间

(2)使用vim打开该文件

删除方法一:

(3)使用rm  -rf  命令删除该文件,我们可以看到空间并没有被释放

(4)通过使用lsof  |grep  delete命令查询到已删除文件/boot/bigfile

(5)使用kill pid 命令将其杀掉,空间得到释放

“删除”方法二:

使用“echo ”  “  > 文件名”(向该文件里输入空格,覆盖该文件)

2.误删文件可以找回(前提是有人在使用该文件)

模拟/data/test.txt文件找回

(1)打开使用该文件

(2)使用rm  -rf 命令删除该文件

(3)使用lsof  |grep  deleted  找到删除的/data/test.txt

(4)切换到该文件进程号,找到fd文件,切换到fd下以长格式显示所有文件,能够查找到已删除的文件/data/test.txt,并将其传送到/data下取名test.txt

2.监控系统资源  虚拟  资源vmstat

如果你想动态的了解一下系统资源的使用状况,以及查看当前系统中到底是哪个环节最占用系统资源,就可以使用 vmstat 命令。

vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。

字段含义:

字段含义
procs进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。
memory内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。
swap交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。
io磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。
system系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙。
cpuCPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比

3.iostat

iostat 可以提供更丰富的IO性能状态数据(此工具由sysstat包提供)

常用选项:
-c 只显示CPU行
-d 显示设备〈磁盘)使用状态
-k 以千字节为为单位显示输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标

示例:

(1)iostat 显示

(2)只显示CPU行

(3)显示设备〈磁盘)使用状态

(4)iostat 1 -d /dev/sda,只看sda硬盘,每秒刷新一次

4.内存

free  显示当前系统内存使用情况

常用选项

-h:人性化显示内存使用情况

-m:以m单位查看

示例:

人性化显示内存使用情况

实验:清除缓存

使用“echo  3  >  /proc/sys/vm/drop_caches” 清除缓存

5.uptime   系统运行了多长时间

6.mpstat     显示CPU相关统计

7.dstat       系统资源统计

二.进程管理

1.手动启动

(1)前台启动:用户输入命令,直接执行程序

(2)后台启动:在命令行尾加入“&”符号

让作业运行于后台

(1)运行中的作业: Ctrl+z 放到后台 但是会停止作业

(2)尚未启动的作业: COMMAND &

第一种把命令放入后台的方法是在命令后面加入 空格 &。使用这种方法放入后台的命令,在后台处于执行状态。

注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的

命令说明

 &

将前台命令放入后台执行

jobs

查看后台任务列表 ,会显示序号

ctrl   +z

将前台运行命令放入后台挂起

bg  序号

继续运行后台命令

fg  序号

将后台程序调回前台

示例:

(1)使用“&”命令将“dd  if=/dev/zero  of=/data/bigfile”放到后台运行,并使用jobs查看

(2)将后台程序调回前台

(3)先将前台运行中命令放入后台挂起,再继续运行后台命令

实验:并行执行任务

(1)ping 127.0.0.1&ping 127.0.0.2&ping 127.0.0.3&

(2)编辑脚本运行ping程序

前台运行:速度很慢,效率低

vim  /data/ping88

后台运行:速度快,效率高

在编辑时加上{ },并在{ }后加上“&”命令,将ping命令放入后台执行

2.结束进程

kill  命令

kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

kill  [信号]  PID 
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号,读者可以使用 kill -l 命令查看所有信号及其编号

常用的信号

信号编号信号名含义
0EXIT程序退出时收到该信息。
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2INT表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3QUIT退出。
9KILL杀死进程,即强制结束进程。
15TERM正常结束进程,是 kill 命令的默认信号。
18CONT继续运行
19STOP后台休眠

kill -l   查看所有信号及其编号

killall命令

killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用

格式:killall  [选项]  [信号]  进程名

三.计划任务

1.at一次性计划任务

at 工具

  1. 由 at 包提供

  2. 依赖与atd服务,需要启动才能实现at任务

  3. at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下

  4. 执行任务时PATH变量的值和当前定义任务的用户身份一致

at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下:

  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。

  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。

  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。

系统中默认只有 /etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 at 命令。不过,如果我们打算控制用户的 at 命令权限,那么只需把用户写入 /etc/at.deny 文件即可

示例:

2.crontab周期任务

选项功能
-u user用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。
-e编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i在删除用户的 crontab 文件时,给确认提示。

crontab  -e #进入 crontab 编辑界面

 编辑界面中“*  *  *  *  *” 的含义

项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

在时间表示中,还有一些特殊符号

特殊符号含义
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。

示例

(1)周一到周五每天17:00执行一次“cp -a”命令

(2)每3天执行一次“cp -a”命令

(3)每周一周三周五的8:30执行一次“cp -a”命令

(4)每周一周五8点到16点之间每隔两小时执行一次“cp  -a”命令

在书写 crontab 定时任务时,需要注意以下几个事项:

(1)6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。

(2)crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。

(3)在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。

(4)在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。


http://www.ppmy.cn/news/1426855.html

相关文章

大一上考核题解

文章目录 [238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/)代码题解 [73. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/)代码题解 [394. 字符串解码](https://leetcode.cn/problems/decode-string/)代码题解 [23. 合并…

Yarn--npm Windows安装使用

Yarn简介及Windows 在现代的Web开发中,JavaScript项目的依赖管理是一个复杂而重要的任务。幸运的是,我们有多种工具可以帮助我们处理这些依赖,其中之一就是Yarn。Yarn是一个由Facebook、Google、Tilde和Exponent联合开发的跨平台包管理工具&a…

NLP_知识图谱_三元组实战

文章目录 三元组含义如何构建知识图谱模型的整体结构基于transformers框架的三元组抽取baselinehow to use预训练模型下载地址训练数据下载地址 结构图代码及数据bertconfig.jsonvocab.txt datadev.jsonschemas.jsontrain.jsonvocab.json 与bert跟data同个目录model.pytrain.py…

竞争性自适应加权抽样结合偏最小二乘回归(CARS-PLS)在多变量分析中的应用(附MATLAB软件包)

竞争性自适应加权抽样结合偏最小二乘回归(CARS-PLS)在多变量分析中的应用 引言 在现代科学研究中,高维数据分析是一个日益重要的课题。由光谱学、色谱学和其他高通量测量技术产生的数据集通常包含大量的冗余和噪声,这给模型建立和预测带来了挑战。竞争性自适应加权抽样结…

LM Studio:一个桌面应用程序,旨在本地计算机上运行大型语言模型(LLM),它允许用户发现、下载并运行本地LLMs

LM Studio是一个桌面应用程序,旨在本地计算机上运行大型语言模型(LLM)。它允许用户发现、下载并运行本地LLMs,支持在Windows、Linux和Mac等PC端部署2510。LM Studio的安装过程涉及访问其官网并选择相应操作系统的版本进行下载安装。安装成功后,用户可以通过该软件选择并运…

【Gradle如何安装配置及使用的教程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

vue 3 中i18n字符串 转义问题

文章目录 前言原因分析解决方案1. 特殊字符的转义2. 占位符与变量插值3. HTML标记4. 多行字符串 前言 本地没有问题,打包就有问题,最后排查是i18n问题,这里记录下 原因分析 特殊符号被误解析:某些特殊符号可能在字符串解析时被特…

怎么用3ds MAX制作蜂窝状模型?

1、新建多边形:打开3ds MAX软件,在样条线中新建一个多边形。 2、设置参数:切换到顶视图,设置多边形的参数,例如半径为10,变数为6,以形成一个六边形的基础。 3、复制并形成圆柱状:打开…