进程和计划任务管理

目录

查看进程

程序

进程

区别

扩充

线程

查看进程信息ps

定义

格式

常用的参数

常用的选项组合

示例

查看进程信息ps

定义

示例

查看进程信息top

作用

格式

示例​

查看进程信息pgrep

作用

示例

常用的参数

查看进程信息pstree

作用

 进程的启动方式

手工启动

前台启动

后台启动

调度启动

 进程的前后台调度

Ctrl+Z组合键

 jobs命令

fg命令

终止进程的运行

Ctrl+C组合键

kill、killall命令

终止进程执行

使用kill 命令终止进程

使用killall 命令终止进程

扩充


查看进程

程序

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

静态保存的代码(二进制文件)

进程

在CPU及内存中运行的代码程序

动态执行的代码

父、子进程

每个程序可以创建一个或多个进程

区别

程序是静态的,进程是动态的。

进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为一个独立单位得到操作系统的认可。

一个程序可以对应多个进程,但一个进程只能对应一个程序。

进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成,而程序是一组有序的指令集合。

扩充

线程

线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

查看进程信息ps

定义

查看静态的进程统计信息

格式

[root@localhost ~]# ps aux

常用的参数

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

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

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

常用的选项组合

ps -aux          #将以简单列表的形式显示出进程信

上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一-的。
%CPU:CPU占用的百分比。
%MEM:内存占用的百分比。
VSZ:该进程使用的虚拟内存量(KB)。
RSS:该进程占用的物理内存(实际内存)量(KB)。
TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。
简说:pts 是远程登录终端ctrl+ALT    F1-F6      tty1: 图像界面       2和6:字符界面系统本身自身执行的进程。

示例

STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态:s:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态。 Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

D:系统守护进程

T:调式、程序执行一-般停止

R:该程序目前正在运作,或者是可被运作;

s:该程序目前正在睡眠当中(可说是idle状态啦!),但可被某些讯号(signal)唤醒

T:该程序目前正在侦测或者是停止了;

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie (疆尸)程序的状态D不可中断状态。

STAT的含意如下:

<:表示进程运行在高优先级上

N:表示进程运行在低优先级上

L:表示进程有页面锁定在内存中

s:表示进程是控制进程

l:表示进程是多线程的

+:表示当前进程运行在前台

D:系统守护进程

T:调式、程序执行一般停止

START:启动该进程的时间。

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

COMMAND:启动该进程的命令的名称

查看状态

 Ctrl+Z  停止

 

 再进行查看

 然后干掉进程

 删掉隐藏文件

 

 压缩

 查看详细信息

 另一种方式查看

 

 示例

查看进程状态[root@benet ~] #  vim a.txt     在另一个终端执行:

[ root@benet ~]#  ps -aux|grep a.txt        #查看状态    s表示睡眠状态,+表示前台

root    4435   0.0     0.2   151752   5292  pts/1   S+   20:52    0:00    vim    a.txt
root    4661   0.0     0.0   112676   996    pts/0   S+   21:05    0:00    grep   --color=auto    a.txt

在 vim a.txt  这个终端上按下:ctrl+z     [1]+    已停止   vim a.txt   在另一个终端执行:

[ root@benet ~]#  ps -aux | grep a.txt        #查看状态T表示停止状态

root     4435    0.0   0.2  151752    5292    pts/1   T     20:52    0:00   vim    a.txt
root     4675    0.0   0.0  112676     996   pts/0    S+2  1:05      0:00  grep   --color=auto     a.txt

注:
ctrl-c 是发送SIGINT 信号,终止一个进程

ctrl-z 是发送SIGsTOP信号,挂起一个进程。将作业放置到后台(暂停)

ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EoF。代表输入完成或者注销

例2:   D  不可中断状态

[ root@xuegod63.~]#  tar -zcvf  usr-tar.gz /usr/

#然后在另一个终端不断查看状态,由S+,R+变为D+

方法二
ps -elf        #将以长格式显示系统中的进程信.息
-e:是示系统内的所有进程信息.。

-l:使用长格式显示i进程信息。

-f:使用完整的格式显示进程信息。

查看进程信息ps

定义

查看静态的进程统计信息

[root@localhost ~]# ps -elf

F:内核分配给进程的系统标记。

S:进程的状态。

UID:启动这些进程的用户。

PID:进程的ID号。

PPID:父进程的进程ID号。

C:进程生命周期中的CPU利用率。

PRI:进程的优先级(越大的数字代表越低的优先级)。

NI:谦让度值,用来参与决定优先级。

ADDR:进程的内存地址。

SZ:假如基础被换出,所需进程大致的交换空间的大小。

WCHAN:假如该进程在睡眠,则显示睡眠中的系统函数名。

STIME:进程启动时的系统时间。

TTY:进程启动时的终端设备。

