Linux-进程的观察
16.1.1 进程与程序
- ·程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文 件的型态存在;
- ·进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序
第一个 bash 的 PID 与第二个 bash 的 PPID 都是 13928 啊, 因为第二个 bash 是来自于第一个所产生的嘛!
常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序 就会被我们称为:服务 (daemon)。所以,一般 daemon 类型的程序都会加上 d 在文件名后头~包括服务器篇我们会看到的 httpd, vsftpd。
16.3.1 进程的观察
ps :将某个时间点的进程运作情况撷取下来。
[root@study ~]# ps aux <==观察系统所有的进程数据 [root@study ~]# ps -lA <==也是能够观察所有系统的数据 [root@study ~]# ps axjf <==连同部分进程树状态
选项与参数:
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
常用的:
一个是只能查阅自己 bash 进程的『 ps -l 』
一个则是可 以查阅所有系统运作的进程『 ps aux 』!
[agan@localhost root]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
S - do_wai pts/ :: bash
R - - pts/ :: ps
S:代表这个进程的状态 (STAT),主要的状态有:
- § R (Running):该程序正在运作中;
- § S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
- § D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>打印)
- § T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
- § Z (Zombie):僵尸状态,进程已经终止但却无法被移除至内存外。
- PRI/NI:Priority/Nice 的缩写,代表此进程被 CPU 所执行的优先级,数值越小代表该进程越快被 CPU 执行
- ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该进程在内存的哪个部分,如果是个 running 的进程,一般就会显示『 - 』 / SZ 代表此进程用掉多少内存 / WCHAN 表示目前进程是否运作中, 同样的, 若为 - 表示正在运作中。
- TIME:使用掉的 CPU 时间,注意,是此进程实际花费 CPU 运作的时间,而不是系统时间;
[agan@localhost root]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.3 ? Ss : : /usr/lib/systemd/systemd --switched-root --system --d root 0.0 0.0 ? S : : [kthreadd]
root 0.0 0.0 ? S< : : [kworker/:0H]
root 0.0 0.0 ? S : : [ksoftirqd/]
root 0.0 0.0 ? S : : [migration/]
root 0.0 0.0 ? S : : [rcu_bh]
root 0.0 0.0 ? S : : [rcu_sched]
- § VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
- § RSS :该 process 占用的固定的内存量 (Kbytes)
- § TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登 入者进程,若为 pts/0 等等的,则表示为由网络连接进主机的进程。
- § STAT:该进程目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
top:动态观察进程的变化
[root@localhost ~]# top [-d 数字] | top [-bnp]
- -b :以批次的方式执行 top ,还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为文件。
- -n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
- -p :指定某些个 PID 来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
- ? :显示在 top 当中可以输入的按键指令;
- P :以 CPU 的使用资源排序显示;
- M :以 Memory 的使用资源排序显示;
- N :以 PID 来排序喔!
- T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
- k :给予某个 PID 一个讯号 (signal)
- r :给予某个 PID 重新制订一个 nice 值。
- q :离开 top 软件的按键。
top - 17:53:08 up 12:51, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863104 total, 1569792 free, 142924 used, 150388 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1561264 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 127952 6516 4104 S 0.0 0.3 0:01.36 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.74 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.26 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.36 watchdog/1
依次显示信息:
1->当前时间、开机时间、同时使用用户数,系统在 1, 5, 15 分钟的平均工作负载。
2->显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie)
3->显示的是 CPU 的整体负载
4、5->表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况
6->输入指令,显示状态的地方
范例二:将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt
[root@study ~]# top -b -n 2 > /tmp/top.tx
范例三:我们自己的 bash PID 可由 $$ 变量取得,请使用 top 持续观察该 PID
[root@study ~]# echo $$ 14836 <==就是这个数字!他是我们 bash 的 PID
[root@study ~]# top -d 2 -p 14836 top - 01:00:53 up 6:14, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s):0.0 us, 0.1 sy, 0.0 ni, 99.9 id, KiB Mem : 2916388 total, 1839264 free, 0.0 wa, 0.0 hi, 353424 used, 0.0 si, 0.0 st 723700 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 2318848 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14836 root 20 0 116272 3136 1848 S 0.0 0.1 0:00.07 bash
如果觉得内存以KB为单位不方便监控,可以按下E,则分别以KB、MB、GB、TB、PB、EB单位显示
Linux-进程的观察的更多相关文章
- 如何灵活运用Linux 进程资源监控和进程限制
导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...
- Linux 进程与信号的概念和操作
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 信号与进程几乎控制了操作系统的每个任务. 在shell中输 ...
- Linux进程作业常用命令
从鸟哥的私房菜书里摘抄的部分,方便查阅 一.作业管理 1.直接将命令放到后台执行的& 如想将/etc 备份为/tmp/ect.tar.gz时不想等待,可以这样做: ...
- Linux 进程资源用量监控和按用户设置进程限制
每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方 ...
- Linux 进程与信号的概念和操作 linux process and signals
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 译者:李秋豪 信号与进程几乎控制了操作系统的每个任务. 在 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
- TODO:Golang Linux进程退出说明
TODO:Golang Linux进程退出说明 Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码.传统上,code代码为零表示成功退出,非零错误退出. sysca ...
- Linux进程管理子系统分析【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- linux 进程管理相关内容
简介 当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中 ...
随机推荐
- React Native从零开始构建项目(2019)
环境搭建,参考官网 https://reactnative.cn/ 安装 Xcode Android Studio 目的,实现本地热重载开发,使用vsCode 运行失败,重新执行react-nativ ...
- 【数据结构】之链表(Java语言描述)
以前写过一篇帖子,记录了链表在C语言中的描述代码.C语言中没有链表的直接实现,因此,我们需要自己编写代码实现.请参考[我的这篇文章]. Java中默认为我们提供了链表的API—— LinkedList ...
- Prometheus 安装
目录 简介 安装部署 环境准备 安装 配置环境变量 配置 启动 简介 prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合. 时序(time serie ...
- 英语口语考试资料Language learning
"Learning a language is easy. Even a child can do it!" Most adults who are learning a seco ...
- JQuery之选择器转移
JQuery之选择器转移方法如下图: 代码实现: <script src="JS/jquery-1.12.4.min.js"></script> <s ...
- Spring Boot 整合 Druid
Spring Boot 整合 Druid 概述 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 SQL 解析器组成.该项目主要是为了扩展 JDBC 的一些限制,可以让程 ...
- Python字符串学习
Python字符串(不可变的): 一.相关的运算: 1.字符串的拼接: str = str1 + str2 2.字符串的重复: print(str * 3) 3.下标访问字符串某个字符: str[1] ...
- CF595 Div31249A,1249B1,1249B2,1249C1,1249C2,1249D1,1249D2,1249E,1249F)题解
A:水题,先排序,有相连的输出2,否则输出1. #include<bits/stdc++.h> using namespace std; #define pii pair<int,i ...
- 《Dotnet9》系列-开源C# Winform控件库1《HZHControls》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近在写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用dot ...
- Kinect-v2 Examples with MS-SDK(译文二)
K2-asset提供的脚本组件 K2-asset在KinectScripts文件夹中提供通用脚本组件,并在KinectDemos / 文件夹的相应脚本子文件夹中提供特定于演示的组件.可以在自己的Uni ...