linux中的进程一般分为哪三类
在Linux系统中,进程通常根据其运行方式和特性分为以下三类:
1. 交互式进程(Interactive Processes)
- 特点:由用户通过终端(Shell)启动,需要与用户进行交互(如输入/输出)。
- 示例:文本编辑器(
vim
、nano
)、终端命令(ls
、grep
)、图形界面程序(如firefox
)。
- 行为:这类进程会占用终端,直到执行完成或被终止。如果终端关闭,进程通常会被终止(除非设置为后台或脱机运行)。
2. 批处理进程(Batch Processes / Non-interactive Processes)
- 特点:
- 在后台自动运行,无需用户交互。
- 通常由脚本或任务调度工具(如
cron
、at
)触发。
- 示例:系统日志轮转(
logrotate
)、备份脚本、编译任务(如make
)。
- 行为:不关联终端,运行时无用户界面,优先级通常较低(可通过
nice
调整)。
3. 守护进程(Daemon Processes)
- 特点:
- 系统后台服务进程,通常在系统启动时由
init
(如systemd
)启动。
- 独立于终端,长期运行,提供系统或网络服务。
- 示例:
sshd
(SSH服务)、httpd
(Web服务)、systemd
(初始化系统)。
- 行为:
- 名称通常以
d
结尾(如cron
、syslogd
)。
- 通过
fork()
和setsid()
脱离终端,成为独立的进程组。
补充说明
- 僵尸进程(Zombie):子进程结束后,父进程未回收其资源,此时进程状态为
Z
(严格来说不属于运行中的进程分类)。
- 孤儿进程(Orphan):父进程终止后,由
init
/systemd接管的后台进程。
分类依据
- 交互性:是否需要用户输入。
- 运行方式:前台/后台、是否长期驻留。
- 启动来源:用户手动启动、系统自动调度或服务管理。
通过ps aux
或top
命令可以查看进程状态,其中STAT
列会显示进程状态标志(如S
休眠、D
不可中断、R
运行中等)。