linux 基础(10)进程管理
使用 ps 观察程序
ps -l
ps程序可以查询当前在运行的进程信息。ps -l可以列出详细的信息,默认仅列出当前 bash 相关的进程。
sudo -i
ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 2133 2113 0 80 0 - 3026 do_sys pts/0 00:00:00 sudo
4 S 0 2134 2133 0 80 0 - 2651 do_wai pts/0 00:00:00 bash
4 R 0 2146 2134 0 80 0 - 2854 - pts/0 00:00:00 ps
F代表程序旗标,表明程序的一些性质,图中 4 代表是 root 执行。
S代表该程序的运行状态。
| 字母 | 状态 |
|---|---|
| R | Running 运行中 |
| S | Sleep 休眠中,随意可以唤醒 |
| D | Disk Sleep 深入休眠,通常正在进行磁盘IO,不可唤醒 |
| T | Stopped 暂停状态 |
| Z | Zombie 进程已结束,但父进程没有回收 |
UID 是进程执行者的 UID, PID 就是进程的 ID,PPID 就是父进程的 PID。
PRI 和 NI 代表程序的执行优先级,越小则越优先执行。
C 代表程序的CPU占用率。ADDR 和 SZ 和内存相关,代表内存中的位置和占内存大小。WCHAN 表示 waiting channel 表明程序的等待运行进度。TIME代表该程序占用CPU运行的时间。
TTY 表示所在的终端,本地终端是TTY,其他则是动态的虚拟终端 pts。CMD 代表是哪个程序指令。
ps aux
ps aux或者ps -aux可以查看当前所有进程(两种不同的参数风格)。
ps aux | head -n 4
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 102724 11524 ? Ss 01:51 0:01 /sbin/init auto noprompt
root 2 0.0 0.0 0 0 ? S 01:51 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 01:51 0:00 [rcu_gp]
这和ps -l的信息基本是一样,RSS表示使用的物理内存大小,VSZ表示使用的虚拟内存大小,TTY为 ? 表示该进程并不在任何终端下运行。Start 表明该程序开始运行的时间。
top
top 可以动态查看几秒钟内各进程的信息,不过他可以按照内存使用,CPU占用等排序,可以更直观的查看资源使用信息。

pstree
pstree可以把当前进程的父子调用关系绘制成一个树形图,便于查看他们的关系。

