Linux进程以及计划任务

一:程序:

1.什么是程序?

  • 执行特定任务的一串代码 ,是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具

  • 用于描述进程要完成的功能,是控制进程执行的指令集

二:进程:

1.什么是进程?

运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位  

  •  硬件资源分配的最小单位
  • 进程ID(Process ID,PID)号码被用来标记各个进程
  • UID、GID语境决定对文件系统的存取和访问权限
  • 通常从执行进程的用户来继承
  • 存在生命周期
  • 都由其父进程创建

进程创建:

init:第一个进程,从 CentOS7 以后为systemd

进程:都由其父进程创建

2.进程具有的特征:

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

  • 并发性:任何进程都可以同其他进程一起并发执行;

  • 独立性:进程是系统进行资源分配和调度的一个独立单位;

  • 结构性:进程由程序、数据和进程控制块三部分组成。

 3.进程的组成:

进程一般由程序、数据集合和进程控制块三部分组成。

程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据集合是程序在执行时所需要的数据和工作区;
程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。、

4.进程使用内存的问题:

内存泄漏

内存溢出

内存不足:out of meory

5.进程的基本状态:

Linux进程以及计划任务_第1张图片

 6.表示进程优先级的两个参数:

PRI代表priority

NI代表nice

7.操作系统的分类:

协作式多任务

抢占式任务

8.进程的类型:

守护进程

前台进程

注意:两者可相互转化

9.僵尸进程:

9.1:什么是僵尸进程:

进程以及中止,但是依然占用硬件资源

父进程退出 子进程没有退出 那么这些子进程就没有父进程来管理了, 就变成僵尸进程

9.2:如何过滤僵尸进程?

ps aux | grep Z

9.3:如何结束僵尸进程?

重启

三:线程:

线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。减少硬件资源消耗;进程切换;相同资源的存储

四:协程:

一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来
管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。

协程的特点:
线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换,提高了效率。

进程与线程的区别:

线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
调度和切换:线程上下文切换比进程上下文切换要快得多。

问题:

如何确定一个程序是多线程还是单线程?

1.去看进程的详细状态

2.pstree

3.grep -i threads /proc/进程的pid/status

4.prtstat    进程的pid号

五:系统资源查看:

1.ps:

查看静态的进程统计信息

"ps aux" 可以查看系统中所有的进程;

"ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

"ps -l" 只能看到当前 Shell 产生的进程;

常用选项

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

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

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

  • -e:显示系统内的所有进程信息。

  • -l:使用长(Long)格式显示进程信息。

  • o 选项 显示定制的信息 不能和u一起用

案例:找到cpu利用率最高的进程:

Linux进程以及计划任务_第2张图片

1.1 ps aux 查看系统中所有的进程:

a——所有终端

u——以用户格式

x——所有进程

k——排序

-%cpu——倒序

案例:

表头 含义
USER 该进程是由哪个用户产生的。
PID 进程的 ID。
%CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ 该进程占用虚拟内存的大小,单位为 KB。
RSS 该进程占用实际物理内存的大小,单位为 KB。
TTY 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程
STAT 进程状态。常见的状态有以下几种: -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。 -R:该进程正在运行。 -S:该进程处于睡眠状态,可被唤醒。 -T:停止状态,可能是在后台暂停或进程处于除错状态。 -W:内存交互状态(从 2.6 内核开始无效)。 -X:死掉的进程(应该不会出现)。 -Z:僵尸进程。进程已经中止,但是还是占用硬件资源。 -<:高优先级(以下状态在 BSD 格式中出现)。 -N:低优先级。 -L:被锁入内存。 -s:包含子进程。 -l:多线程(小写 L)。 -+:位于后台。
START 该进程的启动时间。
TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名。

STAT 进程状态。常见的状态有以下几种:

-D    不可被唤醒的睡眠状态,通常用于 I/O 情况
-R    该进程正在运行
-S    该进程处于睡眠状态,可被唤醒
-T    停止状态,可能是在后台暂停或进程处于除错状态
-Z    僵尸进程。进程已经中止,但是还是占用硬件资源
-W    内存交互状态(从 2.6 内核开始无效)
-X    死掉的进程(应该不会出现)
-<    高优先级(以下状态在 BSD 格式中出现)
-N    低优先级
-L    被锁入内存
-s    包含子进程
-l    多线程
-+    位于后台
 

