Linux之进程管理篇(2)

这篇具有很好参考价值的文章主要介绍了Linux之进程管理篇(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

管理进程任务

1. 监视查看进程

1.1 ps命令

格式: ps  [选项]

作用:显示进程的状态。没有选项的时候显示当前用户在当前终端启动的进程。

选项:*高亮的为常用选项

a

显示所有进程

u

指定用户的所有进程

x

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

c

显示进程的真实名称k|--sort 属性 对属性排序,属性前加 - 表示倒序    ps aux k -%cpu

e

显示环境变量

f

显示程序间的关系

r

显示当前中断的进程

T

显示当前终端的所有进程

-e

显示系统内所有的进程信息,等同于-A

-f

使用完整的格式显示进程信息

-l

将目前属于用户自己这次登入的PID与相关信息列示出来,使用长格式显示

-o

pid,ppid,pgrp,tpgid,cmd、%cpu、%mem... 选项显示定制的信息,输出指定的字段

-H

显示树状结构

-a

显示统一终端下的所有程序

-N

反向选择

k|--sort

对属性排序,属性前加 - 表示倒序    ps aux k -%cpu

ps aux命令输出格式的各字段详解:

Linux之进程管理篇(2),linux,运维,服务器

选项

功能

USER

行程拥有者,该进程是由哪个用户产生的

PID

pid,进程的 ID

%CPU

CPU使用率

%MEM

内存使用率

VSZ

占用的虚拟内存的大小

RSS

占用实际物理内存的大小

TTY

终端的次设备号,该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程

START

进程的状态如下:

D:不可中断的静止,通常用于 I/O 情况。

R:正在执行中

S:静止状态,可以被唤醒

T:暂停执行

Z:僵尸状态

W:没有足够的内存分页可分配,内存交互状态

X:死掉的进程(应该不会出现)

<:高优先序的行程

N:低优先序的行程

L:有记忆体分页分配并锁在内存内

s:包含子进程

l:多线程(小写 L)

+:位于后台。

START

进程开始的时间

TIME

执行的时间,该进程占用 CPU 的运算时间,注意不是系统时间

COMMAND

所执行的命令

ps  -elf命令输出格式的各字段详解:

Linux之进程管理篇(2),linux,运维,服务器

选项

功能

F

进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限

S

进程状态。具体的状态和"psaux"命令中的 STAT 状态一致

UID

运行此进程的用户的 ID

PID

进程的 ID

PPID

父进程的 ID

C

该进程的 CPU 使用率,单位是百分比

 PRI 

进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改

NI

 进程的优先级,数值越小,该进程越早被执行;可以人为修改 

ADDR

该进程在内存的哪个位置

SZ

该进程占用多大内存

WCHAN

该进程是否运行。"-"代表正在运行

TTY

该进程由哪个终端产生

TIME

该进程占用 CPU 的运算时间,注意不是系统时间

CMD

产生此进程的命令名

部分相关选项所拓展的综合命令:

1)与grep组合用法,查找特定的进程

Linux之进程管理篇(2),linux,运维,服务器

2)列出类似程序树的程序显示

Linux之进程管理篇(2),linux,运维,服务器

3)找出与cron与syslog这两个服务有关的PID

Linux之进程管理篇(2),linux,运维,服务器

4)如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令

Linux之进程管理篇(2),linux,运维,服务器

拓展:

prtstat命令

作用:查看进程信息

Linux之进程管理篇(2),linux,运维,服务器

1.2 pstree命令

格式:pstree  [选项]

作用:以树状的方式表项进程的父子关系。清楚的表达进程间的相互关系。如果指定用户名称,会以隶属于该用户的第一个进程作为根然后显示该用户的所有进程;如果不指定,则会把系统启动时的第一个进程视为根,并显示之后的所有进程。不加选项,默认只显示各进程的名称。

Linux之进程管理篇(2),linux,运维,服务器

主要选项:*高亮的为常用选项

-a

显示每个程序的完整指令,包含路径,参数或是常驻服务的标示

-c

不使用精简标示法