向程序发送信号
在 linux 中,与程序交互的重要手段之一就是向程序发送信号。kill 可以用于发送信号,kill -l可以查询信号的种类
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
使用 kill -signalnumber PID 可以向对应 PID 的程序发送信号。
kill -9 1000 # -9即 kill 信号,强制要求程序退出,这是最常用的
kill -15 %2 # %开头表示背景工作号,-15表示要求正常结束
程序的优先级
每个进程都有一个PRI数值(priority)和 NI 数值(nice),这两个数字加起来就是程序的优先级,越低越优先。
为什么要设置两个数值呢?因为 PRI 是内核算出来的,不可更改的数,NI 则是用户可以手动调整的。通过调整 NI,就可以一定程度上自订程序的优先级。
# nice 命令
nice -n 10 command # 赋值 ni=10 的命令
renice 10 PID # 修改已有进程的 ni 值
root 可以修改所有进程的 NI 值,范围(-20 ~ 19),而一般用户只能调整自己进程的值,范围(0~19)。
查询程序打开的文件
fuser 查询一个文件或目录的使用者。
~$ fuser -v . # -v 查看详细信息
USER PID ACCESS COMMAND
/home/ubuntu: ubuntu 225862 ..c.. bash
相对的,lsof 查询程序已经打开的文件
lsof [-adu] # 列出程序打开的文件
+d: 限定目录
-u: 限定文件
-a: 需要多个条件同时满足
lsof -u ubuntu
# 太多了!而且不能指定pid,所以只能用grep选中要查看的程序了
lsof -a -u ubuntu +d .
pidof 可以快速根据命令名查找pid,默认会找出所有的pid
pidof bash
225862
linux 基础(10)进程管理的更多相关文章
- Linux系统管理10——进程和计划任务管理
Linux系统管理10——进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...
- Linux学习之进程管理(十九)
Linux学习之进程管理 进程查看 查看系统中所有进程,使用BSD操作系统的格式 语法:ps aux 选项: a:显示所有前台进程 x:显示所有后台进程 u:显示这个进程是由哪个用户产生的 语法:ps ...
- 【Linux学习】Linux系统管理1—进程管理
Linux系统管理1-进程管理 一.Linux的三种进程 Linux包括3中不同类型的进程: 交互进程:由一个shell启动的进程.交互进程可以在前后台运行 批处理进程:该进程和终端无联系,是一个进程 ...
- 《前端运维》一、Linux基础--10定时任务
一.进程管理 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体 ...
- Linux详解 --- 进程管理
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 进程管理一览 接下来的几篇博客,我将主要按照这个思维导图的划分去进行讲解. 管理 在理解什么是进程管理之前,我想我们可以先理解一下什么是管理! 问 ...
- Linux学习之进程管理
|-进程管理 进程常用命令 |- w查看当前系统信息 |- ps进程查看命令 |- kill终止进程 |- 一个存放内存中的特殊目录/p ...
- Linux网络和进程管理
1) 计算机网络是通过外围的设备和连接,将分布在相同或不同区域的多台计算机 连接在一起所形成的集合.网络中的计算机实现彼此间互相通信,并且可以共 同使用硬件.软件和数据资源,实现资源共享.Lin ...
- Linux网络配置&进程管理
原理图 查看ip和网关
- Linux系统分区 进程管理 软件包安装
对于一块新的磁盘来说,系统能够使用需要有分区.格式化文件系统.挂载等主要操作,下面通过命令的方式对一块磁盘进行操作. 一. Linux系统分区 1.1 在虚拟机开机前选择虚拟机配置,添加一个新的SCS ...
- 深入Linux内核架构——进程管理和调度(下)
五.调度器的实现 调度器的任务是在程序之间共享CPU时间,创造并行执行的错觉.该任务可分为调度策略和上下文切换两个不同部分. 1.概观 暂时不考虑实时进程,只考虑CFS调度器.经典的调度器对系统中的进 ...
随机推荐
- Java:自定义排序与sort()函数
自定义排序与Arrays.sort() 本篇题目来源:2022/11/13 Leetcode每日一题:https://leetcode.cn/problems/custom-sort-string 给 ...
- -webkit-box-orient:vertical 编译报错之autoprefixer问题
由于各大浏览器的兼容问题,autoprefixer 插件 就可以帮我们自动补齐前缀.它和 less.scss 这样的预处理器不同,它属于后置处理器. 预处理器:在打包之前进行处理 后置处理器:在代码打 ...
- variant conversion error for variable:v8
oracle 添加表数据报错:variant conversion error for variable:v8. 是数据类型不匹配.
- Windows 10 读取bitlocker加密的硬盘出现参数错误怎么解决?
我为了数据安全,用windows专业版的bitlocker加密了一个固态硬盘SSD做的移动硬盘(u盘同理),在家里电脑(windows10 家庭版)打开的时候出现了参数错误 即使密码输入正确还是这个错 ...
- selenium常用配置
def init_chrome_options(self,): chrome_options = webdriver.ChromeOptions() # 设置浏览器初始 位置x,y & 宽高x ...
- TCP协议三握四挥、socket模块
目录 传输层之TCP与UDP协议 应用层 socket模块 socket代码简介 代码优化 半连接池的概念 传输层之TCP与UDP协议 用于应用程序之间的通信 TCP与UDP都是用来规定通信方式的 ...
- 使用Typora写博客,图片即时上传
背景 习惯使用markdown的人应该都知道Typora这个神器,它非常简洁高效.虽然博客园的在线markdown编辑器也不错,但毕竟是网页版,每次写东西需要登录系统-进后台-找到文章-编辑-保存草稿 ...
- uniapp安装和使用
工具安装 开发uni-app需要安装HBuilder X. 下载地址:https://www.dcloud.io/hbuilderx.html. 下载成功后直接解压即可 创建第一个uni-app 点击 ...
- gin模板语法
输出数据: 语句:{{.}} 用法: 在html文件中调用 输出里面的结果 多个目录下定义模板: 语句:{{ define "xxx目录/xxx文件.html"}} ...
- [常用工具] Python视频处理库VidGear使用指北
VidGear是一个高性能的Python视频处理库,它在预载多个专业视频图像处理库的基础上,如OpenCV.FFmpeg.ZeroMQ.picamera.starlette.yt_dlp.pyscre ...