当前位置: 首页 > news >正文

linux进程管理

进程管理

进程是启动的可执行程序的一个指令

1、进程简介

(1)进程的组成部分

  • 已分配内存的地址空间
  • 安全属性,包括所有权凭据和特权
  • 程序代码的一个或多个执行线程
  • 进程状态

(2)程序和进程的区别

程序是一个静态的二进制文件,进程是程序运行的过程

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

(3)进程和线程的区别

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

(4)前台进程和后台进程

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

[root@tianqinwei test]# 
  • 后台进程:在 Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。“后台进程必须是非交互式的”
[root@tianqinwei test]# sleep 5 &
[1] 30687
[root@tianqinwei test]#

(5)进程分类

例:交互进程和守护进程

[root@tianqinwei test]# read -p "input name:" name --- 交互进程
input name:student

[root@tianqinwei test]# systemctl enable --now vdo.service --- (启动系统服务)守护进程

2、进程的基本状态和状态转换

(1)进程状态

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

(2)状态转换


3、查看进程

(1)w

[root@tianqinwei ~]# w
 19:14:36 up 2 days,  1:02,  2 users,  load average: 0.10, 0.04, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.174.1    Sat18    1.00s  0.20s  0.01s w
root     pts/1    192.168.174.1    18:19    4.00s  0.02s  0.01s -bash

信息含义:

  • JCPU: 以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的 CPU时间会显示在这里
  • PCPU : cpu 执行程序消耗的时间
  • WHAT: 用户下在执行的操作
  • load average : 分别显示系统在过去 1、 5、 15分钟内的平均负载程度
  • FROM : 显示用户从何处登录系统,“: 0”的显示代表该用户时人 X Windows 下,打开文本模式窗口登录的
  • IDLE: 用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置

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

(2)静态查看进程:ps

<1> 常用选项:

-a 显示所有用户的进程
-u显示用户名和启动时间
-x显示没有控制终端的进程
-e显示所有进程,包括没有控制终端的进程
-l 长格式显示
-w宽行显示,可以使用多个 w 进行加宽显示
-f做一个更完整的输出

<2> 常用命令:

[root@tianqinwei ~]# ps -ef 
[root@tianqinwei ~]# ps aux 

<3> 案例:

例1:将占cpu的前10个进程列出来

例2:自定义显示进程信息

附:查找服务进程号:pgrep/pidof [服务名称]

[root@tianqinwei ~]# pgrep sshd --- 多行显示
994
2321
2341
[root@tianqinwei ~]# pidof sshd --- 单行显示
2341 2321 994

(3)动态查看进程:top

  • 格式:top [-d 数字] | [-bnp]

<1> 常用选项

-d后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒
-b以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件
-n与-b搭配,进行几次top的输出结果
-i不显示闲置或者僵死的进程信息
-c显示进程的整个命令路径,而不是只显示命令名称
-s使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
-p指定某些个PID来进行查看检测

<2> 案例

设置进程刷新时间:
[root@tianqinwei ~]# top -d 2 --- 过两秒刷新一次
查看指定进程的动态信息:
[root@tianqinwei ~]# top -d 1 -p 10126 --- 查看进程号10126的进程每秒的动态信息
将信息写入文件:
[root@tianqinwei ~]# top -d 1 -b -n 2 > a.txt --- 每过一秒将两次top信息写入到文件中

4、信号控制进程

(1)查看所有支持的信号:kill -l 

(2)常用信号

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

(3)案例

例1:终止进程

[root@tianqinwei ~]# pidof httpd
31756 31755 31754 31753 31752
[root@tianqinwei ~]# kill -9 31756 --- 强制终止进程
[root@tianqinwei ~]# pidof httpd
53823 31755 31754 31753 31752

例2:终止httpd的所有进程

[root@tianqinwei ~]# pidof httpd
53823 31755 31754 31753 31752
[root@tianqinwei ~]# killall httpd --- 为所有httpd进程发送信号
[root@tianqinwei ~]# pidof httpd

(4)简介

案例:

[root@tianqinwei ~]# sleep 200 --- 运行程序,将前台运行的程序挂起在后台并^Z中止
^Z
[1]+  Stopped                 sleep 200
[root@tianqinwei ~]# jobs --- 查看后台作业
[1]+  Stopped                 sleep 200
[root@tianqinwei ~]# fg 1 --- 将作业1调回前台后,再^Z在后台挂起中止
sleep 200
^Z
[1]+  Stopped                 sleep 200
[root@tianqinwei ~]# bg 1 --- 将作业1在后台运行
[1]+ sleep 200 &
[root@tianqinwei ~]# jobs --- 查看后台作业
[1]+  Running                 sleep 200 &
[root@tianqinwei ~]# kill %1 --- 中止后台作业1的进程
[root@tianqinwei ~]# jobs
[1]+  Terminated              sleep 200

相关文章:

  • 每天学一点之Lambda表达式
  • Linux常用命令
  • 植物大战 仿函数——C++
  • 自动写代码?别闹了!
  • Linux中sudo,su与su -命令的区别
  • 因为锁的问题,我们被扣了1万
  • 当我尝试问了chatGPT几个问题之后,我感到了危机......
  • Spring 事务管理详解及使用
  • 第十四届蓝桥杯三月真题刷题训练——第 9 天
  • 【C语言】指针的深度理解(一)
  • python带你成功复刻热门手机游戏——飞翔的小鸟
  • Redis源码---整体架构
  • STM32之SPI
  • 课设-机器学习课设-实现新闻分类
  • 什么是刺猬理念
  • 软件测试用例篇(5)
  • 【CSS】快速入门笔记
  • 设计模式之不变模式
  • 【LeetCode】33. 搜索旋转排序数组、1290. 二进制链表转整数
  • HTTPS协议之SSL/TLS详解(下)
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读