首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
前面小节对文件和目录的创建、删除、移动、重命名、查看、修改等操作做了介绍,本小节开始学习 Linux 进程相关的知识点,学习如何查看 Linux 中的进程信息,并介绍通过命令展示出来的进程信息。 1\. 进程概念简介 ---------- 进程(Process)是**系统中进行资源的分配和调度的基本单位**,是系统中的软件程序对某些数据集合的运行活动,是操作系统结构的基础。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。其定义如下: * 狭义定义:进程是正在运行的程序的实例; * 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 2\. 启动一个进程 ---------- 这里以启动一个 `apache2` 服务为例,首先使用 `apt` 命令安装 `apache2` 软件,命令如下: apt -y install apache2 如上图所示,已经安装好了 `apache2` 之后,可以使用如下命令启动 `apache2` 服务: service apache2 start 3\. 查看进程 -------- 在启动一个软件进程之后,可以使用 `ps` 命令查看启动软件的进程,命令如下: ps -aux | grep apache 执行结果如下图: > **Tips**:`ps -aux | grep apache2` 中的 `ps` 表示查看进程,`aux` 是进程跟的参数,`|grep apache2` 表示使用管道查看 `apache2` 的进程。 4\. ps 命令参数介绍 ------------- Centos操作系统中进程的状态有五种: * **运行**:正在运行或在运行队列中等待; * **中断**:休眠中,受阻,在等待某个条件的形成或接受到信号; * **不可中断**:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生; * **僵死**:进程已终止, 但进程描述符存在, 直到父进程调用 wait4() 系统调用后释放; * **停止**:进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信号后停止运行运行。 `ps` 命令可以用来查看进程相关信息,下面列举一些 `ps` 命令的参数: | ps 命令参数名称 | 功能与作用描述 | | :-- | :-- | | \-a | 显示现行终端机下的所有程序,包括其他用户的程序。 | | \-A | 显示所有程序。 | | \-c | 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 | | \-e | 此参数的效果和指定 `A` 参数相同。 例如: ps -e | | e | 列出程序时,显示每个程序所使用的环境变量。 | | f | 用ASCII字符显示树状结构,表达程序间的相互关系。 | | \-H | 显示树状结构,表示程序间的相互关系。 | | \-N | 显示所有的程序,除了执行ps指令终端机下的程序之外。 | | \-s | 采用程序信号的格式显示程序状况。 | | \-S | 列出程序时,包括已中断的子程序资料。 | | \-u | 以用户为主的格式来显示程序状况。 | | \-x | 显示所有程序,不以终端机来区分。 | > **Tips**:使用上述一个或者多个参数可以查看到指定的进程信息。 5\. 实时监测进程 ---------- 上面介绍的 `ps` 命令只能查看输入命令那一刻获取到的进程信息,而 `top` 命令可以实时监测进程信息: 下面对这些信息进程说明: * **PID**:进程号或进程ID; * **USER**:进程属主的名字; * **PR**:进程的优先级; * **NI**:进程的谦让度值; * **VIRT**:进程占用的虚拟内存总量; * **RES**:进程占用的物理内存总量; * **SHR**:进程和其他进程共享的内存总量; * **S**:进程的状态,`D` 表示可中断的休眠状态,`R` 表示运行状态,`S` 表示休眠状态,`T` 表示跟踪状态或停止状态,`Z` 表示僵化状态; * **%CPU**:进程使用的 CPU 时间比例; * **%MEM**:进程使用的内存占可用内存的比例; * **TIME+**:自进程启动到目前为止 CPU 时间总数; * **COMMAND**:进程所对应的命令行名称,也就是程序启动时的程序名。 > **Tips**:`top` 命令展示出来的信息默认是按照 `%CPU` 的值从大到小排序的。 6\. 小结 ------ 本小节介绍了,如何启动一个 `apache2` 程序进程,然后使用 `ps -aux | grep apache2` 命令查看 `apache2` 相关的进程信息,`ps` 和 `top` 命令都能查看进程信息,`ps` 查看的是输入命令之后那一刻的进程信息,而 `top` 命令可以实时监测进程信息,这些命令和参数在实际业务中特别重要,能快速看到那些软件应用的运行状态,它们占用的资源大小信息,从而可以很好地对系统和软件优化。
上一篇:
nano编辑器
下一篇:
Linux结束进程
该分类下的相关小册推荐:
Go开发权威指南(上)
Go Web编程(中)
Go语言入门实战经典
深入浅出Go语言核心编程(五)
深入浅出Go语言核心编程(四)
深入浅出Go语言核心编程(三)
Go Web编程(上)
Go进阶之分布式爬虫实战
深入浅出Go语言核心编程(七)
Go开发基础入门
WebRTC音视频开发实战
go编程权威指南(一)