linux进程,分类,特殊进程, 状态标记, 常用命令。
linux进程的分类
前台进程: 具有终端,可以和用户进行交互的进程(占用终端,比如终端执行一段死循环的代码,这个时候终端输入是不起作用的,必须ctrl c 退出执行的内容才可以, 执行这个死循环的代码的进程就可以称之为前台进程)比如如下代码 python3 x.py。
# x.py
import time while True: print("hello world") time.sleep(3)
后台进程:后台进程基本上不需要和用户交互,优先级比前台进程低(命令后面加上&),python3 x.py &, 这时候ctrl c 不能停止任务执行,hello world仍然会输出到命令行里面。
在后台执行可是不在命令行中打印: python3 x.py 2>&1 > /dev/null &
守护进程(特殊的后台进程): 很多守护进程在系统启动的时候就跟随启动了, 一直运行到系统关闭。
linux有很多典型的守护进程: 以d为结尾的通常都是守护进程 比如 crond(定时任务进程) httpd(http服务进程) sshd(ssh登陆守护进程) mysqld
父进程与子进程
进程A调用了fork接口创建了进程B,就称B为A的子进程,A为B的父进程。
父子进程关系可以通关 pstree 命令来查看。
特殊进程
ID为0的进程是idle进程,是系统创建的第一个进程。
ID为1的进程是init进程,是0号进程的子进程,完成系统的初始化。
init进程是所用用户进程的祖先进程。
进程的状态标记
查看进程状态 ps -aux | grep [ID] (mac系统 -aux 替换为 aux)
操作进程的常用命令
ps命令
ps -aux 查看所有进程
ps -u [username] 某用户的进程
ps -aux | grep [x] x可以是ID,或者程序名称之类的比如python3
ps -ef --forest (mac没有 可以用pstree) 查看进程父子状态
ps -aux --sort=-pcpu (cpu占用率排序 输出进程)
ps -aux --sort=-pmem(内存占用率排序)
还有 top 和 kill命令。