Linux之进程

目录

Linux之进程

进程简介

定义

组成部分

程序与进程的区别

进程与线程的区别

父子进程

前台进程和后台进程 

进程分类

进程的状态

查看进程

查看当前系统信息 --- ww

查看个别用户信息 --- w [用户名]

静态查看进程 --- ps

        参数及作用

        查看隶属自己的进程

        信息含义解析

        案例

        常用操作

        自定义查看显示字段

查看进程树

查看指定进程的PID

查看服务进程号

动态查看进程 --- top

        第一部分解析

        第二部分详解

        命令及作用

nohup命令

        语法格式

信号控制将进程

列出所有支持的信号

进程相关命令及其功能

作业控制

定义

命令及作用

作业标识符及作用

案例

        示例1 --- 运行程序(时),让其在后台

        示例2 --- 查看后台挂起

        示例3 --- 查看后台作业

        示例4 --- 将作业1调回到前台

        示例5 --- 终止PID为1的进程


Linux之进程

进程简介

定义

        进程是程序的一次执行。进程是可以并行执行的计算。进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。进程是程序在一个数据集合上的运行过程。它是系统进行资源分配调度的一个独立单位

组成部分

  1. 已分配内存的地址空间
  2. 安全属性,包含所有全凭根和特权
  3. 程序代码的一个或多个执行线程
  4. 进程状态

程序与进程的区别

程序 --- 二进制文件 ,静态 /bin/date, /usr/sbin/httpd /usr/sbin/sshd, /usr/local/nginx/sbin/ngi

进程 --- 是程序运行的过程,动态,有生命周期及运行状态

  1. 程序静态的,它只是一组指令集合,不具有任何的运行意义,而进程程序运行动态过程
  2. 进程程序不是一一对应的关系,相同程序运行在不同的数据集上就是不同的进程
  3. 进程还具有并发性交往性,而程序却是封闭

进程与线程的区别

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

  1.  一个进程可以拥有多个线程,而一个线程只能被一个进程所拥有
  2. 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及序列出口,它必须组成进程才能被执行

父子进程

        子进程 --- 由一个进程所产生的进程,产生这个子进程的进程称为父进程

在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据堆栈段以及父进程的进程环境

        父进程终止子进程自然终止

堆栈段(stacksegment) --- 指采用堆栈方式工作的一段内存区域。当程序被执行时,程序可能会将其执行的状态加入栈的顶部;当程序结束时,它必须把栈顶状态数据弹出(pop)

子进程工作过程:

        子进程 继承 父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec 自己的程序代码。通常, 父进程 在子 进程运行期间 处于 睡眠(sleeping)状态 。当 子进程完成 发出(exit)信号请求 ,在退出时,子进程已经 关闭 丢弃 其资源环境 ,剩余的部分称之为 僵停 (僵尸Zombie )。 父进程 在子进程退出时收到信号而 被唤醒 清理剩余的结构 ,然后 继续执行 自己的程序代码

前台进程和后台进程 

        前台进程 --- 在 shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返回对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一个命令

        后台进程 --- 在 Shell 提示处理打入命令,若后随一个 & Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。后台进程必须是非交互式

进程分类

进程的状态

        在 多任务 处理操作系统中,每个CPU (或核心)在 一个时间点 只能处理一个进程 。在进程运行时,它对 CPU时间 资源分配 的要求会 不断变化 ,从而 为进程分配一个状态 ,它 随着环境要求而改变

查看进程

查看当前系统信息 --- ww

[root@joker ~]# w

解读信息的含义:

        JCPU --- 以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的CPU时间会显示在这里

        PCPU --- cpu 执行程序消耗的时间

        WHAT --- 用户下在执行的操作

        load average --- 分别显示系统在1、5、15分钟内的平均负载程度

        FROM --- 显示用户从何处登陆系统

        IDLE --- 用户闲置时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置

查看个别用户信息 --- w [用户名]

[root@joker ~]# w root 

静态查看进程 --- ps

参数及作用

参数作用
-a显示所有用户的进程
-u显示用户名启动时间
-x显示没用控制终端的进程
-e显示所有进程,包括没有控制终端的进程
-l长格式显示
-w宽行显示,可以使用多个w进行加宽显示

查看隶属自己的进程

  1. ps -u or-l 查看隶属于自己进程的详细信息
  2. ps -le or-aux 查看所有用户执行的进程的详细信息
  3. ps -aux -sort pid 可按进程执行的时间PIDUID等对进程进行排序

信息含义解析

USER --- 运行进程的用户

PID --- 进程ID

%CPU --- CPU占用率

%MEM --- 内存占用率

VSZ --- 占用虚拟内存

RSS --- 占用实际内存 驻留内存

TTY --- 进程运行的终端

STAT --- 进程状态        man ps (/STATE)       

        R --- 运行
        S --- 可中断睡眠 Sleep
        D --- 不可中断睡眠
        T --- 停止的进程
        Z --- 僵尸进程
        X --- 死掉的进程
        Ss --- s进程的领导者,父进程
        S< --- <优先级较高的进程
        SN --- N优先级较低的进程
        R + --- + 表示是前台的进程组
        Sl --- 以线程的方式运行
