来历:如此众生s
本教程深入探讨了在 Linux 中办理进程的实践方面,这关于毛病扫除和资源办理来说是一项十分有用的技术。
译自Linux: Manage System Processes,作者 Damon M Garn。
进程是正在运转的代码的实例。它是一个正在履行的程序,例如网页阅读器或文本编辑器。Linux 操作体系自身也由进程组成。这些正在运转的服务、应用程序和操作体系组件会耗费核算机上的资源,并或许拜访数据。了解进程至关重要,由于它能够完结高效的资源办理和毛病扫除,这些使命一般归于 Linux 办理员的责任规模。
本教程深入探讨了在 Linux 中办理进程的实践方面。它为您供给了辨认和显现进程的常识,这在毛病扫除和资源办理期间十分有用。您还将探究各种 Linux 有用程序,这些有用程序能够供给有关进程行为的见地,这对任何 Linux 用户或办理员来说都是名贵的东西集。
要依照本教程的指令和示例进行操作,您需求一个可用的 Linux 发行版。不管您运用的是物理核算机仍是虚拟核算机,任何 Linux 发行版都应该满足。请记住,尽管某些发行版或许包含不同的东西,但我将在本文中评论的东西在大多数 Linux 发行版中都能够找到。本教程是关于 Linux 体系办理员的归纳系列的一部分,旨在为您供给有用办理 Linux 环境所需的技术和常识。
您能够依照Linux:Linux 技术模块库的配套实验室文章中的信息构建一个实验室环境。
在本系列中,咱们还介绍了 Linux 内核怎么与硬件交互,怎么Linux 办理体系服务以及怎么Linux 办理用户。
进程是体系上正在履行的程序。它们包含几个组件,包含:
Linux 进程具有以下几个特色:
进程或许存在于几种状况中,即运转、休眠或中止。Linux 发行版包含各种东西来检查和办理体系上的进程。这些东西包含ps、pidof、kill等。本教程将检查多个有用程序。
假如您需求温习 Linux 指令的语法,请参阅了解 Linux 指令行文章。
大多数情况下,Linux 用户和办理员经过指令或图形图标发动和中止应用程序来办理应用程序。发动这些应用程序会发动一个或多个进程。退出程序会完毕这些进程。
以下是发动和中止man页面应用程序以显现ls指令的协助文件的典型办法。
此指令发动运转机器代码所需的任何进程,构成man页面检查器应用程序。
经过挑选q键高雅地退出man页面程序。这应该封闭程序,完毕任何相关的进程。
留意:man页面体系包含 Linux 文档。它关于显现协助文件很有用,该文件显现指令的语法和各种选项(修饰符)。语法是man program-name,例如上面的man ls示例。
那么,需求进行哪些办理呢?假如应用程序发动和中止正常,办理员简直不用忧虑。可是,假如程序无法正常运转,办理员或许需求手动封闭应用程序或检查它正在耗费哪些资源。
Linux 用户经过称号引证程序,例如 Vim 文本编辑器。可是,核算机经过 ID 号引证这些进程。
进程 ID (PID) 是 Linux 内核在进程生成(发动)时分配给进程的仅有数字。PID 很重要,由于它们是办理员重视进程的一种方法。办理员或许需求知道进程耗费了多少内存或处理器时刻。假如进程没有正确退出,办理员或许还需求手动完毕进程。
图 1:ps 指令的输出部分显现了一个用户手册进程。进程 ID 在第二列(340543)。
留意:以 root(办理员)用户身份登录 Linux 体系是一种糟糕的安全做法。大多数体系会强制您以普通用户身份登录,然后运用sudo(超级用户履行)指令提高您的权限。运用 sudo 时,体系或许会提示您输入暗码。本教程中的一些指令或许需求在您的 Linux 发行版上运用 sudo 指令。
首要的进程办理指令是ps。这个灵敏而强壮的指令能够显现进程并供给许多选项。
列出一切进程以及弥补信息:
$ ps -ef
图 2:ps -ef 指令的部分输出。
这或许是大多数办理使命中最常见的ps指令用法。
ps -ef指令显现一切正在运转的进程,这意味着您或许会得到很多的成果。在本教程的后边,我将向您展现怎么运用grep有用程序过滤或查找这些成果。
运用-u选项列出给定用户的进程:
$ ps -u username
参阅ps的手册页以了解其他选项。
办理作业
程序一般在远景运转,这意味着它们会占用界面,您和体系都会专心于它们。可是,能够将进程在后台履行。这会导致它们运转,但答应您持续运用指令行界面 (CLI) 来完结其他使命。
要将进程置于前台和后台,您有必要运用一组不同的标识符。具体来说,这些是作业 ID。作业 ID 与进程 ID 略有不同。进程 ID 在体系规模内进行符号,而作业 ID 在每个用户的基础上进行标识。一切作业都是进程,但并非一切进程都是作业(由于某些进程未分配给特定用户)。
当您第一次运转作业时,它会在前台履行,占用 shell 并阻挠您运转其他指令。假如您要发动长时刻的备份作业或其他需求一段时刻才干运转的使命,这或许会成为问题。
您能够运用Ctrl-Z中止正在运转的进程,然后键入bg将其置于后台。您能够经过键入程序称号并增加&字符将程序直接发动到后台。
$ man ls &
此指令示例在后台运转man ls指令。
运用jobs指令显现正在运转的作业。
图 3: jobs 指令会显现当时手册页的使命。
运用fg指令和作业 ID 号将作业置于前台(或许用于检查其进展或状况)。
$ fg %1
图 4:找到手册页作业的作业号 (1),然后将其移至前台。
运用grep过滤ps成果
出产 Linux 体系或许一同运转数千个进程,这使得阅读或查找ps指令输出变得困难。您能够将ps与名为grep的过滤或形式匹配有用程序结合运用,以找到您要查找的内容。
运用ps和grep的语法如下:
$ ps -ef | grep process_name
我将分化每个部分。
图 5:将 grep 形式匹配器增加到 ps 以过滤成果。
留意:您能够将| grep pattern与许多其他指令一同运用。运用grep的-i选项疏忽大小写差异。例如,测验运用ls指令查找/etc目录(配置文件)中的任何网络文件和目录:
$ ls /etc | grep -i net
图 6:ls 指令等其他指令与 grep 结合运用的示例。
大多数应用程序将正常退出,这意味着它们将 CPU 时刻和内存地址回来给操作体系并完毕自己的进程。有时,应用程序不会正常退出,办理员有必要运用kill指令完毕进程。
kill 指令能够向应用程序发送各种信号,但最重要的信号是 -9 或 SIGKILL。此信号清晰完毕进程,强制其封闭并将资源回来给体系。
请留意,假如以这种方法完毕程序,您将丢掉任何未保存的数据。杀死进程一般是最终的手法。
该指令如下所示(假定 PID 为 9876):
$ kill -9 9876
其他信号包含:
杀死进程是一个严峻的操作。尽或许测验高雅地完毕进程。
了解僵尸进程
您或许会遇到的一个办理使命是消除僵尸进程。僵尸进程是已中止运转但未正确完毕一切进程的程序的剩下组件。这些僵尸进程在不再支撑应用程序时持续耗费进程 ID。这一般不是问题,但您应该留意它们。您需求经过完毕父进程来整理僵尸进程。
相同,僵尸进程不会耗费太多 CPU 或内存资源,因而不用过于忧虑。
首要的进程办理东西是 ps,但还存在其他几个用于操作进程的有用东西。这些东西包含 pgrep、pidof 和 pstree。
pgrep 指令
pgrep指令结合了 ps 和 grep 有用程序来简化对特定进程的查找。增加 -l 选项以显现带有 PID 的实践进程称号。例如,要查找与 SSH 有用程序相关的进程,请键入:
$ pgrep -l ssh
图 7:pgrep 指令显现 SSH 的进程信息。
pidof 指令
pidof指令显现正在运转的应用程序的 PID 信息。语法是 pidof 指令加上程序称号。
$ pidof program_name
图 8:pidof 指令显现 sshd 的进程信息。
请留意,程序称号或许与应用程序标题不同。
该指令关于发现进程 ID 很有用,以便您能够检查其资源或杀死它(假如需求)。
pstree 指令
一些应用程序满足杂乱,需求多个进程。其他应用程序为每个新的网络连接或服务恳求分配新的进程。这些进程称为父进程,它们发动的子进程称为子进程。
在检查体系功用时,以可视化格局显现父进程及其相关的子进程或许会有所协助。pstree指令供给了这种功用。
假如没有指定参数或选项,pstree 显现体系上的一切进程。
$ pstree
图 9:pstree 指令的部分输出。
从您感兴趣的父进程开端显现 pstree 或许更有用。例如,要检查父进程 9876 的进程树,请键入以下指令:
$ pstree 9876
假如用户发动了程序,您能够显现该用户权限下运转的任何应用程序的进程(父进程和子进程)。运用此指令:
$ pstree username
增加 -p 选项以显现显现的进程的 PID:
$ pstree -p username
图 10:显现 damon 帐户运用进程的 pstree 指令的部分输出。
top有用程序也显现进程信息。尽管 top 一般被认为是功用监控有用程序,但进程会耗费资源,然后影响体系的功用。您能够运用 top 与 ps 指令来确认哪些进程会导致问题。
图 11:顶端指令的上半部分显现进程信息,而下半部分显现实践进程。
一些 Linux 发行版运用htop指令作为更强壮的代替计划 top。
Linux 用户和办理员将定时需求办理其体系上运转的代码。CPU 履行的代码称为进程,您能够运用 ps 指令显现进程和相关信息。进程办理的一个要害组成部分是进程 ID——体系用来辨认进程的标签。您将运用此 PID 来查询或杀死进程(假如需求)。
其他 Linux 东西也与进程一同运用,包含 pgrep、pidof、pstree 和 top。运用这些东西来了解有关体系上运转内容的更多信息并解决问题。
本文在如此众生(https://yylives.cc/)首发,欢迎我们拜访。
外交部:我国的科技立异和工业开展从不针对谁,我国的斗极也是国际的斗极。在5月20日外交部例行记者会上,有记者发问称,5月18日,《2025我国卫星导航与位置服务工业开展白皮书》在北京发布,其间说到近年...