Linux-进程的观察

16.1.1 进程与程序

  • ·程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文 件的型态存在;
  • ·进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序

第一个 bash 的 PID 与第二个 bash 的 PPID 都是 13928 啊, 因为第二个 bash 是来自于第一个所产生的嘛!

常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序 就会被我们称为:服务 (daemon)。所以,一般 daemon 类型的程序都会加上 d 在文件名后头~包括服务器篇我们会看到的 httpd, vsftpd。

16.3.1 进程的观察

ps :将某个时间点的进程运作情况撷取下来。

[[email protected] ~]# ps aux <==观察系统所有的进程数据 

[[email protected] ~]# ps -lA <==也是能够观察所有系统的数据 

[[email protected] ~]# 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 』!

[[email protected] root]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 1000 1971 1970 0 80 0 - 28862 do_wai pts/0 00:00:00 bash
0 R 1000 2013 1971 0 80 0 - 38312 - pts/0 00:00:00 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 运作的时间,而不是系统时间;
[[email protected] root]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 127952 6516 ? Ss 05:01 0:01 /usr/lib/systemd/systemd --switched-root --system --d root 2 0.0 0.0 0 0 ? S 05:01 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? S< 05:01 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 05:01 0:00 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 05:01 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_sched]
  • § VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
  • § RSS :该 process 占用的固定的内存量 (Kbytes)
  • § TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登 入者进程,若为 pts/0 等等的,则表示为由网络连接进主机的进程。
  • § STAT:该进程目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)

top:动态观察进程的变化

[[email protected] ~]# 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 [[email protected] ~]# top -b -n 2 > /tmp/top.tx
范例三:我们自己的 bash PID 可由 $$ 变量取得,请使用 top 持续观察该 PID
[[email protected] ~]# echo $$ 14836 <==就是这个数字!他是我们 bash 的 PID
[[email protected] ~]# 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单位显示

原文地址:https://www.cnblogs.com/AganRun/p/12078979.html

时间: 2024-10-14 04:56:06

Linux-进程的观察的相关文章

Linux进程与计划任务

Linux进程与计划任务 linux进程及作业管理 进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等特权操作模式切换(理想状态):70%CPU时间用户模式+30%CPU时间内核模式进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的存在生命周期的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述

如何灵活运用Linux 进程资源监控和进程限制

导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方法,这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生. 报告 Linux 进程统计信息 你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新. 为了使用这个工具,你首先需要安装 sysstat: # yum update && yum

Linux内核分析:实验六--Linux进程的创建过程分析

刘畅 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本次实验在MenuOS中加入fork系统调用,并通过GDB的调试跟踪,近距离的观察Linux中进程创建的过程.阅读Linux进程部分的源码,结合起来理解Linux内核创建新进程的过程. Linux中对进程的描述 Linux中task_struct结构体用于描述系统中的进程,对应x86机器的此结构体定义放在了/include/li

Linux 进程资源用量监控和按用户设置进程限制

每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方法,这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生. 报告 Linux 进程统计信息 你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新. 为了使用这个工具,你首先需要安装 sysstat: # yum update && yum in

Linux进程管理工具--God-详解(1)-入门

God是一个由Ruby编写的监控架构,它可以保障你的进程为运行状态,以及可以对一些特殊情况进行进程的重启.拓展可以通过frigga来进行全局god的管理. 最好的安装方式(通过ruby-gems): gem install god 快速启动 注意:快速启动需要0.12版本以上的,你可以使用以下命令查看版本: god --version 一个简单的例子:使用god保持一个简单的进程. 下面是一个简单的脚本,名字为hello.py #!/usr/bin/env python # import tim

Linux进程管理(鸟哥)

进程管理知识点总结: 一,什么是进程 1,进程与程序 (1)程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘.光盘.软盘.磁带等), 为实体文 件的型态存在: (2)进程 (process):程序被触发后,执行者的权限与属性.程序的程序代码与所需数据等都会被加载内存中, 操 作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序. (3)父进程和子进程:ps -l 父进程:pid 子进程:ppid 注:日常运维中,ki

Linux进程死锁定位

Linux进程死锁定位 最近定位一个服务问题时发现telnet某个端口,无法链接.无奈之下只能一步步排查. 端口是否存在 ss -l|grep LISTEN|grep 9999 如果端口存在那么可以观察该端口上的recv-q send-q 如果是发生死锁一般情况下这两个队列只会增加(当然当服务处理过慢时也会导致包堆积) Recv-Q Send-Q Local Address:Port Peer Address:Port 0 1024 *:5200 *:* 另外可以通过一下命令统计各类socket

Linux进程的睡眠和唤醒

1   Linux进程的睡眠和唤醒 在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING.一旦一个运行中的进程时间片用完, Linux内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行. 当然,一个进程也可以主动释放CPU的控制权.函数schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU.一旦这个主动放弃CPU的进程被重新调度占用CPU,那么它将从

Linux进程管理与调度-之-目录导航【转】

转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme 目录(?)[-] 项目链接 进程的描述 进程的创建 进程的加载与运行 进程的退出 进程的调度 调度普通进程-完全公平调度器CFS 日期 内核版本 架构 作者 GitHub CSDN 2016-07-21 Linux-4.6 X86 & arm gatieme

Linux进程管理简谈

Linux系统进程管理简谈 进程是什么? 简单来说进程是一个正在执行的程序的一个副本,存在生命周期,有段指令和代码在不断运行. linux内核存储信息的固定格式:task struct 进程的相关信息存储在链表中 多个任务的task struct组件的链表:task list 进程的创建:父进程创建子进程(内核创建init进程,剩余一切进程有init及其子进程进程创建) 父进程创建子进程时向内核调用fork()来创建子进程并且通过调用clone()复制父进程的信息给子进程 Linux进程的优先级