-G

使用VT100终端机的列绘图字符

-h

列出树状图时,特别标明现在执行的程序。

-H

和-h类似,但特别标明(高亮显示)指定的程序

-l

采用长列格式显示树状图

-n

用程序识别码排序,预设是以程序名称来排序

-p

显示程序识别码(PID)

-u

显示用户名称

-U

使用UTF-8列绘图字符

-T

不显示线程thread,默认显示线程

Linux之进程管理篇(2),linux,运维,服务器

1.3 top命令

格式:top  [-d秒数]

功能:动态显示CPU利用率,内存利用率和进程状态等相关信息,是目前使用最广泛的实时系统性能监视系统。默认每5秒更新显示信息,"  -d秒数  "选项可指定刷新频率。

ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

主要选项:

-b

以批处理模式显示程序信息,一般和"-n"选项合用,用于把 top 命令重定向到文件中

-c

显示完整命令

-d

指定 top 命令每隔几秒更新。默认是 3 秒

-n

指定 top 命令执行的次数(也可以表示更新几次后停止更新显示),一般和"-"选项合用

-S

以累积模式显示程序信息

-s

使 top 命令在安全模式(不使用交互指令)中运行,避免在交互模式中出现错误

-p

查看指定 ID 的进程

-u   用户名

只监听某个用户的进程

然后执行top命令后,在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作

?或 h

显示交互模式的帮助

c

按照CPU的使用率排序,默认遵循此选项排序

M

按照内存的使用率排序

N

按照PID排序

T

按照CPU的累积运算时间排序,也就是按照“TIME+项”排序

k

按照PID给予某个进程一个信号,一般用于终止某个进程,信号9是强制中止的信号

r

按照PID给某个进程重设优先级(Nice)值

q

退出top命令

2. 搜索查找进程

pgrep命令

格式: pgrep   [options]  pattern

作用:通过程序的名字或其他属性查找进程,一般用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了。pgrep程序检查系统中活动的进程,报告进程属性,匹配命令行上指定条件的进程ID。每一个进程 ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

-U或-u

指定用户进程

-l

显示进程名

-a

显示完整格式的进程名

-P

显示指定进程的子进程

注:有时候已知程序名不知道pid号,我们可以使用如下命令:

pidof   命令

作用:根据进程名 来找pid号

3. 控制管理进程

3.1 kill命令

格式:kill  [信号]  PID

作用:kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。而且通常中止一个前台进程可以使用Ctrl+c,对于后台进程就需要使用kill命令来中止,就需要先使用ps/pidof/pstree/top/等工具获取PID。

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

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

Linux之进程管理篇(2),linux,运维,服务器

日常主要的信号代码如下:

-0

给所有在当前进程组中的进程发送信号,程序退出时收到该信息

-1

挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化

-2

表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号

-3

退出

-9

杀死进程,即强制结束进程

-11

段错误

-15

正常结束进程,是 kill 命令的默认信号

-17

将进程挂起

-19

将挂起的进程激活

3.2 killall命令

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

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

选项:

-i

交互式,询问是否要杀死某个进程

-l

忽略进程名的大小写

3.3 pkill命令

格式:pkill  [信号代码]  进程名

作用:当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。

前台进程与后台进程

默认情况下,一个命令执行后,此命令将独占Shell,并拒绝其他输入。称为前台进程。反之,则称为后台进程。对每一个终端,都允许有多个后台进程。对前台进程/后台进程的控制与调度,被称为任务控制。

将一个前台进程放入后台:

command &           #将一个进程直接放入后台。

ctrl + z            #将一个正在运行的前台进程暂时停止,并放入后台。

控制后台进程:

jobs                       #列出系统作业号和名称

fg  [%作业号]              #前台恢复运行

bg  [%作业号]              #后台恢复运行

kill [%作业号]             #给对应的作业发送中止信号

注:& 还可以并行执行任务

如:ping 127.0.0.1&ping 127.0.0.2&ping 127.0.0.3&

调度进程

1. at 调度

格式:at  [选项]  [时间]

