内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等
什么是进程
Process: 运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
进程创建:
init:第一个进程,从 CentOS7 以后为systemd
进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write
进程,线程和协程
操作系统
查看进程中的线程:
cat /proc/PID/status |grep -i threads
进程状态
进程更多的状态:
运行态:running
就绪态:ready
睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死 态 的子进程
IPC 进程间通信
IPC: Inter Process Communication
同一主机:
pipe 管道,单向传输
socket 套接字文件
Memory-maped file 文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存
shm shared memory 共享内存
signal 信号
Lock 对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被 阻塞,直到锁被打开
semaphore 信号量,一种计数器
不同主机:socket=IP和端口号
RPC remote procedure call
MQ 消息队列,生产者和消费者,如:Kafka,RabbitMQ,ActiveMQ
进程优先级
进程树 pstree
pstree 可以用来显示进程的父子关系,以树形结构显示
-p 显示PID
-T 不显示线程thread,默认显示线程
-u 显示用户切换
-H pid 高度指定进程及其前辈进程
进程信息 ps
ps 即process state,可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关 信息均保存在/proc/PID目录下的各文件中
UNIX选项 如: -A -e
BSD选项 如: a
GNU选项 如: --help
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程树,相当于 --forest
k|--sort 属性 对属性排序,属性前加 - 表示倒序
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
L 显示支持的属性列表
-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e 显示所有进程,相当于-A -f 显示完整格式程序信息
-F 显示更完整格式的进程信息
-H 以进程层级格式显示进程相关信息
-u userlist 指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
查看进程信息prtstat
可以显示进程信息,来自于psmisc包
-r raw 格式显示
进程优先级调整
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)
nice命令 以指定的优先级来启动进程
renice命令 可以调整正在执行中的进程的优先级
显示CPU相关统计 mpstat 来自于sysstat包
查看进程实时状态 top
进程对应的内存映射pmap
虚拟内存信息vmstat
统计CPU和设备IO信息iostat
系统资源统计 dstat dstat由pcp-system-tools包提供,用于代替 vmstat,iostat功能
监视磁盘I/O iotop
显示网络带宽使用情况iftop 通过EPEL源安装
查看网络实时吞吐量nload
综合监控工具 glances
查看进程打开文件 lsof
信号发送 kill
显示当前系统可用信号:
kill -l
trap -l
常用信号:
1) SIGHUP 无须关闭进程而让其重读配置文件
2) SIGINT 中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT 相当于ctrl+\
9) SIGKILL 强制杀死正在运行的进程
15) SIGTERM 终止正在运行的进程,默认信号
18) SIGCONT 继续运行
19) SIGSTOP 后台休眠
killall 来自于psmisc包