当前位置: 首页 > 科技观察

关于Linux进程你需要知道的一切

时间:2023-03-15 01:46:04 科技观察

在本指南中,我们将逐步了解进程的基本知识,然后简要介绍如何使用特定命令管理Linux进程。进程是正在执行的程序;它是正在运行的程序的一个实例。它由程序指令、从文件、其他程序或系统用户输入的数据读取组成。进程类型Linux中主要有两种类型的进程:前台进程(也称为交互进程)——这些进程由终端会话启动和控制。换句话说,需要有一个用户连接到系统才能启动这样的进程;它们不会作为系统功能/服务的一部分自动启动。后台进程(也称为非交互式/自动化进程)——这些进程未连接到终端;他们不需要任何用户输入。什么是守护进程?这是一种特殊类型的后台进程,它在系统启动时启动并作为服务保持运行;他们不会死。它们作为系统任务自发启动(作为服务运行)。但是,它们可以由用户通过init进程控制。Linux进程状态Linux中创建进程的三种方式(LCTT译注:本节原文有误,按译者理解重新提供):fork()方法使用fork()函数复制一个进程基于PID号与父进程PID号不同的父进程Process。在Linux环境下,fork()是通过写入和复制来实现的。新子进程的环境与父进程相同。只有内存与父进程不同,其他都是与父进程共享的。只有在父进程或子进程被修改后,才能重新生成一个副本。system()方式system()函数会调用/bin/sh–ccommand执行特定命令,并阻塞当前进程的执行,直到command命令执行完毕。新的子进程将有一个新的PID。exec()方法exec()方法中有几个不同的函数。与之前的fork()和system()函数不同,exec()方法会用一个新的进程替换原来的进程,系统会从新的进程开始运行。该进程的PID值将与原进程的PID值相同。Linux是如何识别进程的?由于Linux是一个多用户系统,这意味着不同的用户可以在系统上运行各种程序,因此内核必须唯一地标识每个正在运行的程序实例。程序由其进程ID(PID)及其父进程的进程ID(PPID)标识,因此进程可分为:父进程-这些进程在运行时创建其他进程。子进程-这些是在运行时由其他进程创建的进程。init进程init进程是系统中所有进程的父进程。是Linux系统启动后运行的第一个程序;它管理系统上的所有其他进程。它是由内核自己启动的,所以理论上它是没有父进程的。init进程的进程ID始终为1,它是所有孤儿进程的养父。(它采用所有孤立进程)。查找进程ID您可以使用pidof命令查找进程的进程ID:#pidofsystemd#pidoftop#pidofhttpd查找Linux进程ID要查找当前shell的进程ID及其父进程的进程ID,请运行:$echo$$$echo$PPID查找Linux父进程ID在Linux中启动进程每次运行命令或程序(例如cloudcmd-CloudCommander)时,它都会在系统中启动一个进程。您可以通过以下方式启动前台(交互式)进程,它将连接到终端,用户可以向其发送输入:#cloudcmd启动Linux交互式进程Linux后台任务在后台启动进程(非交互式),使用&符号,进程将不会读取用户的输入,直到它被带到前台。#cloudcmd&#jobs在后台启动一个Linux进程你也可以使用Ctrl+Z来暂停一个程序的执行并将其发送到后台,它会向该进程发送一个SIGSTOP信号,从而暂停它的执行;它会变得空闲:#tar-cfbackup.tar/backups/*###PressCtrl+Z#jobs在后台继续运行上面挂起的命令,使用bg命令:#bgwantstosendthebackgroundprocesstothe前台,使用fg命令和任务ID,类似于:#jobs#fg%1Linux后台进程任务Linux中进程的状态在执行过程中,进程根据其环境从一种状态转换到另一种状态。在Linux中,一个进程有以下几种可能的状态:正在运行——当它正在运行(它是系统中的当前进程)或准备运行时(它正在等待分配一个CPU单元)。等待-在此状态下,进程正在等待事件发生或系统资源。此外,内核区分两种不同类型的等待进程;可中断等待进程-可以被信号中断,不可中断等待进程-等待硬件条件并且不能被任何事件/信号中断。已停止-在此状态下,进程已停止,通常是由于信号。例如,被调试的进程。Zombie-进程已死,它已停止但在进程表中仍有一个条目。如何在Linux中查看活动进程有许多Linux工具可用于查看/列出系统中正在运行的进程,传统上众所周知的两个是ps和top命令:1.ps命令它显示所选中的活动进程数系统信息,如下图所示:#ps#ps-e|head列出Linux活动进程2.top-系统监控工具top是一个强大的工具,可以为您提供运行系统的动态实时视图,如下图所示3.glances-系统监控工具glances是一个相对较新的系统监控工具,它有一些更高级的功能:#glancesGlances-Linux进程监控以及更多你可以使用的其他有用的Linux系统监控工具进程,打开下面的链接以了解更多信息:20个用于监控Linux性能的命令行工具13个有用的Linux监控工具如何在Linux中控制进程Linux也有一些用于控制进程的命令,例如kill、pkill、pgrep和killall,这里是一些如何使用它们的基本示例:$pgrep-utecminttop$kill2308$pgrep-utecminttop$pgrep-utecmintglances$pkillglances$pgrep-utecmintglances使用这些命令来终止/终止Linux中的活动进程,您可以单击以下链接:Kill、Pkill和Killall命令终止Linux进程指南如何在Linux中查找和终止进程注意当您的系统冻结(freeze)时您可以使用他们杀死Linux中无响应的程序。向进程发送信号在Linux中控制进程的基本方法是向它们发送信号。您可以向进程发送许多信号,运行以下命令查看所有信号:$kill-l列出所有Linux信号要向进程发送信号,您可以使用我们前面提到的kill、pkill或pgrep命令。但是程序只有在被编程为识别这些信号的情况下才能响应这些信号。大多数信号由系统内部使用,或者在为程序员编写代码时使用。这里有一些对系统用户非常有用的信号:SIGHUP1-当控制它的终端关闭时发送到一个进程。SIGINT2-当用户使用Ctrl+C中断进程时,控制终端将此信号发送到进程。SIGQUIT3-当用户发送退出信号Ctrl+D时发送到进程。SIGKILL9-此信号将立即中断(终止)进程,进程不会清理。SIGTERM15-这是一个程序终止信号(kill默认发送这个信号)。SIGTSTP20-它的控制终端向进程发送此信号,要求它停止(终端停止);由用户按下Ctrl+Z触发。下面是kill命令的一个例子,当一个Firefox应用程序冻结时通过它的PID来杀死它:pkillfirefox$killallfirefox改变Linux进程的优先级在Linux系统中,所有活跃的进程都有一个优先级和nice值。优先级高于点优先级进程的进程通常获得更多的CPU时间。但是,具有root权限的系统用户可以使用nice和renice命令影响(更改)优先级。在top命令的输出中,NI显示了进程的nice值:$top列出了Linux中正在运行的进程使用nice命令可以为进程设置nice值。请记住,普通用户可以为他拥有的进程设置从0到20的nice值。只有root用户可以使用负nice值。要重置进程的优先级,请像这样使用renice命令:$renice+82687$renice+82103就是这样!如果您有任何问题或想法,请通过下面的反馈框与我们分享。关于作者:AaronKili是Linux和F.O.S.S(自由和开源软件)爱好者、Linux系统管理员、Web开发人员,现在是TecMint内容创建者,他喜欢使用计算机工作,并且相信创意共享。