iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux进程管理方法介绍
  • 937
分享到

Linux进程管理方法介绍

Linux进程管理 2022-06-05 00:06:52 937人浏览 八月长安
摘要

目录一、简介二、创建进程1、前台进程2、后台进程三、查看正在运行的进程四、终止进程五、父进程和子进程六、僵尸进程和孤儿进程七、常驻进程八、top命令九、任务和进程十、前台任务和后台任务的切换一、简介 当我们运行程序时,l

目录
  • 一、简介
  • 二、创建进程
    • 1、前台进程
    • 2、后台进程
  • 三、查看正在运行的进程
    • 四、终止进程
      • 五、父进程和子进程
        • 六、僵尸进程和孤儿进程
          • 七、常驻进程
            • 八、top命令
              • 九、任务和进程
                • 十、前台任务和后台任务的切换

                  一、简介

                  当我们运行程序时,linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰。这个特殊的环境就称为进程。每个 Linux 命令都与系统中的程序对应,输入命令,Linux 就会创建一个新的进程。例如使用 ls 命令遍历目录中的文件时,就创建了一个进程。简而言之,进程就是程序的实例。 
                  系统通过一个五位数字跟踪程序的运行状态,这个数字称为 pid 或进程ID。每个进程都拥有唯一的 pid。 
                  理论上,五位数字是有限的,当数字被用完时,下一个 pid 就会重新开始,所以 pid 最终会重复。但是,两个 pid 一样的进程不能同时存在,因为Linux会使用 pid 来跟踪程序的运行状态。

                  二、创建进程

                  有两种方式来创建进程:前台进程后台进程

                  1、前台进程

                  默认情况下,用户创建的进程都是前台进程;前台进程从键盘读取数据,并把处理结果输出到显示器。 
                  我们可以看到前台进程的运行过程。例如,使用 ls 命令来遍历当前目录下的文件:

                  $ls ch*.doc
                  ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
                  ch04-1.doc   ch040.doc  ch05.doc

                  这个程序就运行在前台,它会直接把结果输出到显示器。如果 ls 命令需要数据(实际上不需要),那么它会等待用户从键盘输入。

                  当程序运行在前台时,由于命令提示符($)还未出现,用户不能输入其他命令;即使程序需要运行很长时间,也必须等待程序运行结束才能输入其他命令。

                  2、后台进程

                  后台进程与键盘没有必然的关系。当然,后台进程也可能会等待键盘输入。 
                  后台进程的优点不必等待程序运行结束就可以输入其他命令。 
                  创建后台进程最简单的方式就是在命令的末尾加 &,例如:

                  $ls ch*.doc &
                  ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
                  ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
                  ch01-2.doc   ch02-1.doc

                  如果 ls 命令需要输入(实际上不需要),那么它会暂停,直到用户把它调到前台并从键盘输入数据才会继续运行。

                  三、查看正在运行的进程

                  可以使用 ps 命令查看进程的运行状态,包括后台进程,例如:

                  $ps
                  PID       TTY      TIME        CMD
                  18358     ttyp3    00:00:00    sh
                  18361     ttyp3    00:01:31    abiWord
                  18789     ttyp3    00:00:00    ps

                  还可以结合 -f 选项查看更多信息,f 是 full 的缩写,例如:

                  $ps -f
                  UID      PID  PPID C STIME    TTY   TIME CMD
                  amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
                  amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
                  amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
                  amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

                  每列的含义如下:

                  • UID:进程所属用户的ID,即哪个用户创建了该进程。
                  • PID:进程ID。
                  • PPID:父进程ID,创建该进程的进程称为父进程。
                  • C:CPU使用率。
                  • STIME:程被创建的时间。
                  • TTY:与进程有关的终端类型。
                  • TIME:进程所使用的CPU时间。
                  • CMD:创建该进程的命令。

                  ps 命令还有其他一些选项:

                  • -a:显示所有用户的所有进程。
                  • -x:显示无终端的进程。
                  • -u:显示更多信息,类似于 -f 选项。
                  • -e:显示所有进程。

                  四、终止进程

                  进程运行在前台时,可以通过 kill 命令或 Ctrl+C 组合键来结束进程。 
                  如果进程运行在后台,那么首先要通过 ps 命令来获取进程ID,然后使用 kill 命令“杀死”进程,例如:

                  $ps -f
                  UID      PID  PPID C STIME    TTY   TIME CMD
                  amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
                  amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
                  amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
                  amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
                  $kill 6738
                  Terminated

                  如上所示,kill 命令终结了 first_one 进程。

                  如果进程忽略 kill 命令,那么可以通过 kill -9 来结束:

                  $kill -9 6738
                  Terminated

                  1.命令格式

                  kill[参数][进程号]

                  2.命令功能

                  发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

                  3.命令参数:

                  • -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
                  • -a 当处理当前进程时,不限制命令名和进程号的对应关系
                  • -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
                  • -s 指定发送信号
                  • -u 指定用户

                  注意:

                  • kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如: 
                    kill -2 123 
                    它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。
                  • kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。
                  • 可以向多个进程发信号或终止它们。
                  • 当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。
                  • 应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

                  信号说明

                  只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

                  • HUP 1 终端断线
                  • INT 2 中断(同 Ctrl + C)
                  • QUIT 3 退出(同 Ctrl + \)
                  • TERM 15 终止
                  • KILL 9 强制终止
                  • CONT 18 继续(与STOP相反, fg/bg命令)
                  • STOP 19 暂停(同 Ctrl + Z)

                  五、父进程和子进程

                  每个 Linux 进程会包含两个进程ID:当前进程ID(pid)和父进程ID(ppid)。可以暂时认为所有的进程都有父进程。 
                  由用户运行的大部分命令都将 Shell 作为父进程,使用 ps -f 命令可以查看当前进程ID和父进程ID。

                  六、僵尸进程和孤儿进程

                  正常情况下,子进程被终止时会通过 SIGCHLD 信号通知父进程,父进程可以做一些清理工作或者重新启动一个新的进程。但在某些情况下,父进程会在子进程之前被终止,那么这些子进程就没有了“父亲”,被称为孤儿进程。 
                  init 进程会成为所有孤儿进程的父进程。init 的 pid 为1,是Linux系统的第一个进程,也是所有进程的父进程。 
                  如果一个进程被终止了,但是使用 ps 命令仍然可以查看该进程,并且状态为 Z,那么这就是一个僵尸进程。僵尸进程虽然被终止了,但是仍然存在于进程列表中。一般僵尸进程很难杀掉,你可以先杀死他们的父进程,让他们变成孤儿进程,init 进程会自动清理僵尸进程。

                  七、常驻进程

                  常驻进程一般是系统级进程,以 root 权限运行在后台,可以处理其他进程的请求。 
                  常驻进程没有终端,不能访问 /dev/tty 文件,如果使用 ps -ef 查看该进程,tty 这一列会显示问号(?)。 
                  更确切地说,常驻进程通常运行在后台,等待指定事件发生,例如打印进程是一个常驻进程,它会等待用户输入打印相关的命令并进行处理。

                  八、top命令

                  top 命令是一个很有用的工具,它可以动态显示正在运行的进程,还可以按照指定条件对进程进行排序,与windows的任务管理器类似。 
                  top 命令可以显示进程的很多信息,包括物理内存、虚拟内存、CPU使用率、平均负载以及繁忙的进程等。例如:

                  $top

                  九、任务和进程

                  任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是多个进程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以由一个进程来实现,也可以由多个进程来实现。 每个任务都有一个数字表示的任务号。

                  进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。

                  jobs 命令可以用来查看系统中正在运行的任务,包括后台运行的任务。该命令可以显示任务号及其对应的进程ID。一个任务可以对应于一个或者多个进程号。 
                  jobs 命令的 -l 选项可以查看当前任务包含的进程ID:

                  $jobs -l
                  [1] + 1903 running                 ls ch*.doc &
                  $

                  其中,第一列表示任务号,第二列表示任务对应的进程ID,第三列表示任务的运行状态,第四列表示启动任务的命令。

                  十、前台任务和后台任务的切换

                  1、fg 命令可以将后台任务调到前台,语法为:

                  $fg %jobnumber

                  jobnumber 是通过 jobs 命令获取的后台任务的的序号,注意不是pid。如果后台只有一个任务,可以不指定 jobnumber。

                  2、bg 命令可以将后台暂停的任务,调到前台继续运行,语法为:

                  $bg %jobnumber

                  jobnumber 同样是通过 jobs 命令获取的后台任务的的序号,注意不是pid。如果前台只有一个任务,可以不指定 jobnumber。 
                  如果希望将当前任务转移到后台,可以先 Ctrl+z 暂停任务,再使用 bg 命令。任务转移到后台可以空出终端,继续输入其他命令。

                  到此这篇关于Linux进程管理的文章就介绍到这了。希望对大家学习有所帮助,也希望大家多多支持我们。

                  --结束END--

                  本文标题: Linux进程管理方法介绍

                  本文链接: https://www.lsjlt.com/news/21618.html(转载时请注明来源链接)

                  有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

                  本篇文章演示代码以及资料文档资料下载

                  下载Word文档到电脑,方便收藏和打印~

                  下载Word文档
                  猜你喜欢
                  • Linux进程管理方法介绍
                    目录一、简介二、创建进程1、前台进程2、后台进程三、查看正在运行的进程四、终止进程五、父进程和子进程六、僵尸进程和孤儿进程七、常驻进程八、top命令九、任务和进程十、前台任务和后台任务的切换一、简介 当我们运行程序时,l...
                    99+
                    2022-06-05
                    Linux 进程管理
                  • Linux文件管理方法介绍
                    文件简介 用户通过Shell与linux内核交互。Shell是一个命令行解释工具(是一个软件),它将用户输入的命令转换为内核能够理解的语言(命令)。Linux下,很多工作都是通过命令完成的,学好Linux,首先要掌握常用...
                    99+
                    2022-06-05
                    Linux 文件管理
                  • linux目录管理方法介绍
                    一、目录结构 目录也是一个文件,它的唯一功能是用来保存文件及其相关信息。所有的文件,包括普通文件、设备文件和目录文件,都会被保存到目录中。 1、绝对路径和相对路径 / linux 的目录有清晰的层次结构,/ 代表根目录,...
                    99+
                    2022-06-05
                    linux 目录管理
                  • Linux磁盘管理方法介绍
                    linux磁盘管理好坏直接关系到整个系统的性能问题。 Linux磁盘管理常用三个命令为df、du和fdisk。 df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区 一、df(disk fr...
                    99+
                    2022-06-05
                    Linux 磁盘管理
                  • 12个linux进程管理命令介绍
                    执行中的程序在称作进程。当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源、内存、安全属性和与之相关的状态。可以有多个进程关联到同一个程序,并同时执行不会互相干扰。操作系统会有效地管理...
                    99+
                    2022-06-03
                    linux 进程
                  • Linux进程的介绍及创建方法
                    这篇文章主要介绍“Linux进程的介绍及创建方法”,在日常操作中,相信很多人在Linux进程的介绍及创建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程的介绍及创建方法”的疑惑有所帮助!接下来...
                    99+
                    2023-06-06
                  • Linux用户和用户组管理方法介绍
                    目录一、用户账号的管理1、添加新的用户账号使用useradd命令,其语法如下:2、删除帐号3、修改帐号4、用户口令的管理二、用户组的管理1、增加一个新的用户组使用groupadd命令。其格式如下:2、如果要删除一个已有的...
                    99+
                    2022-06-05
                    Linux 用户管理 用户组管理
                  • Linux系统中的用户管理方法介绍
                    本篇内容主要讲解“Linux系统中的用户管理方法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中的用户管理方法介绍”吧!用户管理的配置文件用户信息文件:/etc/passwd密...
                    99+
                    2023-06-12
                  • MongoD管理数据库的方法介绍
                    今天主要了解数据库管理,在操作之前先把MongoDB服务打开。 一、显示数据库清单 如果想查看数据库列表可以使用show dbs. 二、切换数据库 通过使用MongoDB中内置的句柄db来执行数据库操作。要对不同的数据...
                    99+
                    2022-07-07
                    MongoDB 数据库管理
                  • C#操作进程的方法介绍
                    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行...
                    99+
                    2022-11-13
                  • Linux的包管理工具介绍
                     概述:     本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装一、软件运行环境  1.API:Appl...
                    99+
                    2022-10-18
                  • 介绍linux golang安装方法
                    Linux Golang 安装教程Golang 是一种高效、简洁、并发和可靠的编程语言,开源、跨平台,并且特别适合构建网络应用和云服务。在 Linux 系统中安装 Golang 是一个容易的过程,下面我们将给您简单介绍如何进行安装。下载并解...
                    99+
                    2023-05-14
                    Golang
                  • 卸载linux的方法介绍
                    这篇文章主要讲解了“卸载linux的方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“卸载linux的方法介绍”吧!很多新童鞋都不知道怎么卸载linux,往往搞损坏grub,导致不能正常...
                    99+
                    2023-06-12
                  • Linux系统编程之进程介绍
                    我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。一、进程概述...
                    99+
                    2023-06-05
                  • Linux进程间的关系介绍
                    这篇文章主要讲解了“Linux进程间的关系介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux进程间的关系介绍”吧!Linux的进程相互之间有一定的关系。比如说,在Linux进程基础...
                    99+
                    2023-06-13
                  • windows7进到bios方法介绍
                    windows7进到bios方法是什么呢,由于大部分用户一般不会主动进到bios界面,因此用户不清楚如何进入bios,bios界面是启动电脑的时候相当于系统发的后台,能够控制一些硬件的启动等作用,因而用户要想进到bios的话必须一个进到的方...
                    99+
                    2023-07-11
                  • Linux注销用户的方法介绍
                    这篇文章主要介绍“Linux注销用户的方法介绍”,在日常操作中,相信很多人在Linux注销用户的方法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux注销用户的方法介绍”的疑惑有所帮助!接下来,请跟...
                    99+
                    2023-06-13
                  • Linux下iptables的配置方法介绍
                    本篇内容主要讲解“Linux下iptables的配置方法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下iptables的配置方法介绍”吧!作为公司上网的路由器需要实现的功能有na...
                    99+
                    2023-06-12
                  • Maven依赖管理的用法介绍
                    目录一、依赖传递1. 直接依赖与间接依赖2. 依赖传递冲突时的优先规则(1) 路径优先(2) 声明优先(3) 后声明覆盖先声明二、依赖管理1. 可选依赖2. 排除依赖3. 可选依赖与...
                    99+
                    2022-11-13
                  • Android 杀死进程几种方法详细介绍
                    Android 杀死进程:              对...
                    99+
                    2022-06-06
                    进程 方法 Android
                  软考高级职称资格查询
                  编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
                  • 官方手机版

                  • 微信公众号

                  • 商务合作