TIME:运行进程需要的累计CPU时间       pts/0255代表虚拟终端,一般是远程连接的终端;                        tty1tty7代表本地控制台终端。

CMD:进程的启动命令。

僵尸进程:

一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当了进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

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

-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。

-R:该进程正在运行。

-S:该进程处于睡眠状态,可被唤醒。

-T:停止状态,可能是在后台暂停或进程处于除错状态。

-W:内存交互状态(从2.6内核开始无效)。

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

-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。

-<:高优先级(以下状态在BSD格式中出现)。

-N:低优先级。

-L:被锁入内存。

-s:包含子进程。

-l:多线程(小写L) 。

-+:位于后台。

-C:进程占用cPU的百分比

示例

先加载http命令

 

 启动系统服务

 

查看服务存不存在

查看进程信息top

作用

查看动态的进程排名信息

查看是否有大量的数据占用cpu和内存

格式

[root@localhost ~]# top

示例

上述输出信息中,开头的部分显示了系统任务(Tasks) 、cPu占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。

uptime

13:22:30        当前时间

up 20days      系统运行时间,     说明此服务器连续运行20天了

user      当前登录用户数

load average: 0:06,0:60,0:48      系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。

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

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

内存占用(Mem〉信息:total:总内存空间,free:空闲内存,used:已用内存, buff/cache:物理内存和交换内存的缓冲区总和。

交换空间(Swap)占用: total:总交换空间,free:空闲交换空间, used:已用交换空间: availMem:可用物理空间。

0.0%hi (了解)    硬件中断消耗时间        硬件中断占用

硬中断,占的cPU百分比。

1,硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ (中新请求)。基于IRO,CPU

可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程') 。# hi ->

Hardware IRQ:The amount of time the CPU has been servicing hardware interrupts.

0.08 si(了解)     软中断消耗时间    软件中断占用
软中断,占的 CPU百分比。1.通常,软中断是一些对I/o 的请求。这些请求会调用内核中可以调度I/0发生的程序。对于某些设备,I/o 请求需要被立即处理,而磁盘I/O

请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。1/o可以在进程之间产生并且调度过程通常和磁盘I/o的方式是相同。#  si  ->  Software Interrupts: The amount of time the CPU has been servicingsoftware interrupts.

0.0  st (steal 偷)  虚拟化占用。要了解空闲的 CPU百分比,主要看%id部分。

st:虚拟机偷取物理的时间。比如:物理机已经运行了KVWM,XEN虚拟机。KWM虚拟机占用物理机的 CPU时间

Mem:2033552k  total             物理内存总量

340392k   used           使用的物理内存总量

1376636k   free             空闲内存总量
316524k   buff/cache           用作内核缓存的内存量。      和 free -k 一个意思

swap: 2017948k total             空闲交换区总量
ok used                使用的交换区总量
192772k  free               空闲交换[区总量
1518148  avail    Mem             总的可利用内存是多少

top:显示当前系统的时间

up:系统运行的时间

users:用户数量

load average:当前系统的负载情况  后面三个数代表了 一分钟,五分钟,十五分钟到现在的一个平均值。

Tasks:进程的总数

running:正在运行的进程数

sleeping:正在睡眠的进程数

stopped:停止运行的进程数

zombie:僵尸进程数

%CPU:us  占用信息         sy 用户的占用信息,内核的占用信息         ni  优先级的调整

              id  空闲的CPU百分比        wa  I/O       hi 硬件中断的占用       si 内核占用   

              st  虚拟化的内存占用

KiB Mem:内存信息   (总的内存      空闲内存    已使用内存    物理内存和交换内存的缓存)

KiB Swap:交换空间     (总的交换空间      空闲交换空间    已使用交换空间      物理内存和内存缓存)

PID:运行的进程

USER:用户名

PR:优先级

NI:进程优先级

VIRT:虚拟内存

RES:进程所使用的物理内存 (实际内存为RESS)

SHR:共享内存的大小

S:进程状态      D=不可中断的睡眠状态           R=运行中或可运行(S=睡眠中)  T=已跟踪/已停止z=僵停 

%CPU:上次更新到现在的CPU时间占用百分比

%MEM:进程使用的物理内存百分比

TIME+:进程使用的CPU时间总计

COMMAND:命令名/命令行

 查看内存空间(空间不足可能会造成僵尸进程)

查看进程信息pgrep

作用

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

示例

[root@localhost ~]# pgrep -l "log"                -l:显示进程名

2538 rsyslogd

2113 mcelog

[root@localhost ~]# pgrep -l -U teacher -t tty1

27483 bash

27584 vim

-U:指定特定用户

-t:指定终端

常用的参数

-l:选项可同时输出对应的进程名以及PID-u:选项查询特定用户的进程

-t:选项查询在特定终端运行的进程

例1
pgrep -l "log"

例2
pgrep -l -0 teacher -t ttyl

查看进程信息pstree

作用

以树形结构列出进程信息

格式

[root@localhost ~]# pstree -aup

init,1
....//省略部分信息

l—login,3221

     l—bash,27483,teacher

          l—vim,27674 myfile.txt......川省略部分信息
[root@localhost~]# pstree -ap teacher

bash,27483
     l—vim,27674 myfile.txt

pstree命令默认情况下只显示各进程的名称,结合以下常用的参数使用:

-p:选项使用时可以同时列出对应的PID号

-u:选项可以列出对应的用户名

-a:选项可以列出完整的命令信息

执行如下的"pstree -aup"命令可以查看当前系统的进程树,包括各进程对应的PID号、用户名、完整命令等信息。从输出结果中可以看出,systemd进程确实是 Linux操作系统中所有进程的”始祖”

例1

pstree -aup hmj

实例

创建一个用户

在另一边登入他的账号进入编辑器

随便写点什么

 

 以树形的方式进行查看

 

 进程的启动方式

手工启动

前台启动

用户输入命令,直接执行程序

后台启动

在命令行尾加入“&"符号

[root@localhost ~]# cp /dev/cdrom     mycd.iso &

[1]28454        输出信息中包括后台任务序号、PID号

 进行挂载并查看

 进行后台运行

 

 查看后台运行的进程

 杀死程序并查看(一定要在进程完成前杀死,不然没用)

 

调度启动

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

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

 进程的前后台调度

Ctrl+Z组合键

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

 

 jobs命令

查看处于后台的任务列表

 

fg命令

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

[root@localhost ~]# jobs

[1]-    Stopped            cp /devlcdrom mycd.iso
[2]+   Stopped            top
[root@localhost ~]# fg 1

 

 

 

 bg命令

 

 

终止进程的运行

Ctrl+C组合键

中断正在执行的命令

kill、killall命令

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

killall用于终止指定名称的所有进程

-9选项用于强制终止

示例

查看所有httpd

 

 

 删除19101

 

 再次查看

 

 

终止进程执行

当用户在前台执行某个进程时,可以按ctrl+c组合键强制进行中断(如命令长时间没有响应的情况下) 。中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按ctrl+C
组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具kiii、 killall 和pkili。

使用kill 命令终止进程

通过kill 命令终止进程时,需要使用进程的PID号作为参数。无特定选项时,kill命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则可以结合"-9”选项强行终止进程。强制终止进程时可能会导致程序运行的部分数据丢失,因此不到不得已时不要轻易使用"-9"选项。

例如,若 SSH 服务的 sshd 进程的PID号为 5822,则执行"kill 5822"命令后可以将进程sshd终止:

[ root@localhost ~]# pgrep -l "sshd"//查询日标进程的PID号

5822 sshd

[ root@localhost ~]# kill 5822//终止指定PID的进程

[ root@localhost ~j# pgrep -l "sshd"//确认进程已终止(查询时无结果)

对于无法正常终止的系统进程,在必要时可以结合"-9"选项强制终止。例如,以下操作展示了强制终止 vim进程的过程为弄出

[ root@localhost ~ ] # vim testfile &          //打开vim程序并挂起作为测试

[ 1]+       stopped vim testfile

[ root@localhost ~]# jobs -l               //查询目标进程的PID号

[ 1]+       7095    stopped vim testfile

使用killall 命令终止进程

使用killall命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用 killall命令将更加方便,效率更高。killall命令同样也有"-9"选项。例如,执行如下的"killall -9
vim命令町将所有名为virm 的进程都强行终止。

[ root@localhost ~ ] # vim testfile1 &             //挂起第1个vim 测试进程

[ 1]+stopped vim testfile1

[ root@localhost ~]# vim testfile2 &              //挂起第2个vim测试进程

[ 2]+stopped vim testfile2

[ rootelocalhost ~]#  jobs  -l                           //确认待终止的进程信息  [1]-    7144 Stopped    vim testfile"

[ 2]+    7153 stopped vim testfile2
[ root@localhost~ ] # killall -9 vim                 //通过进程名终止多个进程

[ root@localhost ~]# jobs -l

[ 1]-    7144   Killedvim testfile1

[ 2]+   7153   Killedvim testfile2

扩充

使用pki1l 命令终止进程     使用pkill

命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep命令基本类似,如"-[J"”(指定用户)、"-t”(指定终端)等选项,使用起来非常方便。例如,若要终止由用户 hmj启动的进程〈包括登录 shell),可以执行以下操作。su- hnj

vim tst.txt &

[ rootelocalhost ~] #pgrep -l -U "hmj"            //确认目标进程相关信息3773 bash

[rootelocalhost ~] #pkill -9 -u "hmj"               //强行终止用广hackli 的进程

[root@localhost ~]# pgrep -l -u "hmj"           //确认目标进程己被终止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值