作用:设置指定时间执行指定的命令(一次性的调度)

选项

-f

从指定文件而非标准输入设备获取将要执行的命令

-l

显示等待执行的调度作业

-d

删除指定的调度作业

进程开始执行的时间格式如下:

绝对计时法:

HH:MM

采用24小时计时制,如果采用12小时计时制,则需要在时间后面加上AM或PM。

比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。

MMDDYY 或 MM/DD/YY 或 DD.MM.YY

指定具体日期,必须在 “HH:MM” 后,比如 011518 表示 2018 年 1 月 15 号。

相对计时法:

now+时间间隔

以 minutes、hours、days 或 weeks 为单位

例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

直接计时法:

today                          今天

tomorrow                    明天

Midnight(midnight)深夜,代表 12:00 AM(也就是 00:00)

Noon(noon)           中午,代表 12:00 PM(相当于 12:00)

Teatime(teatime)   下午茶,代表 4:00 PM(相当于 16:00)

2. batch调度

格式:batch  [选项]  [时间]

作用:与at命令几乎一模一样,二者命令的选项也相同。唯一的区别在于,如果不指定运行时间,进程将在系统较空闲时运行。batch调度适合于时间上要求不高,但是运行时占用系统资源较多的工作。

3. cron调度

at调度和batch调度中指定的命令只能执行一次,但是实际工作时,,有些命令需要在指定日期和时间重复执行,这时,cron调度就能很好满足这一点。

cron调度与crond进程 , crontab命令和crontab配置文件有关。

3.1 crontab配置文件

用户的crontab配置文件保存于 “/var/spool/cron” 目录中,其文件名与用户名相同。crontab配置文件保存cron调度的内容,共有6个字段,从左到右依次为分钟、时、日期、月份、星期和命令,如表所示。

字段

*

*

*

*

*

分钟

日期

月份

星期

命令

取值范围

0~59

0~23

01~31

01~12

0~6,0为星期天

1)所有字段不能为空,字段之间用空格分开,如果不指定字段内容,则使用 *符号,代表任何时间。

2)可使用 “-”符号表示。如在日期字段中输人“1一5”,表示每个月前5天每天都要执行该命令。

3)可使用 "," 符号来表示指定的时间。如在日期字段中输入“5,15,25”,则表示每个月的5日、15日        和25日都要执行该命令。

4)可使用 "/(正斜线)" 代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一          次命令。

5)如果执行的命令未使用输出重定向,那么系统把执行结果以邮件的方式发送给crontab文件的          所有者,用户可用mail命令查看邮件。

3.2 crontab 命令

格式: crontab  [选项]

作用:维护用户的crontab配置文件

选项

-e

创建并编辑crontab配置文件

-l

显示crontab配置文件的内容

-r

删除crontab配置文件

-i

在删除用户的 crontab 文件时,给确认提示。

-u

用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行

3.3 crond进程

crond进程在系统启动时自动启动,并一直运行于后台。crond 进程负责检测crontab配置文件,并按照其设置内容定期重复执行指定的cron调度工作。创建或修改了crontab配置文件后,要用“service crond restart”命令重启crond服务。

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

6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。文章来源地址https://www.toymoban.com/news/detail-821936.html

