进程是已启动的可执行程序的运行实例,进程有以下组成部分:
* 已分配内存的地址空间;
* 安全属性,包括所有权凭据和特权;
* 程序代码的一个或多个执行线程;
* 进程状态。
程序:二进制文件,静态/usr/bin/passwd,/usr/sbin/useradd
进程:是程序运行的过程,动态,有生命周期及运行状态。
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程ID(PID),满足跟踪安全性之需。任何进程都可以创建子进程。
所有进程都是第一个系统进程的后代;
Centos5/6系统进程:init Centos系统进程:systemd
一、进程管理
ps(process status)—进程状态
pa a -显示现行终端机下的所有程序;ps u 以用户为主的格式来显示程序状况;ps x 不以终端机来区分。
ps aux 输出的字段含义:
USER--运行进程的用户;PID--进程ID ;%CPU--CPU占用率;
%MEM---内存占用率; VSZ--占用虚拟内存;RSS--占用实际内存; TTY--进程运行的终端;STAT--进程状态;START--进程的启动时间;
TIME---进程占用CPU的总时间;COMMAND--进程文件,进程名
STAT---R:运行;S:睡眠; T:停止的进程;Z:僵尸进程;X:死掉的进程。
进程排序:ps aux --sort %cpu ---(可升序或者降序)
以CPU占比降序排列(减号是降序)
[[email protected] ~]# ps aux --sort -%cpu
[[email protected] ~]# ps aux --sort %cpu
进程的父子关系:ps -ef
查看进程的父子关系。 请观察PID和PPID
[[email protected] ~]# 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
[[email protected] ~]# 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,像windows的任务管理器
[[email protected] ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[[email protected] ~]# top -d 1 //每1秒刷新。
[[email protected] ~]# top -d 1 -p 10126 查看指定进程的动态信息
[[email protected] ~]# top -d 1 -p 10126,1 查看10126和1号进程
信号的种类
给进程发送信号(kill -l 列出所有支持的信号)
[[email protected] ~]# kill -l
编号 信号名
1 SIGHUP ----重新加载配置
2 SIGINT ----键盘中断(Ctr+C)
3 SIGQUIT -----键盘退出Ctr+\,类似SIGINT
9 SIGKILL -------强制终止,无条件
15 SIGTERM -----终止(正常结束),缺省信号
18 SIGCONT ----继续
19 SIGSTOP -----暂停
20 SIGTSTP -------键盘停Ctr+Z
*创建2个文件,查看终端号。
[[email protected] ~]# touch file1 file2
** 通过一个终端,打开一个vim
[[email protected] ~]# vim file1
***通过另一个终端,打开一个vim
[[email protected] ~]# vim file2
**** 通过另一个终端,查询两个进程。
[[email protected] ~]# ps aux |grep vim
root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1
root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2
****发送信号15 和信号9 ,观察两个终端程序状态。
[[email protected] ~]# kill -15 4362
[[email protected] ~]# kill -9 4363
观察两个终端,一个正常终止,一个非法杀死。
4、进程优先级nice
Linux进程调度及多任务,每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
在top中显示的优先级有 PR值和nice值
NI:实际nice值,nice值越大,优先级越低,反之nice值越小,优先级越高。
PR(+20):将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39。
查看进程的nice级别:ps axo pid,command,nice---sort=nice
手动启动不同nice
[[email protected] ~]# nice -n -5 sleep 6000 &
[1] 2220
[[email protected] ~]# nice -n -10 sleep 7000 &
[2] 2229
[[email protected] ~]# ps axo command,pid,nice | grep sleep
sleep 6000 2220 -5
sleep 7000 2229 -10
grep --color=auto sleep 2233 0
更改现有进程的nice级别
使用shell更改nice级别
(1)创建一个睡眠示例程序。
[[email protected] ~]# sleep 7000 &
[2] 2669
(2) 修改他的nice值。
[[email protected] ~]# renice -20 2669
2669 (进程 ID) 旧优先级为 0,新优先级为 -20,观察修旧的nice值。
作业控制是一个命令功能,也叫后台运行;有两个命令:foreground --fg 前台进程:也在终端中运行的命令,占领终端。
Background --bg 后台进程:没有控制终端,它不需要终端的交互,看不见,但是在运行。
后台程序控制示例
程序占领前台的现象:
运行一个程序,当前终端无法输入,观察占领前台的现象,输入大部分命令行是无效的。Ctrl+c终止进程
运行后台程序例子:
ps查询所有程序
jobs查看后台进程
调动后台程序至前台
消灭后台进程
三、虚拟文件系统proc
虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
CPU: /proc/cpuinfo
内存:/proc/meminfo
内核:/proc/cmdline
非常感谢您的阅读!非常感谢您的阅读!