进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。
任何进程都可以创建子进程。
所有进程都是第一个系统进程的后代。
注释
Centos5/6系统进程: init
Centos7系统进程: systemd
在多任务处理操作系统中,每个CPU(或核心)
在一个时间点上只能处理一个进程。
在进程运行时,它对CPU 时间和资源分配的要求会不断变化,
从而为进程分配一个状态,它随着环境要求而改变。
什么样的是进程呢?
这就叫做进程,Windows的。
实例:
[root@cyb ~]# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128096 6708 ? Ss 16:20 0:01 /usr/lib/systemd/systemd
命令说明:
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况。
ps x 不以终端机来区分。
ps aux 输出的字段含义:
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (STATE) 进程状态有很多{R 运行
S 睡眠 Sleep
T 停止的进程
Z 僵尸进程
X 死掉的进程}
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
进程的父子关系:
查看进程的父子关系。 请观察PID和PPID
[root@cyb ~]# 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]
什么叫动态进程?
top查看动态进程:
上部分
top - 11:45:08 up 18:54, 4 users, load average: 0.05, 0.05, 0.05
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3865520 total, 1100000 free, 580268 used, 2185252 buff/cache
KiB Swap: 4063228 total, 4063228 free, 0 used. 2917828 avail Mem
第一行:
第二行
第三行
第四行
第五行
下部分
VIRT:virtual memory usage 虚拟内存(需要这些内存,但并没有占满)
RES:resident memory usage 常驻内存(用了多少内存)
SHR:shared memory 共享内存(1、除了自身进程的共享内存,也包括其他进程的共享内存)
top技巧:
动态查看进程 top,像windows的任务管理器
[root@cyb ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[root@cyb ~]# top -d 1 //每1秒刷新。
[root@cyb ~]# top -d 1 -p 10126 查看指定进程的动态信息
[root@cyb ~]# top -d 1 -p 10126,1 查看10126和1号进程
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
优先级的等级规则:
nice 值越高: 表示优先级越低,例如+19
nice 值越低: 表示优先级越高,例如-20
图示:
查看进程的nice级别:
[root@localhost ~]# ps axo pid,command,nice,cls --sort=-nice
启动具有不同nice级别的进程
实例:
[root@localhost ~]# nice -n -5 sleep 6000 &
[1] 2220
[root@localhost ~]# nice -n -10 sleep 7000 &
[2] 2229
[root@localhost ~]# ps axo command,pid,nice | grep sleep
sleep 6000 2220 -5
sleep 7000 2229 -10
grep --color=auto sleep 2233 0
作业控制是一个命令行功能,也叫后台运行。
1、观察占领前台的现象
[root@qianfeng ~]# sleep 2000
2.运行后台程序
[root@qianfeng ~]# sleep 3000 &(&表示程序在后台进行)
3.ps查询所有程序
[root@qianfeng ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
4.jobs查看后台进程
[root@qianfeng ~]# jobs
[1]- Running sleep 3000 &
5.调动后台程序至前台
[root@qianfeng ~]# fg 1 //将作业1调回到前台
6.消灭后台进程
[root@qianfeng ~]# kill %1
注意:
“kill 1” 和 “kill %1” 不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。
虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
CPU
/proc/cpuinfo
[root@qianfeng ~]# cat /proc/cpuinfo
内存
/proc/meminfo
[root@qianfeng ~]# less /proc/meminfo
内核
/proc/cmdline
[root@qianfeng ~]# cat /proc/cmdline