程序:一组计算机能识别和执行的指令集合,可以按照既定的逻辑控制计算机运行来完成特定的功能。 区别和关系: 线程:操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 线程与进程的关系: 手工启动进程指的是由用户输入命令直接启动一个进程,根据所启动的进程类型和性质的不同,又可以细分为前台启动和后台启动 2 种方式。 在 Linux 系统中,任务可以被配置在指定的时间、日期或者系统平均负载量低于指定值时自动启动,执行结果会通过邮件发给用户。这里需要使用到 at 命令和crontab 命令。 at, batch, atq, atrm – queue, examine or delete jobs for later execution(排队、检查或删除作业以供以后执行) 可以看到上面的 at 说明中还有其他相关命令,其中: at 命令在使用之前需要安装,并开启独立的 atd 服务。 ① 三天后重启网络; ② 查看at的定时任务 ③ 查看at的定时任务的实际内容 ④ 删除at的定时任务 crontab – maintain crontab files for individual users(为单个用户维护crontab文件) 首先来了解一下 crond,它是Linux下用来周期性地执行某种任务或等待处理某些事件的一个守护进程,与Windows的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程。crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则会自动执行该任务。 使用 crontab -e 可以编辑用户自己的计划任务(一个空文件,格式需要自己编写),如果定时任务需要系统执行,这是就需要编辑 /etc/crontab 这个配置文件。 用户自己的计划任务的规则语法格式,与系统定时任务大同小异,也是以行为单位,一行则为一个计划,但唯一的区别是不需要指定用户名:分 时 日 月 周 需要执行的命令 。 下面我们对计划任务的规则语法格式具体进行介绍; 取值范围: 四个符号: 超级管理员可以通过配置 /etc/cron.allow (白名单) 和 /etc/cron.deny (黑名单) 两个文件来限制某些用户是否可以使用 crontab 命令,配置时在这两个名单中每行写一个用户名,即可达到效果。 ① 每小时的第5分钟和第15分钟向 /tmp/testfile 文件内写入当前时间; ② 每天上午的8~12点的第5分钟和第15分钟重启网络 ③ 每隔2天的上午的8-12点的第5分钟和第15分钟重启系统 ④ 每星期一的晚上23:30重启crond服务 一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。 一般而言,进程与作业控制相关联时,才被称为作业。 ① 在命令后面加上” &”(&前面有空格),可以把这个命令放到后台执行。 ② 命令执行过裎中按 Ctrl+Z 组合键,命令会放到后台并处于暂停状态。 使用 jobs 命令可以查看当前终端放入后台的工作,命令语法: jobs 命令 [&] ; 命令常用选项 实例 查看放入后台的作业; 当前终端有三个后台作业。其中,第一个字段为工作号;”+/-” 代表最近 “第一个/第二个”放入后台的作业;因为使用 -l 选项,所以第三个字段列出了进程的 PID;第四个字段表示作业的状态,Done、run、Stopped 和 terminated 分别表示 完成、运行中、暂停、终止状态;最后一个字段为启动作业的命令。 前面我们讲到将作业放入后台,使用 Ctrl+z 组合键时,作业进入后台并且处于暂停状态。有什么办法让作业在后台恢复执行吗? 答案是有的!这就需要用到 bg 命令。命令语法: bg %工作号 ; 之前所讲的都是讲作业放到后台执行,那么有什么办法让后台作业恢复到前台执行吗? 答案当然是有的!fg 命令就可以做到!命令语法: fg %工作号 ; 很简单,使用 kill %工作号 就可以! 一般当我们断开终端时,终端会收到SIGHUP信号从而关闭所有子进程。如果不希望某些进程被这个SIGHUP信号影响,就需要用到 nohup 命令。nohup 命令可以让后台作业在离开终端时,也能正确地在后台执行。命令语法: nohup 命令 & ; tips: ① 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。 在Linux系统中,表示进程优先级的有两个数值:nice(NI) 和 priority(PR)。其中,我们只能通过修改nice值(也叫静态优先级)来调整进程优先级,因为priority值是由内核动态调整的(也叫动态优先级),用户是不能直接修改的。 他们之间存在着这样的关系: PR(最终值)= PR (原始值) + NI 所以说,nice值越小,进程的优先级就越高;反之,nice值越大,进程的优先级就越低。我们可以通过 renice 命令来调整一个进程的nice值。 ① 使用ps命令; ② 使用top命令; 可以通过 nice 命令和 renice 命令 对 nice 值进行调整。其中,nice命令可以对要启动的程序赋予 nice 值,而 renice命令可以对进程的 nice 值进行修改。 ① nice命令; 命令语法: nice [-n nice值] 命令 ; ② renice命令; 命令语法: renice [nice值] PID ; 通常我们使用 ps -aux 和 ps -ef 配合管道符号(|)来查看特定进程的状态信息。 下表对各字段的含义进行解释: 下表对各字段的含义进行解释: 查看http服务的进程状态; 使用命令 yum install psmisc 安装 pstree 命令。 查看进程树 ① 查看httpd服务的进程 ID 和名称; ② 查看httpd服务最先启动的进程 ID; 如果需要查看所有信号及其对应编号,可以使用 kill -l 命令,通过对这里的了解,我们可以知道kill 命令只是发送一个”信号”,所以只有当信号被成功捕获的时候 kill 命令才能发挥相应的作用。 ① 结束httpd服务的一个子进程; ② 重启进程; 结束httpd服务; ① 结束httpd服务; ② 踢出登录用户; 第一行为任务队列信息,与 uptime 命令执行结果相同,具体含义如下: 第二行为进程(Tasks) 信息,具体含义如下: 第三行为 CPU(Cpu(s)) 信息,具体含义如下: 第四行为物理内存(Mem) 信息,具体含义如下: 第五行为交换分区(Swap) 信息,具体含义如下: 再往下所有行为系统进程信息,各字段的含义如下: ① 显示全部CPU核心的负载情况; 在 top 基本视图中,按下键盘数字”1″,可以显示全部CPU核心的负载情况。再次按下”1″,就会隐藏它们。 按下键盘”b”,可以进入背光模式,默认为当前处于运行(running)态的进程加上背光。按键”y”可以对处于运行(running)态的进程加上/取消背光,按键”x”可以对排序字段加上/取消背光 ③ 字段排序; top 默认是以占用CPU的百分比来排序的,通过组合键”shift + >”或”shift + <“可以向右或向左改变排序列。 下表对各字段的含义进行解释: 使用vmstat检测系统,每隔1秒刷新一次,共刷新3次,同时输出时间戳; 下表对各字段的含义进行解释: ① 递归查看 /usr/bin 目录下所有打开的文件; ② 查看某个文件被哪个进程调用; ③ 列出httpd服务的进程所打开的文件; ④ 列出使用特定的tcp端口的进程;一、什么是程序和进程?
进程:正在运行的程序,是操作系统进行资源分配和调度的基本单位,每个进程都有独立的地址空间,并且占用一定的系统资源。
① 程序是静态的,它只是一组指令的集合,而进程是程序运行的动态过程。
② 进程和程序并不是一一对应的关系,同一个程序运行在不同的数据集上就是不同的进程。
③ 程序是封闭的,而进程具有并发性和交往性。二、什么是线程?
① 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
② 线程不能单独执行,但每一个线程都有程序入口、执行序列以及程序出口,它必须组成进程才能被执行。三、进程的生命周期
父进程调用fork()系统调用得到一个新的(子)进程描述且分配一个唯一的进程ID(PID),并复制该值到父进程描述的子进程中,父子进程共享相同的地址空间,此时父进程将被堵塞,直到子进程退出或执行exec()系统调用才会继续运行。
exec()系统调用复制新的程序到子进程的地址空间,因为与父进程共享地址空间,会产生一个分页错误,系统会为子进程分配新的物理内存。
当程序执行完成后,子进程会调用exit()系统调用,释放进程大部分的数据并发送一个信号通知其父进程。此时子进程就变为一个僵尸进程(zombie)。
当父进程接受到了子进程的终止信号,它会释放子进程的所有的资源。四、进程启动方式
1、手动启动
Ⅰ、前台启动
手工启动一个进程的最常用的方式,在 Shell 提示处输入命令后,创建一个子进程并运行命令,Shell 等待命令退出,然后返回到对用户给出提示符。这条命令与 Shell 同步运行,即在前台运行,用户在它完成之前不能执行别的命令。
Ⅱ、后台启动
在 Shell 提示处输入命令时,在其后加一个” &”(&前面有空格),创建一个子进程并运行命令,但不等待命令退出,而直接返回到对用户给出提示符。这条命令与 Shell 异步运行,即在后台运行。进程直接从后台运行,用的相对较少,除非该进程非常耗时,且用户也不急着需要其运行结果的时候,且后台进程必须是非交互式的。2、调度启动(定时任务)
(1)、at 命令
如果某项工作在特定的时间执行一次,就可以使用 at 命令。
命 令
解 释
atq
列出用户的计划任务,如果是超级管理员则会列出所有用户的计划任务
atrm
根据工作号删除 at 的定时任务
batch
在系统空闲的情况下执行 at 定时任务
[root@localhost ~]# yum install at //安装at命令 [root@localhost ~]# service atd start //启动atd服务 Starting atd: [ OK ]
at [选项] 时间
选 项
作 用
-m
当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户
-d
删除某个工作,同 atrm 命令的作用相同
-l
列出当前所有等待运行的工作,和 atq 命令的作用相同
-f 文件
读取脚本文件
-c 工作号
根据工作号显示 at 工作的实际内容
格 式
解 释
HH:MM
24小时制,例如:13:14
Midnight
表示 00:00
Noon
表示 12:00
Teatime
表示 16:00
MMDDYY
MM/DD/YY
MM-DD-YY
MM.DD.YY例如:021520,表示2020年2月15日
now + 时间
相对时间,时间单位可选:minutes、hours、days 和 weeks ,例如:now + 5 minutes,表示5分钟后执行
[root@localhost ~]# at now + 3 days at> service network restart job 1 at 2020-04-25 18:53 //使用Ctrl+d组合键保存
[root@localhost ~]# atq //两个命令都可以 1 2020-04-25 18:53 a root [root@localhost ~]# at -l 1 2020-04-25 18:53 a root
[root@localhost ~]# at -c 1 //查看工作号为1的任务实际内容 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 umask 22 ...省略部分内容 service network restart //这里就是啦 marcinDELIMITER53857a3a
[root@localhost ~]# atrm 1 [root@localhost ~]# at -d 1 //两个命令都可以 Cannot find jobid 1 //因为上一个命令已经删除工作号为1的作业,所以找不到作业 [root@localhost ~]# atq
(2)、crontab 命令
在前面所讲到的 at 命令只能在特定时间执行一次任务,显然在实际工作中是不够的,这就需要 crontab 命令来重复执行定时任务。
crontab [选项]
选 项
作 用
-u user
指定用户,如果不指定,则表示当前用户
-l
列出指定用户的计划任务列表
-e
编辑指定用户的计划任务列表
-r
删除指定用户的计划任务列表
-i
交互模式,即给出确认提示
[root@localhost ~]# cat /etc/crontab #/etc/crontab 文件对计划任务的格式有一定的提示信息,我们以它来初步了解计划任务的语法格式 SHELL=/bin/bash #标识使用的Shell PATH=/sbin:/bin:/usr/sbin:/usr/bin #指定PATH环境变量 MAILTO=root #如果命令结果或报错有输出,则会向root发送信息 HOME=/ #标识主目录 # For details see man 4 crontabs #以上内容是crontab的环境变量,用户编写自己的计划任务时不需要写的哦! # Example of job definition: #系统计划任务的规则语法格式 # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed #在编写系统定时任务时,一定要注意指明 user—name
时 间
范 围
分 (一小时中的第几分钟)
0~59
时 (一天中的第几时)
0~23
日 (一个月中的第几日)
1~31
月 (一年中的第几月)
1~12
周 (一个周中的星期几)
0~7,0和7表示星期天
符 号
含 义
*
表示取值范围中的每一个数字
–
表示连续的时间范围。在周的位置写:1-7,表示周一到周天
,
表示间断的时间范围。在时的位置写:1,4,7,表示1点、4点和7点
/
代表每隔多久执行一次。在分的位置写:*/10,表示每隔十分钟
① 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。
② 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入的用户则可以使用 crontab 命令。
③ 白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则可以使用 crontab 命令。
5,15 * * * * date >> /tmp/testfile
5,15 8-12 * * * service network restart
5,15 8-12 */2 * * reboot
30 23 * * 1 service crond restart
五、作业控制
1、什么是作业和作业控制?
作业控制指的是控制正在运行的进程的行为,比如:启动、停止、强制终止、恢复以及异步运行作业的这些功能,让shell可以在子进程运行期间返回接受其他命令。2、将作业放入后台
[root@localhost ~]# sleep 1m & [1] 1850 //工作号(每个后台命令都会分配) 进程号
[root@localhost ~]# sleep 1m ^Z [1]+ Stopped sleep 1m
3、查看当前终端放入后台的作业
选 项
作 用
-l
列出进程的 PID
-p
只列出进程的 PID
-r
只列出运行中的进程
-s
只列出已停止的进程
-n
只列出最近一次状态改变的进程
[root@localhost ~]# jobs -l [1] 1850 Done sleep 1m & [2]- 1851 run sleep 2m [3]+ 1852 Stopped sleep 3m
4、将后台暂停的作业恢复执行
[root@localhost ~]# sleep 1m //使用Ctrl+z键将作业放入后台并暂停状态 ^Z [1]+ Stopped sleep 1m [root@localhost ~]# bg %1 //恢复执行状态 [1]+ sleep 1m & [root@localhost ~]# jobs //查看状态 [1]+ Running sleep 1m &
5、将后台作业恢复前台执行
[root@localhost ~]# sleep 1m & //后台执行作业 [1] 2072 [root@localhost ~]# fg %1 //恢复前台执行状态 sleep 1m
6、杀死后台作业
[root@localhost ~]# sleep 1m & //后台执行作业 [1] 2073 [root@localhost ~]# kill %1 //杀死工作号为1的作业 [root@localhost ~]# jobs //终止状态 [1]+ Terminated sleep 1m
7、不挂断地运行作业
[root@localhost ~]# nohup ping www.baidu.com & [1] 2413 [root@localhost ~]# nohup: 忽略输入并把输出追加到 `nohup.out'
② 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
③ 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。六、进程优先级
PR(最终值)数值越小,代表该进程的优先级越高,在同一个CPU调度周期中所占的时间更长。
其中,我们需要注意的是:
① nice的取值范围为:fuhao-20~19,一共四十个级别;
② 普通用户只能调整自己的进程,调整nice值的范围为 0~19,且不能降低nice值,即只能降低进程的优先级;
③ root用户可以调整任何用户的进程,并且在nice值的取值范围内可以任意调整。1、查看nice值
[root@localhost ~]# ps -le //第八个字段即为nice值 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 4840 poll_s ? 00:00:01 init 1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0 1 S 0 4 2 0 80 0 - 0 ksofti ? 00:00:00 ksoftirqd/0 1 S 0 5 2 0 -40 - - 0 cpu_st ? 00:00:00 stopper/0 ...省略部分信息
[root@localhost ~]# top //第四个字段即为nice值 top - 20:00:35 up 5:56, 1 user, load average: 0.08, 0.03, 0.05 Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1004136k total, 235572k used, 768564k free, 47332k buffers Swap: 2097148k total, 0k used, 2097148k free, 54556k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2665 root 20 0 15024 1292 996 R 0.3 0.1 0:00.41 top 1 root 20 0 19360 1524 1228 S 0.0 0.2 0:01.41 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 ...省略部分信息
2、修改nice值
[root@localhost ~]# nice -n -5 /usr/local/httpd-2.4.41/bin/apachectl start //启动httpd服务并赋予nice值为-5 [root@localhost ~]# ps -le | grep httpd //可以看到所有的httpd进程nice值都为-5 1 S 0 2117 1 0 75 -5 - 17593 poll_s ? 00:00:00 httpd 5 S 2 2118 2117 0 75 -5 - 103658 pipe_w ? 00:00:00 httpd 5 S 2 2119 2117 0 75 -5 - 103658 pipe_w ? 00:00:00 httpd 5 S 2 2120 2117 0 75 -5 - 103658 pipe_w ? 00:00:00 httpd
[root@localhost ~]# /usr/local/httpd-2.4.41/bin/apachectl start //启动httpd服务 [root@localhost ~]# ps -le | grep httpd //查看httpd服务的进程信息 1 S 0 21910 1 0 80 0 - 17593 poll_s ? 00:00:00 httpd 5 S 2 21911 21910 0 80 0 - 103658 pipe_w ? 00:00:00 httpd 5 S 2 21912 21910 0 80 0 - 103658 pipe_w ? 00:00:00 httpd 5 S 2 21913 21910 0 80 0 - 103658 pipe_w ? 00:00:00 httpd [root@localhost ~]# renice -10 21913 //修改进程号为21913的进程nice值为-10 21913: old priority 0, new priority -10 [root@localhost ~]# ps -le | grep httpd | grep 21913 //可以看到已经修改成功 5 S 2 21913 21910 0 70 -10 - 103658 pipe_w ? 00:00:00 httpd
七、进程管理命令
1、ps命令
ps – report a snapshot of the current processes(查看当前系统中所有运行进程的状态)
ps [选项]
选 项
作 用
a
显示所有终端的所有进程,除了阶段作业领导者之外
-a
显示当前终端的所有进程,包括其他用户的进程
-u
显示进程的归属用户及内存的使用情况
x
显示没有控制终端的进程
-A 或 -e
显示所有进程
-f
显示较为详细的信息
-l
长格式显示更加详细的信息
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19360 1524 ? Ss 21:47 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 21:47 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 21:47 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 21:47 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 21:47 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 21:47 0:00 [watchdog/0] ...省略部分信息
字 段
含 义
USER
运行该进程的用户名称
PID
该进程的 ID
%CPU
该进程占用CPU的百分比
%MEM
该进程占用物理内存的百分比
VSZ
该进程占用虚拟内存的大小,单位为 KB
RSS
该进程占用实际物理内存的大小,单位为 KB
TTY
该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端,pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端
STAT
该进程的状态。D:不可中断的睡眠状态,通常用于 I/O 情况;S:睡眠状态,可被唤醒;T:停止状态;R:正在运行;Z:僵尸进程,进程已经终止,但仍然占用一些系统资源;-<:高优先级;-N:低优先级;-s:包含子进程;-l:多线程;-+:位于后台
START
进程的启动时间
TIME
该进程占用 CPU 的时间
COMMAND
产生该进程的命令名
[root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 4840 poll_s ? 00:00:01 init 1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0 1 S 0 4 2 0 80 0 - 0 ksofti ? 00:00:00 ksoftirqd/0 1 S 0 5 2 0 -40 - - 0 cpu_st ? 00:00:00 stopper/0 1 S 0 6 2 0 -40 - - 0 watchd ? 00:00:00 watchdog/0 ...省略部分信息
字 段
含 义
F
进程标志,表示进程的权限,常见的有:1 进程可以被复制,但不能被执行;4 进程使用超级用户权限
S
该进程的状态,具体与”ps aux”中的STAT字段相同
UID
运行该进程的用户 ID
PID
该进程的 ID
PPID
该进程父进程的 ID
C
该进程占用CPU的百分比
PRI
动态优先级(priority),由内核动态调整
NI
静态优先级(nice),用户可以进行调整
ADDR
该进程在内存中的位置
SZ
该进程占用内存的大小
WCHAN
该进程是否运行。”-“代表正在运行
TTY
该进程是在哪个终端运行的
TIME
该进程占用 CPU 的时间
CMD
产生该进程的命令名
[root@localhost ~]# ps -ef | grep httpd root 2155 1 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2157 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2158 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2159 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2160 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2161 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2162 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2163 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd apache 2164 2155 0 00:44 ? 00:00:00 /usr/sbin/httpd root 2166 1804 0 00:44 pts/0 00:00:00 grep httpd
2、pstree命令
pstree – display a tree of processes(以树形结构显示进程之间的关系)
ps [选项]
选 项
作 用
-A
使用ASCII字符绘制树
-U
使用UTF-8字符绘制树
-p
显示进程的 PID
-u
显示进程对应的用户名称
[root@localhost ~]# pstree init─┬─NetworkManager─┬─dhclient //其中init进程是系统启动的第一个进程,是系统中所有进程的父进程 │ └─{NetworkManager} ├─atd ├─auditd───{auditd} ├─crond ├─dbus-daemon───{dbus-daemon} ├─hald─┬─hald-runner─┬─hald-addon-acpi │ │ └─hald-addon-inpu │ └─{hald} ├─master─┬─pickup │ └─qmgr ├─6*[mingetty] ├─modem-manager ├─rsyslogd───3*[{rsyslogd}] ├─sshd─┬─sshd───bash───pstree │ └─sshd───sftp-server ├─udevd───2*[udevd] └─wpa_supplicant
3、pgrep命令
pstree – look up based on name(根据进程名来查询进程)
一般是用来判断程序是否正在运行。
pgrep [选项] [pattern]
选 项
作 用
-l
同时显示 PID 和进程名称
-o
即 old,当匹配程序有多个进程时,显示进程号最小的那个(最先启动的)
-n
即 new,当匹配程序有多个进程时,显示进程号最大的那个(进程号越大,并不一定意味进程的启动时间越晚)
[root@localhost ~]# pgrep -l httpd 2106 httpd 2108 httpd 2109 httpd 2110 httpd 2111 httpd 2112 httpd 2113 httpd 2114 httpd 2115 httpd
[root@localhost ~]# pgrep -o httpd 2106
4、kill命令
kill – terminate a process(终止指定的进程)
kill 从字面意义看起来是杀死进程,但从本质来讲,kill 命令只是向进程发送一个信号,这个信号是什么取决于用户。
kill [-信号] PID
kill 命令重点在于信号而不在选项,所以这里不作描述。
信 号
信号名
含 义
0
SIGEXIT
不发送任何信号,一般用来检查一个进程是否存在
1
SIGHUP
断开终端连接,这个信号也会造成某些进程在没有终止的情况下重新初始化
2
SIGINT
结束进程,但并不是强制性的,相当于组合键 “Ctrl+c”
3
SIGQUIT
退出,相当于组合键 “Ctrl+/”
9
SIGKILL
杀死进程,即强制结束进程
15
SIGTERM
正常结束进程,是 kill 命令的默认信号
18
SIGCONT
恢复进程的执行
19
SIGSTOP
暂停进程的执行,相当于组合键 “Ctrl+z”
[root@localhost ~]# pstree -p | grep httpd //查看httpd服务 |-httpd(1922)-+-httpd(1924) | |-httpd(1925) | |-httpd(1926) | |-httpd(1927) | |-httpd(1928) | |-httpd(1929) | |-httpd(1930) | `-httpd(1931) [root@localhost ~]# kill 1931 //杀死PID为1931的httpd进程,正常停止 [root@localhost ~]# pstree -p | grep httpd |-httpd(1922)-+-httpd(1924) | |-httpd(1925) | |-httpd(1926) | |-httpd(1927) | |-httpd(1928) | |-httpd(1929) | `-httpd(1930) //可以发现进程号为1931的子进程已经结束
[root@localhost ~]# kill -1 1922 //-1信号,可以让进程重新启动 [root@localhost ~]# pstree -p | grep httpd |-httpd(1922)-+-httpd(1953) | |-httpd(1954) | |-httpd(1955) | |-httpd(1956) | |-httpd(1957) | |-httpd(1958) | |-httpd(1959) | `-httpd(1960) //httpd服务的子进程PID都改变了,说明重启成功
5、killall命令
killall – kill processes by name(根据名字终止进程)
killall 命令不再和 kill 命令只能通过 PID 来杀死单个进程,而是通过进程名来杀死一类进程。可以和 ps、pstree 等命令配合使用。
kill [-信号] 进程名
信号与 kill 命令是一致的,所以这里省略掉啦![root@localhost ~]# pstree -p | grep httpd //查看httpd服务 |-httpd(1922)-+-httpd(1953) | |-httpd(1954) | |-httpd(1955) | |-httpd(1956) | |-httpd(1957) | |-httpd(1958) | |-httpd(1959) | `-httpd(1960) [root@localhost ~]# killall httpd //直接指定进程名结束进程 [root@localhost ~]# pstree -p | grep httpd //httpd服务已经正常结束
6、pkill命令
pkill – signal processes based on name and other attributes(根据进程名和其他属性进程处理信号)
pkill 是 ps 命令和 kill 命令的结合,与 killall 命令的用法相同,都是通过进程名杀死一类进程。除此之外 pkill 命令可以用来踢出登录用户。
pkill [-信号] [-t 终端号] 进程名
信号与 kill 命令是一致的,同样这里省略掉啦![root@localhost ~]# pstree -p | grep httpd //查看httpd服务 |-httpd(2251)-+-httpd(2253) | |-httpd(2254) | |-httpd(2255) | |-httpd(2256) | |-httpd(2257) | |-httpd(2258) | |-httpd(2259) | `-httpd(2260) [root@localhost ~]# pkill httpd //直接指定进程名结束进程 [root@localhost ~]# pstree -p | grep httpd //httpd服务已经正常结束
[root@localhost ~]# who //查看本机已登录的用户 root pts/0 2020-04-15 11:39 (192.168.140.1) root pts/1 2020-04-15 13:08 (192.168.140.1) //两个root用户已经远程登录 [root@localhost ~]# pkill -9 -t pts/1 //强制杀死从pts/1虚拟终端登录的进程 [root@localhost ~]# who root pts/0 2020-04-15 11:39 (192.168.140.1) //虚拟终端pts/1的登录进程已经被杀死
7、top命令
top – display Linux tasks(显示Linux任务)
top 可以动态地持续监听进程的运行状态,并且还提供了一个交互界面,可以根据需求个性化地制定输出内容,对某一资源使用情况的字段进行排序等操作。
top [选项]
选 项
作 用
-d 秒数
指定 top 命令每隔几秒更新,默认为3秒
-n 次数
指定 top 命令执行的次数
-b
批处理模式,一般与”-n”选项合用,用于把top命令重定向到文件中
-p 进程PID
仅监听指定 PID 的进程
-u 用户名
仅监听指定用户的进程
top - 19:13:02 up 7:34, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1004136k total, 219592k used, 784544k free, 28220k buffers Swap: 2097148k total, 0k used, 2097148k free, 58320k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19360 1524 1228 S 0.0 0.2 0:01.50 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/0 ...省略部分信息
字 段
解 释
19:13:02
系统当前时间
up 1 day, 7:34
系统的运行时间。本机已经运行1天7小时34分钟
1 user
当前登录了一个用户
load average: 0.00, 0.01, 0.05
系统在1分钟内、5分钟内、15分钟内的平均负载。如果这些数值高于cpu的数量,则你的系统可能在超负荷运转
字 段
解 释
88 total
系统中的进程总数
1 running
正在运行的进程数
87 sleeping
睡眠的进程数
0 stopped
停止的进程数
0 zombie
僵尸进程数
字 段
解 释
0.3%us
用户空间占用的 CPU 百分比
0.0%sy
系统空间占用的 CPU 百分比
0.0%ni
改变过优先级的进程的 CPU 百分比
99.7%id
空闲 CPU 占用的 CPU 百分比
0.0%wa
等待 I/O 的进程占用的 CPU 百分比
0.0%hi
处理硬中断占用的 CPU 百分比
0.0%si
处理软中断占用的 CPU 百分比
0.0%st
虚拟时间百分比。即当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
字 段
解 释
1004136k total
物理内存的总量
219592k used
己经使用的物理内存大小
784544k free
空闲的物理内存大小
28220k buffers
作为缓冲的内存大小
字 段
解 释
2097148k total
交换分区的大小
0k used
已经使用的交换分区的大小
2097148k free
空闲交换分区的大小
58320k cached
作为缓存的交换分区的大小
字 段
解 释
PID
该进程的 ID
USER
该进程所属的用户
PR
优先级(系统内核层面的概念),数值越小优先级越高
NI
优先级(nice值,用户层面的概念),数值越小、优先级越高
VIRT
该进程使用的虚拟内存的大小,单位为 KB
RES
该进程使用的物理内存的大小,单位为 KB
SHR
该进程使用的共享内存大小,单位为 KB
S
该进程状态
%CPU
该进程占用 CPU 的百分比
%MEM
该进程占用内存的百分比
TIME+
该进程共占用的 CPU 时间
COMMAND
运行该进程使用的命令名
② 背光模式;
按一次”shift + >”即可以占用内存的百分比(%MEM)来进行排序。
8、vmstat命令
vmstat – Report virtual memory statistics(报告虚拟内存统计信息)
vmstat 可以动态地监控系统总体的资源使用情况,例如 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
vmstat [选项] [刷新间隔时间 [ 刷新次数]]
选 项
作 用
-a
显示活跃和非活跃内存
-d
显示各个磁盘相关统计信息
-D
显示磁盘整体信息
-p 分区设备文件名
显示指定磁盘分区统计信息
-s
显示内存相关统计信息和多种系统活动数量
-t
将时间戳添加到输出内容中
-s 单位
使用指定单位显示。单位:k、K、m、M分别代表 1000、1024、1000000、1048576字节(bytes),默认为k(1024bytes)
-V
显示vmstat版本信息
[root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 584440 44204 216116 0 0 4 7 17 16 0 0 99 0 0
字 段
选 项
解 释
说 明
procs
r
等待运行的进程数
数值越大,系统越繁忙。当这个值超过CPU个数,就会出现CPU瓶颈
b
等待I/O的进程数量
数值越大,系统越繁忙
memory
swpd
已使用虚拟内存大小
当值大于0时,表示物理内存不足,需要考虑升级内存
free
空闲内存大小
指物理内存空闲大小
buff
用作缓冲的内存大小
缓冲(buffer):用于存储速度不同步的设备或优先级不同的设备之间传输数据。向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能
cache
用作缓存的内存大小
缓存(cache):位于CPU和主内存之间的容量较小但速度很快的存储器,CPU速度远远高于主内存的速度,所以从中读取数据需要等待很长的时间。所以把最常用的数据保存在缓存区中,再次读取该数据时,直接从缓存中读取,减少CPU等待的时间,从而提高系统性能
swap
si
每秒从交换区写入内存的数据大小
表示数据由磁盘调入内存,这个数值越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差
so
每秒从内存写入交换区的数据大小
表示数据由内存调入磁盘,数值大小影响系统的效用同 “si”
io
bi
每秒读取的块数
现在的Linux版本块的大小为1024bytes
bo
每秒写入的块数
如果 bi+bo 的值越大,则表示系统磁盘I/O越繁忙
system
in
每秒中断数,包括时钟中断
这个值越大,表示系统与接口设备的通信越繁忙
cs
每秒上下文切换数
数值大小影响系统的效用同 “in”
cpu
us
用户进程消耗 CPU 运算时间的百分比
这个值比较高时,表示用户进程消耗的CPU时间多。如果长时间超过50%,那么我们就需要考虑优化程序算法或其他措施
sy
内核进程消耗 CPU 运算时间的百分比
这个值比较高时,表示系统内核消耗的CPU时间多,性能方面可能有一些问题,需要我们检查原因。一般来说”us+sy“应该小于80%
id
空闲 CPU 的百分比
如果这个值持续为0并且系统时间(cpu sy)是用户时间(cpu us)的两倍,系统则面临着CPU资源的短缺
wa
等待 I/O 所占用的 CPU 运算时间百分比
这个值比较高时,说明I/O等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈
st
虚拟 CPU 占用实际 CPU 运算时间的百分比
即虚拟机所占用的 CPU 运算时间百分比
[root@localhost ~]# vmstat -t 1 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp--- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 764164 52540 54220 0 0 12 2 11 13 0 0 99 0 0 2020-04-20 13:58:29 CST 0 0 0 764116 52540 54220 0 0 0 0 17 18 0 1 99 0 0 2020-04-20 13:58:30 CST 0 0 0 764116 52540 54220 0 0 0 0 13 14 0 0 100 0 0 2020-04-20 13:58:31 CST
9、lsof命令
lsof – list open files(列出打开的文件)
通过 lsof 命令,可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
top [选项]
选 项
作 用
-c string
列出以 string 开头的进程打开的文件
-p pid
列出进程号为 PID 进程打开的文件
-u uname/uid
列出归属 uname/uid 的进程打开的文件
-g gname/gid
列出归属 gname/gid 的进程打开的文件
+d 目录
列出目录下所有被进程打开的文件
+D 目录
不但列出目录下的,同时也会搜索目录下的目录,时间较长
-d fd
列出文件描述符为 fd 的进程
-i [4,6] [protocol] [ @hostname|hostaddr ] [ :service|port ]
列出符合条件的进程
4,6 → IPV4 or IPV6
protocol → TCP or UDP
@hostname → Internet host name
hostaddr → IP地址
service → /etc/services中的service name
port → 端口号
[root@localhost ~]# lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,3 4096 2 / init 1 root rtd DIR 8,3 4096 2 / init 1 root txt REG 8,3 150352 653834 /sbin/init init 1 root mem REG 8,3 65960 261170 /lib64/libnss_files-2.12.so ...省略部分信息
字 段
解 释
COMMAND
进程的名称
PID
进程标识符
USER
进程所有者
FD
文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE
文件类型。如REG、DIR等
DEVICE
指定磁盘的名称
SIZE/OFF
文件的大小
NODE
索引节点
NAME
打开的文件确切名称
[root@localhost ~]# lsof +D /usr/lib COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME crond 1732 root mem REG 8,3 99164480 393263 /usr/lib/locale/locale-archive bash 1823 root mem REG 8,3 99164480 393263 /usr/lib/locale/locale-archive bash 3007 root mem REG 8,3 99164480 393263 /usr/lib/locale/locale-archive lsof 3131 root mem REG 8,3 99164480 393263 /usr/lib/locale/locale-archive lsof 3132 root mem REG 8,3 99164480 393263 /usr/lib/locale/locale-archive
[root@localhost ~]# lsof /sbin/init COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root txt REG 8,3 150352 653834 /sbin/init
[root@localhost ~]# lsof -c httpd COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 3031 root cwd DIR 8,3 4096 2 / httpd 3031 root rtd DIR 8,3 4096 2 / httpd 3031 root txt REG 8,3 2163426 412492 /usr/local/httpd-2.4.41/bin/httpd ...省略部分信息
[root@localhost ~]# lsof -i tcp:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 3031 root 4u IPv6 22199 0t0 TCP *:http (LISTEN) httpd 3032 daemon 4u IPv6 22199 0t0 TCP *:http (LISTEN) httpd 3033 daemon 4u IPv6 22199 0t0 TCP *:http (LISTEN) httpd 3034 daemon 4u IPv6 22199 0t0 TCP *:http (LISTEN)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算