Linux的进程管理 目录一、程序与进程的关系1.1 概念1.2 进程分类二、查看进程信息2.1 静态进程2.2 动态进程2.3 其他查看进程命令2.3.1 pgrep命令查询2.3.2 pstree命令查询三、进程启动方式3.1 手动启动3.2 调度启动四、进程前后台调度4.1 CtrlZ组合键4.2 jobs 命令五、终止进程5.1 CtrlC组合键5.2 kill 命令5.3 killall 命令5.4 pkill 命令六、计划任务管理6.1 一次性at6.2 周期性cron七、总结一、程序与进程的关系1.1 概念程序是存储在硬盘等介质上的可执行代码类似于一本书的内容静态地保存着等待被使用。比如你下载并安装的应用程序如 Firefox其可执行文件便是程序本身。进程则是程序在运行时的实例好比一本书被人翻开并阅读内容在眼前“活”了起来。每当你启动一个程序操作系统便会为其创建一个进程并分配内存和CPU时间使之真正得以执行。1.2 进程分类父进程指主动创建并启动其他进程的进程扮演着“发起者”或“管理者”的角色类似于家庭中的家长。子进程由父进程通过系统调用创建并运行的独立进程承担父进程分配的具体任务类似于家庭中受家长指派、独立行动的子女。二、查看进程信息2.1 静态进程查看静态进程的命令为ps常见的命令有ps -aux显示所有进程包括其他用户的进程。想找出哪个进程占用了大量CPU或内存就选 它。它直接提供了 %CPU 和 %MEM 列一目了然。其中分别代表的意义为USER进程所属的用户。PID进程 ID。%CPU进程占用的 CPU 百分比。%MEM进程占用的内存百分比。VSZ进程使用的虚拟内存单位 KB。RSS进程使用的物理内存单位 KB。STAT进程的状态常见状态有R运行、S睡眠、Z僵尸、T停止等。START进程的启动时间。TIME进程占用的 CPU 时间。COMMAND启动该进程的命令。ps -ef以标准格式显示所有进程。想确认某个进程是由谁启动的就用它它包含的 PPID父进程ID 列能帮你理清进程树。其中分别代表的意义为UID进程所有者的用户名或用户ID。PID进程的唯一标识号Process ID。PPID父进程的IDParent Process ID即创建当前进程的父进程编号。CCPU使用率以整数形式表示。它反映了进程最近占用的CPU时间百分比在一些系统中是累积使用率或调度优先级相关的指标。STIME进程的启动时间Start Time通常显示为具体的时间点或日期。TTY进程关联的终端Teletypewriter。如果是?表示该进程没有关联终端通常是后台守护进程。TIME进程自启动以来累计占用的CPU时间以分钟和秒为单位如00:00:15表示累计使用了15秒CPU。CMD启动该进程的命令名称包含参数选项有时会截断显示。2.2 动态进程查看动态进程的命令为top其中分别代表的意义为PID进程 ID。USER启动该进程的用户。%CPU进程占用的 CPU 百分比。%MEM进程占用的内存百分比。TIME进程累计使用的 CPU 时间。COMMAND执行的命令。top 命令有几个常用的快捷键分别为P 按 CPU 使用率排序。M 按内存使用量排序。T 按时间排序。q 退出 top。ctrlc 也可以1 查看几个cpu2.3 其他查看进程命令2.3.1pgrep命令查询常用的参数为-l根据进程名查找进程IDPID并同时显示进程的名称。-u选项查询特定用户的进程-t选项查询在特定终端运行的进程pgrep -l log系统会查找所有进程名或命令名中包含 log 字符串的进程并同时显示它们的 PID 和完整进程名称。pgrep -u zdw 系统会查找用户名为 zdw 的所有进程但是只会显示进程ID。pgrep -l -u zdw系统会查找用户名为 zdw 的所有进程并同时显示它们的 PID 和完整进程名称。pgrep -t pts/0系统会查找所有在终端 pts/0 上运行的进程并显示它们的 PID。pgrep -l -t pts/0系统会查找所有在终端 pts/0 上运行的进程并显示它们的 PID 和进程名称。2.3.2pstree命令查询pstree 命令默认情况下只显示各进程的名称。常见的参数有-p选项使用时可以同时列出对应的PID号-u选项可以列出对应的用户名-a选项可以列出完整的命令信息pstree -aup可以查看当前系统的进程树包括各进程对应的PID 号、用户名、完整命令等信息。pstree -aup zdw 查看 zdw 用户的进程树。三、进程启动方式3.1 手动启动由用户通过输入命令或可执行文件路径来手动启动每次操作至少会创建一个进程。根据进程是否占用当前的命令终端手工启动又可分为前台启动和后台启动两种方式。前台启动用户输入命令如 ls -l后进程在前台运行会占用当前终端。在此期间用户必须等待该进程执行完毕并退出才能继续输入其他命令。大多数命令操作默认采用前台启动方式。后台启动进程在后台运行不占用终端界面用户无需等待进程结束即可在同一终端中继续执行其他命令。这种方式特别适合执行耗时较长的任务。启动后台进程时只需在待执行命令的末尾加上操作符。进程启动后即被放入后台运行从而释放前台命令操作界面方便用户进行其他操作。例如使用 cp 命令从光盘制作镜像文件时由于数据量大、耗时较长可以结合 符号将复制任务放入后台执行使终端不会被长时间阻塞用户可以继续进行其他操作。cp /dev/sr0 /home/cetos7.iso 3.2 调度启动在服务器运维工作中经常需要执行一些耗时较长且资源占用较高的任务如数据备份。这类任务更适合在系统负载较低的时段如夜间执行因此用户需要事先进行调度安排指定任务的运行时间。当系统时间到达设定时刻时会自动启动并完成相应的任务。通过调度方式启动的计划任务进程均在后台运行不会占用用户的命令终端。进程的调度启动可以通过at或crontab命令进行设置at 命令用于设置一次性计划任务例如在 12:15 时重启网络服务。crontab 命令用于设置周期性计划任务例如每周五 17:30 备份数据库。四、进程前后台调度4.1CtrlZ组合键当 Linux 系统中的命令正在前台执行尚未结束时按下CtrlZ组合键可以将当前进程挂起即将其调入后台并暂停运行。这一操作在需要临时中断当前任务以执行其他命令时非常实用。如打包大文件时会花费很长时间假如我们在前台执行了命令按CtrlZ将其放到后台运行。tar zcvf usr.tar.gz /usr4.2jobs命令jobs 命令用于查看当前会话中运行的后台任务。常用命令jobs -l 列出当前所有后台任务及其进程ID。当中又有两个命令fg和bg。fg将后台任务带回前台执行。bg将暂停的任务放回后台继续执行。五、终止进程5.1CtrlC组合键中断正在执行的命令5.2 kill命令kill命令用于发送信号给进程通常用来终止进程。常用的选项-3其核心作用是强制终止进程并生成日志文件。-9其核心作用是强制终止进程。-15其核心作用是优雅退出进程。5.3killall命令killall 命令根据进程名称终止进程。killall httpd 把进程名为 httpd 的全部终止。5.4pkill命令pkill 命令根据进程属性如用户名、终端等终止进程。pkill -u zdw 终止用户名为 zdw 的进程。六、计划任务管理6.1 一次性atat 命令用于设置一次性任务任务将在指定时间执行。命令格式为at [HH:MM] [yyyy-mm-dd]at [要执行的命令]常见的选项atq 列出待执行的任务。atrm [任务编号] 删除指定的任务。6.2 周期性croncron 用于设置定期执行的任务。用户可以通过 crontab 命令编辑和管理自己的计划任务。命令格式* * * * * 命令分 时 日 月 周每个字段的取值范围分钟0-59小时0-23日期1-31月份1-12 星期0-60为周日其他符号减号“-”表示一个连续的时间范围如“1-4”表示整数1、2、3、4。逗号“,”表示一个间隔的不连续范围如“3, 4, 6, 8”。1,3,5 2,4,6斜杠符号“/”可以用来指定间隔频率如在日期字段中的“*/3”表示每隔3天。常用命令crontab -e 编辑当前用户的 cron 任务。crontab -l 列出当前用户的 cron 任务。crontab -r 删除当前用户的所有 cron 任务案例设置每天的 7:50 启动 httpd 服务22:50 停止 httpd 服务。注必须启动 crond 服务七、总结1. 程序与进程程序是存储在硬盘上的静态可执行代码进程是程序运行时在内存中的动态实例。父进程创建并启动子进程子进程独立运行并执行父进程分配的任务。2. 静态查看进程psps -aux 显示所有进程的详细资源占用%CPU、%MEM适合排查资源问题ps -ef 以标准格式显示所有进程包含 PPID 列适合查看进程父子关系。3. 动态查看进程toptop 实时动态显示系统进程和资源占用情况按 P 键按CPU排序按 M 键按内存排序。4. 按条件查找进程pgrep 与 pstreepgrep 可根据进程名、用户名、终端等条件查找进程结合 -l 显示 PID 和进程名pstree -aup 以树形结构显示进程父子关系及PID、用户和完整命令。5. 手工启动进程前台启动占用终端需等待进程结束才能继续操作后台启动在命令末尾加 释放终端供用户继续执行其他命令适合耗时任务。6. 调度启动进程at 命令设置一次性计划任务crontab 命令设置周期性计划任务。7. 前后台任务调度CtrlZ 将前台进程挂起暂停并调入后台jobs -l 查看后台任务列表fg 调回前台bg 恢复暂停任务继续后台运行。CtrlC 中断前台命令。8. 终止进程kill 发送信号终止进程-15 优雅退出、-9 强制终止、-3 生成日志killall 按进程名终止所有同名进程pkill 按用户、终端等属性条件终止进程。9. 一次性计划任务atat 时间 进入交互模式输入要执行的命令用于设置仅执行一次的计划任务。10. 周期性计划任务croncrontab -e 编辑任务-l 列出任务-r 删除所有任务。时间格式为“分 时 日 月 周 命令”支持 -连续范围、,不连续间隔、/间隔频率。配置后需确保 crond 服务已启动。