1.2 ps -ef 命令输出信息:

Linux进程以及计划任务_第3张图片

表头 含义
F 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
S 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID 运行此进程的用户的 ID;
PID 进程的 ID;
PPID 父进程的 ID;
C 该进程的 CPU 使用率,单位是百分比;
PRI 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改
NI 进程的优先级,数值越小,该进程越早被执行;可以人为修改
ADDR 该进程在内存的哪个位置;
SZ 该进程占用多大内存;
WCHAN 该进程是否运行。"-"代表正在运行;
TTY 该进程由哪个终端产生;
TIME 该进程占用 CPU 的运算时间,注意不是系统时间;
CMD 产生此进程的命令名;

如果只查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令就足够了

修改NI值注意事项:

  • NI 范围是 -20~19。

  • 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。

  • 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。

  • 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

 2.top:

可以动态地持续监听进程地运行状态

该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

Linux进程以及计划任务_第4张图片

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;

  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;

  • -p 进程PID:仅查看指定 ID 的进程;

  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

  • -u 用户名:只监听某个用户的进程;

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

  • ? 或 h:显示交互模式的帮助;

  • c:按照 CPU 的使用率排序,默认就是此选项;

  • M:按照内存的使用率排序;

  • N:按照 PID 排序;

  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;

  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;

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

  • q:退出 top 命令;

第一部分:

 第一行为任务队列信息,具体内容如表 所示:

内 容 说 明
12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间.本机己经运行 1 天 13 小时 32 分钟
2 users 当前登录了两个用户
load average: 0.00,0.00,0.00 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

第二行为进程信息,具体内容如表

内 容 说 明
Tasks: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程

第三行为 CPU 信息,具体内容如表

