linux/unix 进程启动,UNIX 进程管理

当你执行一个程序在UNIX系统上,该系统为该程序创建一个特殊的环境。这个环境包含系统运行的程序,如果没有其他程序在系统上运行所需要的一切。

每当你发出命令在UNIX中,创建或启动一个新的进程。当你尝试了合列出目录的内容,你启动了一个进程。一个过程,简单来说,就是一个正在运行的程序的一个实例。

操作系统将跟踪进程称为PID或进程ID通过五位ID号。该系统中的每个进程都有一个唯一的pid。

PIDS最终重复,因为所有可能的数字和未来的PID滚动或重新开始。在任何一个时间,没有两个具有相同的pid的进程在系统中存在,因为它是UNIX使用跟踪每个进程的pid。

启动进程:

当你启动一个进程(运行命令),您可以运行它有两种方法:

前台进程

后台进程

前台进程:

默认情况下,每一个过程,你开始在前台运行。从键盘输入,并将其输出到屏幕上。

使用ls命令,你可以看到这一点。如果我要列出当前目录中的所有文件,就可以使用下面的命令:

$ls ch*.doc

这将显示所有文件的名称开始ch和结束以 .doc:

ch01-1.docch010.doc ch02.doc ch03-2.docch04-1.docch040.doc ch05.doc ch06-2.docch01-2.docch02-1.doc

程序在前台运行,输出定向到我的屏幕,如果ls命令希望任何输入(事实并非如此),它会等待从键盘。

当程序在前台运行,并采取太多的时间,我们不能运行任何其他命令(启动任何其他的进程),因为提示将无法使用,直到程序完成其加工出来。

后台进程:

后台进程运行,而无需连接到你的键盘。如果后台进程需要任何键盘输入,它会等待。

进程在后台运行的优点是,你可以运行其他命令,你不必等待,直到它完成启动另一个!

启动一个后台进程的最简单的方法是在命令末尾添加一个符号(&)。

$ls ch*.doc&

这也将显示所有文件的名称开始ch和结束的 .doc:

ch01-1.docch010.doc ch02.doc ch03-2.docch04-1.docch040.doc ch05.doc ch06-2.docch01-2.docch02-1.doc

这里如果ls命令希望任何输入(事实并非如此),进入停止状态,直到我把它移动到前台,并给它的数据从键盘。

也就是说第一行包含有关后台进程的信息 - 工作的数量和进程ID。你需要了解作业的数量,操纵它在前台和后之间。

如果你现在按下回车键,看到以下内容:

[1]+Donels ch*.doc&$

第一行告诉你ls命令的后台进程成功完成。第二个是另一个命令提示。

列出正在运行的进程:

这是很容易看到自己的进程运行的ps(进程状态)命令如下:

$ps

PID TTY TIME CMD18358ttyp300:00:00sh18361ttyp300:01:31abiword18789ttyp300:00:00ps

其中最常用的标志 -f ( f for full) 选项,它提供了更多的信息,如下面的示例所示:

$ps-f

UID PID PPID C STIME TTY TIME CMD

amrood67383662010:23:03pts/60:00first_one

amrood67393662010:22:54pts/60:00second_one

amrood36623657008:10:53pts/60:00-ksh

amrood68923662410:51:50pts/60:00ps-f

这里是ps-f命令显示的所有字段的描述:

Column

描述

UID

User ID that this process belongs to (the person running it).

PID

Process ID.

PPID

Parent process ID (the ID of the process that started it).

C

CPU utilization of process.

STIME

Process start time.

TTY

Terminal type associated with the process

TIME

CPU time taken by the process.

CMD

The command that started this process.

还有其他的选择可以一起使用ps命令:

Option

描述

-a

Shows information about all users

-x

Shows information about processes without terminals.

-u

Shows additional information like -f option.

-e

Display extended information.

停止进程:

几种不同的方法可以做到在结束过程。通常情况下,从一个基于控制台的命令,发送CTRL + C按键(默认中断字符)将退出命令。这工作进程正在运行时在前台模式。

如果一个进程在后台模式下运行,那么首先你需要得到其作业ID,使用ps命令后,你可以使用kill命令来杀死进程如下:

$ps-f

UID PID PPID C STIME TTY TIME CMD

amrood67383662010:23:03pts/60:00first_one

amrood67393662010:22:54pts/60:00second_one

amrood36623657008:10:53pts/60:00-ksh

amrood68923662410:51:50pts/60:00ps-f

$kill6738Terminated

这里kill命令将终止first_one的过程。如果一个进程忽略了正规的kill命令,你可以使用kill-9进程ID如下:

$kill-96738Terminated

父进程和子进程:

每个UNIX进程有两个ID号分配给它的进程ID(PID)和父进程ID(PPID)。系统中的每一个用户进程都有一个父进程。

您运行的大部分命令作为其父的shell。检查ps -f 这个命令列出进程ID和父进程ID。

僵尸和孤儿进程:

通常情况下,当一个孩子被杀害,被告知父进程通过一个SIGCHLD信号。然后,父进程可以做一些其他的任务,或者需要重新启动一个新的子进程。然而,有时父进程在子进程之前被杀死。在这种情况下,“父的所有进程,”init进程,成为新的PPID(父进程ID)。有时,这些进程被称为孤儿进程。

当一个进程被杀死,ps列出可能仍然显示一个Z状态的过程。这是一具僵尸或解散过程。进程是死的,不被使用。这些过程是不同于孤立进程。它们是已完成执行的处理,但仍然有进程表中的一个条目。

守护进程:

守护进程是系统相关的后台进程,往往根和服务请求来自其他进程的权限运行。

守护进程没有控制终端。它不能打开/dev/tty。如果你用“ps-ef”,并期待在tty字段中,所有的守护进程将有一个吗? tty。

更清楚的是,仅仅是一个守护进程在后台运行的进程,通常在等待一些事情发生,它是有能力的工作,就像一台打印机守护进程正在等待打印命令。

如果你有一个程序需要做长期处理,那么使其成为一个守护进程,它在后台运行。

top命令:

top命令是一个非常有用的工具,用于快速显示按各种标准排序的的进程。

这是一个互动的诊断工具,经常更新,并显示物理和虚拟内存,CPU使用率,平均负载,以及您繁忙的的进程的信息。

下面是简单的语法来运行top命令,并看到不同进程的CPU利用率的统计:

$top

作业ID与进程ID:

背景和暂停的的进程通常是通过操纵作业号(作业ID)。这个数字是不同的进程ID的使用,因为它是短暂的。

此外,作业可包含串联或在同一时间运行,并联的多个进程,因此,使用的作业ID是容易跟踪单个进程。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值