首页 > 系统相关 >进程和计划任务管理

进程和计划任务管理

时间:2022-10-12 19:23:25浏览次数:47  
标签:占用 信息 命令 任务 计划 内存 进程 CPU

1 程序

保存在硬盘、光盘等介质中的可执行代码和数据

静态保存的代码

 2 进程

2.1 什么是进程

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

  • 在CPU及内存中运行的程序代码
  • 动态执行的代码
  • 进程ID(Process ID,PID)号码被用来标记各个进程
  • UID、GID、和SELinux语境决定对文件系统的存取和访问权限
  • 通常从执行进程的用户来继承
  • 存在生命周期
  • 都由其父进程创建
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
  • 已分配内存的地址空间;
  • 安全属性,包括所有权凭据和特权;
  • 有权限限制;
  • 程序代码的一个或多个执行线程;
父进程与子进程:

父进程复制自己的地址空间(fork派生)创建一个新的(子)进程结构。

每个进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。

任何进程都可以创建子进程。

所有进程都是第一个系统进程的后代。


 

 2.2 进程具有的特征

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
  • 并发性:任何进程都可以同其他进程一起并发执行;
  • 独立性:进程是系统进行资源分配和调度的一个独立单位;
  • 结构性:进程由程序、数据和进程控制块三部分组成。

2.3 僵尸进程

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。

在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由init 来接管他,成为他的父进程。

3 查看进程

3.1   ps命令——静态查看进程

ps 命令是 Process Status 的缩写 ,可以查看进程当前状态的快照。查看静态的进程统计信息,即执行 ps 命令的那个时刻的进程快照。默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中。

a 显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
u 使用以用户为主的格式输出进程信息。
x 显示当前用户在所有终端下的进程信息。
-e 显示系统内的所有进程信息
-l 使用长(Long)格式显示进程信息。
-f 使用完整的(Full)格式显示进程信
  k|--sort 属性:对属性排序,属性前加 - 表示降序排列。

 



              使用“ps aux”命令查看进程信息:

 

 进程信息共有11个字段,每个字段含义如下:

user 该进程是由哪个用户产生的。
pid 进程的 ID。
%cpu 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%men 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
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 产生此进程的命令名。
 使用“ps elf”命令查看进程信息:

 上图字段解释:

大部分跟第一种一样,PPID为父进程的PID。

top

以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。 

 

上图解释:

Tasks(系统任务)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。

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

Mem(内存)信息:total,总内存空间;used,已用内存;free,空闲内存;buffers,缓存区域。

Swap(交换空间)信息:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间。

pstree -aup
可以带上|grep  查询特定进程。例如 pstree -aup | grep php

 

 以树状图的方式展现进程之间的派生关系,显示效果比较直观。
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;

lsof命令

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

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

 

          示例 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:每秒进行的事件切换次数。 这两个数越大,代表系统与接口设备的通信越繁忙。
cpu CPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比

                 

通过分析 vmstat 命令的执行结果,可以获得一些与当前 Linux 运行性能相关的信息。比如说:

  • r 列表示运行和等待 CPU 时间片的进程数,如果这个值长期大于系统 CPU 的个数,就说明 CPU 不足,需要增加 CPU。
  • swpd 列表示切换到内存交换区的内存数量(以 kB 为单位)。如果 swpd 的值不为 0,或者比较大,而且 si、so 的值长期为 0,那么这种情况下一般不用担心,不用影响系统性能。
  • cache 列表示缓存的内存数量,一般作为文件系统缓存,频繁访问的文件都会被缓存。如果缓存值较大,就说明缓存的文件数较多,如果此时 I/O 中 bi 比较小,就表明文件系统效率比较好。
  • 一般情况下,si(数据由硬盘调入内存)、so(数据由内存调入硬盘) 的值都为 0,如果 si、so 的值长期不为 0,则表示系统内存不足,需要增加系统内存。
  • 如果 bi+bo 的参考值为 1000 甚至超过 1000,而且 wa 值较大,则表示系统磁盘 I/O 有问题,应该考虑提高磁盘的读写性能。
  • 输出结果中,CPU 项显示了 CPU 的使用状态,其中当 us 列的值较高时,说明用户进程消耗的 CPU 时间多,如果其长期大于 50%,就需要考虑优化程序或算法;sy 列的值较高时,说明内核消耗的 CPU 资源较多。通常情况下,us+sy 的参考值为 80%,如果其值大于 80%,则表明可能存在 CPU 资源不足的情况。

总的来说,vmstat 命令的输出结果中,我们应该重点注意 procs 项中 r 列的值,以及 CPU 项中 us 列、sy 列和 id 列的值。

控制进程

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

·后台启动:命令行尾加入“$”符号

调度启动

.使用at命令,设置一次性任务

.使用crontab命令,设置周期性计划任务

挂起进程

Ctrl+z组合键:

将当前进程挂起,即调入后台并停止执行

查看后台进程

Jobs命令

-l:查看处于后台的任务列表

恢复后台挂起的进程到前台

Fg命令

将后台进程恢复到前台运行,可指定任务序号

终止进程的运行

Ctrl+c组合键

中断正在执行的命令

Kill killal:

kill用于终止指定PID号的进程

Killal用于终止指定名称相关的所有进程

Pkill命令

根据特定条件终止相应的进程

常用命令选项

-u:根据进程所属的用户终止相应进程

-t:根据进程所在的低端终止相应进程

Sigterm -15 让进程自行并退出

Sickill -9选项用于强制终止,且不能忽略

crontab命令

按照预先设置的时间周期(分钟、小时、天、月、周)

重复执行用户指定的命令操作

属于周期性计划任务

主要设置文件

全局配置文件

调度任务

Crontab计划任务

编辑:-e -u 用户名

查看:-l -u

删除 -r -u

调度任务

一次性计划任务

At hh:mm yyyy-mm-dd 指定时间编辑

Ctrl+d提交任务

Atq查询任务列表

Atrm删除任务

周期性计划任务

开启 cround 服务

Croundab -e -u指定用户

/var/spool/scrn/客户

分 时 日 月

* , - /

4总结

查看进程命令

静态查看:ps aux,ps -elf

动态查看:top

查看指定进程:prtstat

以树形结构列出:pstree

列举被打开的文件:lsof

监控系统资源:vmstat、iostat

发现僵尸进程(状态为Z)一定要杀掉。

“cat /proc/PID/status" 可以查看指定进程具体有几个线程。

2、控制进程
  • 后台启动:

命令行尾加”&“符号。

  • 前后台调度

ctrl+z 挂起当前进程,

jobs查看任务列表

fg 序号,将前台进程调到后台运行。

bg 序号,将后台暂停的进程恢复执行状态。

  • 修改优先级:

nice,启动程序时设置优先级。

renice,修改现有进程的优先级。

  • 杀死进程:

kill [信号] PID

killall 进程名

pkill [信号] [-U 用户名]

pkill [信号] [-t 终端名]

  • crontab周期性任务设置

crontab -e:编辑计划任务。

crontab -l:查看计划任务。

时间格式:分、时、日、月、周几。 可以查看cat /etc/crontab 文件。

*表示任意。

,表示多个不连续的时间点。

-表示连续的时间范围。

/表示频率。

命令要使用绝对路径。

6个选项(时间+任务)都不能为空,必须填写。


 
 
       

标签:占用,信息,命令,任务,计划,内存,进程,CPU
From: https://www.cnblogs.com/jct166289/p/16776938.html

相关文章