内 容 说 明
Cpu(s): 0.1 %us 用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id 空闲 CPU 占用的 CPU 百分比
0.1%wa 等待输入/输出的进程占用的 CPU 百分比 1
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.1%si 软中断请求服务占用的 CPU 百分比
0.0%st st(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

第四行为物理内存信息,具体内容如表buff cache

内 容 说 明
Mem: 625344k total 物理内存的总量,单位为KB
571504k used 己经使用的物理内存数量
53840k&ee 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
65800k buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息,如表

内 容 说 明
Swap: 524280k total 交换分区(虚拟内存)的总大小
Ok used 已经使用的交换分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交换分区的大小

 第二部分:

top 命令的第二部分输出,主要是系统进程信息,各个字段的含义如下:

Linux进程以及计划任务_第5张图片

  • PID:进程的 ID。

  • USER:该进程所属的用户。

  • PR:优先级,数值越小优先级越高。

  • NI:优先级,数值越小、优先级越高。

  • VIRT:该进程使用的虚拟内存的大小,单位为 KB。

  • RES:该进程使用的物理内存的大小,单位为 KB。

  • SHR:共享内存大小,单位为 KB。

  • S:进程状态。

  • %CPU:该进程占用 CPU 的百分比。

  • %MEM:该进程占用内存的百分比。

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

  • COMMAND:进程的命令名。

 top选项:
-d # 指定刷新时间间隔,默认为3秒
-b 全部显示所有进程
-n # 刷新多少次后退出

3.free:

查看内存

-h 以友好的方式显示内存的使用情况
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-g 以GB为单位显示内存使用情况
-o 不显示缓冲区调节列
-s<间隔秒数> 持续观察内存使用状况
-t 显示内存总和列
-V

显示版本信息

Linux进程以及计划任务_第6张图片

参数 解释
taotal 总计物理(swap)内存的大小
used 已使用物理内存(swap)的大小
free 可用的物理内存(swap)大小
shared 多个进程共享的内存总额
buff/cache 磁盘的缓存大小
available 可以被新应用程序使用的内存大小

4.iostat:

可以提供更丰富的IO性能状态数据,硬盘读写性能

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

只看 sda硬盘: 

Linux进程以及计划任务_第7张图片

5.iotop:

监视磁盘I/O

Linux进程以及计划任务_第8张图片

6.pgrep:

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

选项 说明
-U 指定用户
-l 显示进程名
-a 显示完整格式的进程名
-P  pid号 显示指定进程的子进程

Linux进程以及计划任务_第9张图片

Linux进程以及计划任务_第10张图片

Linux进程以及计划任务_第11张图片

7.pmap :

查看进程占用 内存的详细信息

选项:

-x, --extended 显示扩展格式

 -d, --device 显示设备格式。

-XX 显示内核提供的所有内容。

Linux进程以及计划任务_第12张图片

8.dastat:

系统资源统计

Linux进程以及计划任务_第13张图片

Linux进程以及计划任务_第14张图片

六:其他系统资源查看:

1.查看进程信息 prtstat:

Linux进程以及计划任务_第15张图片

 

2.pstree命令进程树: 

以树形结构列出进程信息

pstree  [OPTION] [ PID | USER ]    

常用选项 -a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等

-p 显示PID

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

-u 显示用户切换

-H pid 高亮显示指定进程及其前辈进程

Linux进程以及计划任务_第16张图片

3.lsof

列举系统中已经被打开的文件

通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件

lsof [选项]

选项 功能
-c 字符串 只列出以字符串开头的进程打开的文件。
+d 目录名 列出某个目录中所有被进程调用的文件。
-u 用户名 只列出某个用户的进程打开的文件。
-p pid 列出某个 PID 进程打开的文件。

Linux进程以及计划任务_第17张图片

4.vmstat-监控系统资源 虚拟 资源:

可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。

 #使用vmstat检测,每隔1秒刷新一次,共刷新3次:Linux进程以及计划任务_第18张图片

选项 含义
-fs -f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。 -s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。
-S 单位 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
-d 列出硬盘有关读写总量的统计表。
-p 分区设备文件名 查看硬盘分区的读写情况。

5.uptime 系统运行了多久时间:

6.显示CPU相关统计mpstat:

Linux进程以及计划任务_第19张图片

 7.kill-结束进程:

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

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

选项:

kill [信号] PID 


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

1) SIGHUP 无须关闭进程而让其重读配置文件
2) SIGINT 中止正在运行的进程;相当于Ctrl+c 3) SIGQUIT 相当于ctrl+\ 9) SIGKILL 强制杀死正在运行的进程,可能会导致数据丢失,慎用!
9)  关电源   数据库  写           
15) SIGTERM 终止正在运行的进程,默认信号
18) SIGCONT 继续运行
19) SIGSTOP 后台休眠

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

Linux进程以及计划任务_第20张图片8. killall:

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

选项:

killall [选项] [信号] 进程名

  • -i:交互式,询问是否要杀死某个进程;

  • -I:忽略进程名的大小写

 Linux进程以及计划任务_第21张图片

9.pkill:

 pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。

格式:

pkill [信号] 进程名

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

pkill命令踢出登陆用户  :

 pkill [-t 终端号] 进程名
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程

10.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 命令。

 11.crontab周期:

Linux进程以及计划任务_第22张图片

使用 crontab 命令,设置周期性计划任务 
格式:

crontab  -e    编辑计划任务

crontab  -l     查看计划任务

crontab  -r     删除计划任务

crontab  -u    XXX   用来设定某个用户的crontab服务

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

格式:  *****   绝对路径

第一个*哪一分钟    0-59

第二个*哪一个小时 0-23

第三个*哪一天      1-31

第四个*哪一个月  1-12

第五个*星期几     0-7  07都代表星期天

which  命令   查看绝对路径

注意:这五个必须要有  

特殊表示方法:

*    表示该范围内的任意时间
,    表示间隔的多个不连续时间点
-    表示一个连续的时间范围
/    指定间隔的时间Linux进程以及计划任务_第23张图片

案例:#每两分钟执行脚本 

crontab -e进入编辑

 crontab -l 查看

删除crontab文件:

Linux进程以及计划任务_第24张图片

你可能感兴趣的:(linux,运维,服务器)