在这篇指南中,我们会逐步对进程做基本的了解,然后简要看看如何用特定命令管理 Linux 进程。 进程(process)是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。 进程的类型 在 Linux 中主要有两种类型的进程:
什么是守护进程(daemon) 这是后台进程的特殊类型,它们在系统启动时启动,并作为服务一直运行;它们不会死亡。它们自发地作为系统任务启动(作为服务运行)。但是,它们能被用户通过 init 进程控制。 Linux 进程状态 在 Linux 中创建进程 (LCTT 译注:此节原文不确,根据译者理解重新提供) 在 Linux 中创建进程有三种方式: fork() 方式 使用 fork() 函数以父进程为蓝本复制一个进程,其 PID号与父进程 PID 号不同。在 Linux 环境下,fork() 是以写复制实现的,新的子进程的环境和父进程一样,只有内存与父进程不同,其他与父进程共享,只有在父进程或者子进程进行了修改后,才重新生成一份。 system() 方式 system() 函数会调用 /bin/sh c command 来执行特定的命令,并且阻塞当前进程的执行,直到 command 命令执行完毕。新的子进程会有新的 PID。 exec() 方式 exec() 方式有若干种不同的函数,与之前的 fork() 和 system() 函数不同,exec() 方式会用新进程代替原有的进程,系统会从新的进程运行,新的进程的 PID 值会与原来的进程的 PID 值相同。 Linux 如何识别进程? 由于 Linux 是一个多用户系统,意味着不同的用户可以在系统上运行各种各样的程序,内核必须唯一标识程序运行的每个实例。 程序由它的进程 ID(PID)和它父进程的进程 ID(PPID)识别,因此进程可以被分类为:
init 进程 init 进程是系统中所有进程的父进程,它是启动 Linux 系统后第一个运行的程序;它管理着系统上的所有其它进程。它由内核自身启动,因此理论上说它没有父进程。 init 进程的进程 ID 总是为 1。它是所有孤儿进程的收养父母。(它会收养所有孤儿进程)。 查找进程 ID 你可以用 pidof 命令查找某个进程的进程 ID:
查找 Linux 进程 ID 要查找当前 shell 的进程 ID 以及它父进程的进程 ID,可以运行:
查找 Linux 父进程 ID 在 Linux 中启动进程 每次你运行一个命令或程序(例如 cloudcmd - CloudCommander),它就会在系统中启动一个进程。你可以按照下面的方式启动一个前台(交互式)进程,它会被连接到终端,用户可以发送输入给它:
启动 Linux 交互进程 Linux 后台任务 要在后台(非交互式)启动一个进程,使用 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|