目录
引言
在 Linux 系统中,进程管理是保障系统稳定运行、优化资源分配的重要环节。通过深入理解进程的生命周期、优先级机制以及调度策略,用户可以更高效地监控和调整系统性能。本文以理论结合实践的方式,详述了 Linux 进程的基本概念、常用工具命令及调度方法,为用户深入探索系统内核的运行机制提供了扎实的知识基础。
一、 Linux进程管理
(一)进程相关概念
(二)进程分类
1、状态分类
运行
:进程占用CPU正在运行。
等待
:进程正在等待某一事件或某一资源。
挂起
:正在运行的进程,因为某个原因失去CPU而暂停运行。
终止
:进程已结束。
休眠
:进程主动暂时停止运行。
僵死
:进程已停止运行,但是相关控制信息仍保留。
2、关系分类
子进程
:父进程创建的进程,执行任务,继承了父进程的某些资源。
孤儿进程
:父进程结束后,操作系统收养的进程,由 init 进程成为新的父进程。
僵尸进程
:子进程结束后,父进程没有及时获取其退出信息,导致其保留在进程表中。
3、功能分类
交互式进程
:需要与用户交互并根据用户输入输出数据,例如命令行工具或桌面应用程序。
批处理进程
:无需用户交互,按照预定任务自动执行,常用于定时任务如数据导入和备份。
实时进程
:对时间要求严格,必须在规定的时间内完成任务。
4、优先级分类
高优先级
:优先级数值越小,进程的优先级越高。例如,优先级为 -20 的进程会优先执行。
低优先级
:优先级数值越大,进程的优先级越低。例如,优先级为 19 的进程会在系统负载较低时才会得到调度。
(三)进程有关参数
PID
:进程号(Process ID),用于唯一标识进程。
PPID
:父进程号(Parent PID),创建某进程的上一个进程的进程号。
USER
:启动某个进程的用户ID和该用户所属组的ID。
STAT
:进程状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值。
PRIORITY
:进程的优先级。
源占用
:包括CPU、内存等资源的占用信息。
(四)ps命令
ps命令是最基本的进程查看命令,可确定有哪些进程正在运行、进程的状态、进程是否结束、进程是否僵死、哪些进程占用了过多的资源等等。
ps命令最常用的还是监控后台进程
的工作情况。
最常用的是使用aux
选项组合,用q
退出查看。
(五)top命令
top命令用于动态显示系统进程信息,可以每隔一短时间刷新当前状态,还提供一组交互式命令用于进程的监控。
(六)手动启动
在Shell命令行下输入要执行的程序来启动一个进程。
前台
:前台启动是指输入命令并直接运行程序,进程会占用当前的终端,直到程序运行结束。
后台
:后台启动是指通过在命令后加上 & 符号,使程序在后台运行。
在前台运行的话,输入 ls
命令,
前台启动
后台启动
(七)调度启动
预设某个程序在特定的时间自动运行,而不需要用户手动启动。
cron:适用于定期执行的任务(如每天、每周等),例如每天早上启动某个程序。
at:适用于一次性执行的任务,指定某一时刻启动某个程序
sudo apt install at
安装 at sudo systemctl start atd # 启动 at 服务 sudo
systemctl enable atd # 设置 at 服务开机启动 atq 查看当前的调度任务 atrm
删除某个调度任务,指定任务编号:atrm 1
(八)挂起与恢复进程
当一个进程正在运行时,按下 Ctrl + Z 键可以暂停(挂起)当前的前台进程,并将其放到后台。
挂起进程: 使用 Ctrl + Z。
查看后台作业: 使用 jobs。
恢复进程到前台: 使用 fg。
恢复进程到后台: 使用 bg。
(九)结束进程的运行
使用组合键Ctrl + C
中断前台进程。
使用 kill 命令结束后台进程:
kill [选项] <进程号>
选项与参数:
-l:列出目前 kill能够使用的信号 (signal)有哪些。
signal:代表给予后面工作什么样的指示,
-1:重新读取一次参数的配置文件(类似 reload);
-2:代表与由键盘输入 Ctrl+C同样的动作;
-9:立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作
-s SIGKILL
–signal SIGKILL
-9
(十)管理进程的优先级
进程优先级可以用nice值表示,范围一般为-20~19,-20为最高优先级,19为最低优先级,系统进程默认的优先级值为0。
命令nice
用于设置进程的优先级:
nice [-n] [命令 [参数] … ]
如果没有指定 -n,默认值是 10
命令renice
用于调整已经在运行的进程的优先级:
renice 优先级值 [-p 进程号] [-g 进程组] [-u 用户名称或ID]
二、使用系统监视
(一)w命令
用于显示登录到系统的用户情况提供关于当前系统状态以及每个用户活动的详细信息
语法:w -[husfV] [username]
-h:不显示标题。
-u:当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。
-s:使用短模式。不显示登录时间、JCPU和PCPU时间。
-f:切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名。
username:只显示指定用户的相关情况。
-V:显示版本信息。
(二)who命令
用显示目前登录进入系统的用户信息
who --help 查看帮助
(三)last命令
列出目前与过去登录系统的用户相关信息。
(四)top命令
top命令显示实时的进程列表,实时监视系统资源,包括内存、交换分区和CPU的使用率等。
(五)ps命令
ps命令 用于查看当前系统中运行的进程状态的工具。它提供了进程的快照信息,包括进程ID、CPU和内存使用情况等。
总结
Linux 系统的进程管理不仅是保障系统稳定运行的核心技术,更是系统优化和问题排查的重要工具。通过灵活运用本文介绍的工具和方法,用户能够高效查看和调试系统进程,合理分配资源,提高系统性能。在未来的实际应用中,还可结合脚本自动化和动态调度等技术,进一步增强系统的运行效率。理解并掌握这些内容将为开发者和运维人员在 Linux 环境下开展工作奠定坚实的基础。