START --- 进程的启动时间
TIME --- 进程占用CPU的总时间
COMMAND --- 进程文件,进程名

案例

通过内存升序排序,并分页查看

[root@joker ~]# ps aux --sort rss |less

通过内存降序排序,并分页查看

[root@joker ~]# ps aux --sort -rss |less

通过CPU升序排序,并分页查看

[root@joker ~]# ps aux --sort %cpu |less

通过CPU降序排序,并分页查看

[root@joker ~]# ps aux --sort -%cpu |less

常用操作

自定义查看显示字段

[root@joker ~]# ps axo user,pid,ppid,%mem,command |less

查看进程树

[root@joker ~]# pstree

查看指定进程的PID

[root@joker ~]# cat /run/sshd.pid 

查看服务进程号

        pgrep [ 服务名称 ]

[root@joker ~]# pgrep -l sshd 
[root@joker ~]# pgrep sshd 

        pidof [ 服务名称 ]

[root@joker ~]# pidof sshd 

动态查看进程 --- top

[root@joker ~]# top 

 第一部分解析

         主要是系统整体信息统计

top --- 当前时间

up --- 机器运行多长时间

users --- 当前登陆用户数

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

Tasks --- 当前有多少进程

runnin --- 正在运行的进程数

sleeping --- 正在休眠的进程数

stopped --- 停止的进程数

zombie --- 僵尸进程

us --- 用户空间占CPU的百分比

sy --- 内核空间占CPU的百分比

ni --- 用户进程空间改变过优先级

id --- 空闲CPU占用率

wa --- 等待输入输出的CPU时间百分比

hi --- 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)

si --- 软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)

st --- steal time

total --- 物理内存总量

free --- 空闲内存总量

used --- 使用的内存总量

buffer/cache --- 用作内核缓存的内存

total --- 交换区内存总量

free --- 空闲交换区总量

used --- 使用的交换区总量

buffer/cache --- 缓冲的交换区总量

第二部分详解

PID --- 进程id
USER --- 进程所有者的用户名
PR --- 优先级
NI --- nice值,负值表示高优先级,正值表示低优先级
VIRT --- 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES --- 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR --- 共享内存大小,单位kb
S --- 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU --- 上次更新到现在的CPU时间占用百分比
%MEM --- 进程使用的物理内存百分比
TIME+ --- 进程使用的CPU时间总计,单位1/100秒
COMMAND --- 命令名/命令行

命令及作用

命令作用
h|?
帮助
M
内存的使用 排序
P
CPU使用 排序
N
PID的大小排序
R
对排序进行反转
f
自定义显示字段
1
显示所有CPU的负载
<
向前
向后
z
色彩
W
保存top环境设置

nohup命令

        可以在用户退出继续执行某一进程

         一般的命令 用户退登录 后就 停止执行 了, nohup 命令可以 使进程 用户退出登录 仍旧继续执行 ,nohup 命令将执行后的数据信息和错误信息默认 存储到文件 nohup.out 中

语法格式

        nohup program &

信号控制将进程

列出所有支持的信号

[root@joker ~]# kill -l

常用信号:
        编号   信号名
        1 )    SIGHUP             重新加载配置
        2 )    SIGINT               键盘中断 ^C
        3 )    SIGQUIT            键盘退出
        9 )    SIGKILL             强制终止
        15 )    SIGTERM        终止(正常结束),缺省信号
        18 )    SIGCONT        继续
        19 )    SIGSTOP         停止
        20 )   SIGTSTP          暂停 ^Z

进程相关命令及其功能

作业控制

定义

        作业控制 --- 一个命令行功能,允许一个shell 实例来 运行 管理 多个命令,Shell的一个特性,使用户能在多个独立进程间进行切换

命令及作用

命令作用
cmd&该命令在后台运行
Ctrl+d终止一个正在前台运行的进程(含有正常含义)
Ctrl+c终止一个正在前台运行的进程(含有强行含义)
Ctrl+z挂起一个正在前台运行的进程
jobs 显示后台作业被挂起的进程
bg重新启动一个挂起的作业,并在后台运行
fg把一个在后台运行的作业放到前台运行

作业标识符及作用

标识符作用
%N第N号作业
%S字符串S开头的被命令行调用的作业
%?S包含字符串S的被命令行调用的作业
%+默认作业(前台最后结束的作业,或后台最后启动的作业,等同于%%)
%-第二默认作业

案例

        示例1 --- 运行程序(时),让其在后台

[root@joker ~]# sleep 3000 &

        示例2 --- 查看后台挂起

[root@joker ~]# ps aux |grep sleep

        示例3 --- 查看后台作业

[root@joker ~]# jobs

        示例4 --- 将作业1调回到前台

[root@joker ~]# fg %1

        示例5 --- 终止PID为1的进程

[root@joker ~]# kill %1

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

White乄joker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值