到了这里,关于Linux之进程管理篇(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【探索 Kubernetes|作业管理篇 系列 15】DaemonSet 的”过人之处“

    大家好,我是秋意零。 在上一篇中,我们讲解了 StatefulSet 的存储状态;我们发现,它的存储状态,就是利用了 PV 与 PVC 的设计。StatefulSet 自动为我们创建 PVC 并且以 pvc-name-pod-name-编号 命名,从而始终与 Pod 编号名一致的绑定。 需要注意的是 :StatefulSet 的“滚动更新”是从最

    2024年02月11日
    浏览(22)
  • 【探索 Kubernetes|作业管理篇 系列 11】控制器的核心功能

    大家好,我是秋意零。 上一篇结束了 Pod 对象的内容。 今天要探讨的内容是 “控制器”,它是 Kubernetes 编排最核心的功能。理解了 “控制器”,你就能理解 Deployment、StatefulSet、DaemontSet、Job、CroJob 控制器对象。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬

    2024年02月11日
    浏览(24)
  • 【探索 Kubernetes|作业管理篇 系列 10】Pod 健康检查和恢复机制

    大家好,我是秋意零。 上一篇中介绍了,Pod 的服务对象,从而对 Pod 有了更深的理解; 今天的主题是 Pod 健康检查和恢复机制,我们将结束 Pod 的内容。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持!在我主页推广区域,如图: 文章底部推广区域

    2024年02月09日
    浏览(29)
  • U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器

    AssetBundle是将资源使用Unity提供的一种用于存储资源的压缩格式打包后的集合,它可以存储任何一种Unity可以识别的资源,如模型,纹理图,音频,场景等资源。也可以加载开发者自定义的二进制文件。他们的文件类型是.assetbundle/.unity3d,他们先前被设计好,很容易就下载到我们

    2024年02月09日
    浏览(28)
  • 【探索 Kubernetes|作业管理篇 系列 16】离线业务 Job、CronJob

    大家好,我是秋意零。 在上一篇中,我们讲解了 DaemonSet 控制器,相信你以及理解了其的工作过程,分为三部。一是,获取所有 Node 节点中的 Pod;二是,判断是否有符合 DaemonSet 管理的 Pod;三是,通过“亲和性”和“容忍”来精确控制并保证 Pod 在目标节点运行。 今天的内容

    2024年02月12日
    浏览(29)
  • 【管理篇 / 升级】❀ 13. FortiOS 7.4固件升级新规则 ❀ FortiGate 防火墙

    【简介】飞塔防火墙的固件升级一直是所有厂家中最好的。只要有注册官方帐号,有注册设备,并且只要有一台设备在服务期内,即可下载所有型号的所有版本的固件。即使其它设备服务期已过,也可以通过固件文件手动升级,避免防火墙受到漏洞攻击。但是从7.4版本开始,

    2024年01月17日
    浏览(40)
  • 【探索 Kubernetes|作业管理篇 系列 7】探究 Pod 有什么用,为什么需要它

    大家好,我是秋意零。 前一篇,我们介绍了如何从 0 到 1 搭建 Kubernetes 集群。现在我们可以正式了解,Kubernetes 核心特征了。 今天我们来探究 Pod,为什么需要 Pod? 👿 简介 🏠 个人主页 : 秋意零 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟 “省赛”、“国

    2024年02月09日
    浏览(41)
  • 【管理篇 / 恢复】❀ 08. 文件权限对macOS下用命令刷新固件的影响 ❀ FortiGate 防火墙

    【简介】虽然上篇文章中成功的在macOS下刷新了固件,但是很多小伙伴在实际操作中碰到了无法成功的状况,我们来看看最常见的一种。  在/private/tftpboot目录拷贝另一个版本的固件文件,具体拷贝过程不再详述。  打开终端,输入命令  sudo launchctl load -F /System/Library/LaunchDa

    2024年02月02日
    浏览(27)
  • 【探索 Kubernetes|作业管理篇 系列 8】探究 Pod 的 API 对象属性级别与重要字段用法

    大家好,我是秋意零。 本专栏上一篇中,我们介绍了 Pod 的核心思想以及 Pod 的工作原理。今天我们还是探讨 Pod ,聊一聊 Pod 的基本概念。 👿 简介 🏠 个人主页 : 秋意零 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟 “省赛”、“国赛” ,并斩获多项奖项荣

    2024年02月08日
    浏览(37)
  • 物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

    下面来给大家做个简单的数据对接,也就是通过写JAVA代码实现MQTT协议 首页我们得搭建一个简单的IDEA项目,这个我就不做演示了 搭建完项目,我们需要准备一些jar包,jar包名如下: org.eclipse.paho.client.mqttv3-1.1.0.jar mysql-connector-java-5.1.34.jar jackson-databind-2.10.0.jar jackson-core-2.10.0

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包