什么是进程
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
进程的生命周期(了解)
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。
任何进程都可以创建子进程。
所有进程都是第一个系统进程的后代:
Centos5/6系统进程: init
Centos7系统进程: systemd
静态查看进程 ps
命令参数说明
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况。
ps x 不以终端机来区分。
ps aux 输出的字段含义
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存
TTY: 进程运行的终端
STAT: 进程状态
[常见]
R 运行
S 睡眠 Sleep
T 停止的进程
Z 僵尸进程
X 死掉的进程
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
进程排序
语法
ps aux --sort %cpu
示例
以CPU占比降序排列(减号是降序)
[root@lili ~]# ps aux --sort -%cpu
[root@lili ~]# ps aux --sort %cpu
进程的父子关系
语法
ps -ef
示例
查看进程的父子关系。 请观察PID和PPID
[root@lili ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 1月22 ? 00:00:07 /usr/lib/systemd/systemd
root 2 0 0 1月22 ? 00:00:00 [kthreadd]
root 3 2 0 1月22 ? 00:00:06 [ksoftirqd/0]
义显示字段(了解)
语法
ps axo
示例
[root@lili ~]# ps axo user,pid,ppid,%mem,command |head -3
root 8310 1 0.1 /usr/sbin/httpd
apache 8311 8310 0.0 /usr/sbin/httpd
apache 8312 8310 0.0 /usr/sbin/httpd
动态查看进程 top
动态查看进程 top,像windows的任务管理器
[root@lili ~]# top
//回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[root@lili ~]# top -d 1 //每1秒刷新。
[root@lili ~]# top -d 1 -p 10126 查看指定进程的动态信息
[root@lili ~]# top -d 1 -p 10126,1 查看10126和1号进程
作业控制 jobs(了解)
简介
作业控制是一个命令行功能,也叫后台运行。
关键词介绍
foreground
前台进程:是在终端中运行的命令,占领终端。
background
后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
后台程序控制示例
1.观察占领前台的现象
[root@lili ~]# sleep 2000
运行一个程序,当前终端无法输入。观察占领前台的现象。
大部分命令行输入已经无效。
2.运行后台程序
[root@lili ~]# sleep 3000 &
3.ps查询所有程序。
[root@lili ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
4.jobs查看后台进程。
[root@lili ~]# jobs
[1]- Running sleep 3000 &
5.调动后台程序至前台。
[root@lili ~]# fg 1 //
将作业1调回到前台
6.消灭后台进程
[root@lili ~]# kill %1
注意
注意,“kill 1” 和 “kill %1” 不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。
总结
& 后台运行程序
jobs 查询后台
kill %1 停止后台进程
虚拟文件系统 proc
简介
虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
CPU
/proc/cpuinfo
[root@lili ~]# cat /proc/cpuinfo
内存
/proc/meminfo
[root@lili ~]# less /proc/meminfo
内核
/proc/cmdline
[root@lili ~]# cat /proc/cmdline