《Linux核心应用命令速查》第4章介绍Linux进程管理命令

《Linux核心应用命令速查》第4章介绍Linux进程管理命令
《Linux核心应用命令速查》第4章介绍Linux进程管理命令

第4章 Linux进程管理命令

4.1 accton:打开或关闭进程统计

用法:accton [ -V | --version ] [ -h | --help ] [ filename ]

说明:acct是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息。用户所执行的程序,程序执行情况信息等。它包含有下面一些命令。

ac:登录账号的简要信息。

accton:打开或关闭进程账号记录功能。

last:显示曾经登录过的用户。

lastcomm:显示已执行过的命令。

sa:进程账号记录信息的摘要。

dump-utmp:输出utmp文件内容。

dump-acct:输出acct或pacct文件内容。

应用实例如下。

打开或关闭进程统计。

必须用root身份来运行accton。accton命令的形式为accton file,file必须事先存在。先使用touch命令创建pacct文件:

# touch /var/log/pacct

# accton /var/log/pacct

一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令:

# accton

4.2 lastcomm:显示以前使用过的命令的信息

作用:accton用来启动进程记录,这样就会把所有的命令都记录到一个指定的文件中,而lastcomm就是用来查看这个文件的,以方便系统管理。

用法:lastcomm [选项]... [文件]...

主要选项如下。

-strict-match:精确匹配每一列

--user name:只显示指定用户的命令记录。

--command name:只显示指定命令的记录。

--tty name:只显示在指定终端上运行的命令。

-f filename:指定一个命令记录文件来代替默认文件--acct。

--debug:打印其他内核信息。

-V,--version:打印版本。

-h,--help:打印概要和系统默认统计文件(Linux里面的默认文件多是/var/log/pacct 和

/var/account/pacct)。

应用实例如下。显示曾经执行过的命令。

# lastcomm -f /var/log/pacct

每一项包含如下的信息。

进程的命令。

标志,由系统标准统计进程完成。

S:命令由超级用户运行。

F:命令由子进程运行,没有使用exec的子进程。

C:命令运行在PDP-11兼容模式下。

D:命令终止时产生core文件。

X:命令由信号SIGTERM终止。

运行命令的用户名。

进程使用的系统时间。

4.3 sa:报告、清理并维护进程统计文件

作用:sa命令把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中,报告、清理并维护进程统计文件。

用法:sa [选项]... [文件]...

主要选项如下。

-a:打印所有命令的名称(包括那些带有不可打印字符的)。

-b:将输出按用户和系统时间的总和除以调用次数来进行分类。否则,输出为用户时间和系统时间之和。

-c:将每个命令使用时间打印为相对于所有命令使用时间的百分比。此外,还有用户、系统和实时。

-C:将记账文件合并到摘要文件中。如果摘要文件为旧用法,则将它转换为新用法。

-d:将输出按平均磁盘I/O操作数进行分类。

-D:将输出按总的磁盘I/O操作数进行分类和打印。

-f:不要强制进行交互式阈值压缩。此标志必须与-v标志一起使用。

-I:仅读取原始数据,不读取摘要文件。

-j:打印每个调用的秒数,而不是每个类别的总的分钟数。

-k:将输出按平均CPU时间进行分类。

-K:将输出按CPU存储量整数进行分类和打印。

-l:将系统时间和用户时间分离,而不是组合它们。

-m:打印每个用户的进程数和CPU分钟数。

-n:按调用数对输出进行分类。

-r:将分类的顺序倒置。

-s:将记账文件合并到摘要文件中。

-t:打印每个命令的用时与用户和系统时间和之比。

-u:暂挂所有其他标志并且打印每个命令的用户数字标识和命令名。

与sa命令一起使用的标志改变报告信息的类型。报告可以包含以下字段。

avio:每次执行的平均I/O操作次数。

cp:用户和系统时间总和,以分钟计。

cpu:和cp一样。

k:内核使用的平均CPU时间,以1k为单位。

k*sec:CPU存储完整性,以1k-core秒为单位。

re:实时时间,以分钟计。

s:系统时间,以分钟计。

tio:I/O操作的总数。

u:用户时间,以分钟计。

如果不指定任何标志而运行sa命令,摘要报告将包含每个命令的调用次数,以及re,cpu,avio和k字段。

应用实例如下。

(1)打印每个用户的进程数和CPU分钟数

1.# sa -m /var/log/pacct

2. 904 72.81re

0.27cp 1324k

3.root 658 69.54re

0.27cp 926k

4.nagios 237 3.24re

0.00cp 2400k

5.sshd 8 0.00re

0.00cp 2104k

6.smmsp 1 0.02re

0.00cp 2035k

(2)指定sa读取手工建立的文件/var/account/acct

使用sa命令默认分别读取/var/account/下的pacct,savacct和usracct文件,我们需要指定它读

取手工建立的文件/var/account/acct。

1.# sa -a --other-acct-file /var/account/acct

2.

3. 3 0.00re 0.00cp

0avio 726k

4. 1 0.00re 0.00cp

0avio 1207k ls

5. 1 0.00re 0.00cp

0avio 571k goodc

6. 1 0.00re 0.00cp

0avio 399k accton

(3)按平均CPU时间进行记账记录总结

1.sa -k

4.4 at:定时运行命令

作用:at命令在指定时刻执行指定的命令序列。

用法:at [-V] [-q 队列] [-f file] [-m] time

主要选项如下。

-V:输出版本号。

-q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母

顺序越高则队列优先级别越低。

-f:从文件中读取命令或Shell脚本,而非在提示后指定它们。

-m:执行完作业后发送电子邮件给用户。

time:设定作业执行的时间。time参数可以是下面用法中的任何一种。

HH:MM用法--如04:00,代表4:00AM。如果时间已过,就会在第二天的这一时间执行。midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。

英文月名、日期、年份用法--如January 15 2005,代表2005年1月15日。年份可无。

MMDDYY,MM/DD/YY或MM.DD.YY用法--如011505,代表2005年1月15日。

now +时间用法--时间以minutes,hours,days或weeks为单位。如now + 5 days,代表命令应该在5天之后的此时此刻执行。偏移量的用法为时间+偏移量,单位是minutes,hours和days。

说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经

设定的命令序列。atrm删除已经设定的命令序列。batch,当系统负载低于一个设定值(0.8)时,执行设定的命令序列。

应用实例如下。

让系统在两天后的17:30执行文件data中指定的作业,使用命令:

1.# at -f date 15:30 +2 days

2.job 3 at 2010-03-27 15:30

4.5 atq:显示目前使用at命令后待执行的命令队列

作用:atq命令查询已经设定的命令序列。在用户是超级用户的情况下,列出所有人的作业。

用法:atq [-V] [-q 队列]

主要选项如下。

-V:输出版本号。

-q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母

顺序越高则队列优先级别越低。

4.6 atrm:删除at命令中待执行的命令队列

用法:atrm [-V]作业号

-V:输出版本号。

应用实例如下。

删除at命令中待执行的3号作业:

1.#atrm 3

4.7 batch:在系统负载水平允许的时候执行命令

2.作用:在系统负载水平允许的时候执行命令。换句话说,当平均负载低于0.8,或降到

了在atrun文件中指定的期望值时运行。

3.用法:batch [-V] [-q 队列] [-f 文件] [-mv] [time]

4.主要选项如下。

5.-V:输出版本号。

6.-q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列

字母顺序越高则队列优先级别越低。

7.-f:从文件中读取命令或Shell脚本,而非在提示后指定它们。

8.-m:执行完作业后发送电子邮件给用户。

9.-v:显示作业将要执行的时间。

10.应用实例如下。

11.(1)配置batch作业

12.要在系统平均负载降到0.8以下时执行某项一次性的任务时,使用batch命令。键入

batch命令后,"at>"提示就会出现。键入要执行的命令,按Enter键,然后键入"Ctrl-D"。

你可以指定多条命令,方法是键入每一条命令后按Enter键。键入所有命令后,按

Enter键转入一个空行,然后再键入"Ctrl-D"。你也可以在提示后输入Shell脚本,在脚

本的每一行后按Enter键,然后在空行处键入"Ctrl-D"来退出。系统平均负载一降到0.8,这组命令或脚本就会被执行。如果这组命令或脚本试图在标准输出中显示信息,该输

出会用电子邮件的方式被邮寄给用户。

13.(2)进阶应用:控制对at和batch的使用

14.通过/etc/at.allow和/etc/at.deny文件可以限制对at和batch命令的使用。这两个使用控制

文件的用法都是每行一个用户。两个文件都不允许使用空白字符。如果控制文件被修

改了,at守护进程不必被重启。每次用户试图执行at或batch命令时,使用控制文件都

会被读取。不论控制文件如何规定,超级权限用户总是可以执行at和batch命令。如果

at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽

略。如果at.allow文件不存在,所有在at.deny文件中列出的用户都将被禁止使用at和

batch命令。

4.8 bg:后台运行命令

作用:bg命令使一个被挂起的进程在后台执行。

用法:bg

该应用实例如下。

(1)将一个大目录的文件进行排序后,将结果输入到一个文件中

1.#du -a / | sort -rn > /tmp/du.sorted

(2)在命令后使用&符号

由于这个命令执行时间很长,可以把它放在后台运行。使用组合键Ctrl Z,然后使用bg命令。如果想直接把这个命令放在后台执行,可以在命令后使用"&"符号:

1.#du -a / | sort -rn > /tmp/du.sorted &

2.[1] 237

4.9 fg:挂起程序

作用:fg命令使一个被挂起的进程在前台执行。

用法:fg [job-spec]

[job-spec]:后台任务号码。

说明:fg命令和bg命令是相对应的。如果想查看后台程序运行情况,可以使用fg命令把它

调回前台查看。bg命令可以使多个进程放到后台中执行。

应用实例如下。

使用fg命令时,要加入后台任务号码,如果不加任何号码,则所变动的均是当前任务。

1.#du -a / | sort -rn > /tmp/du.sorted &

2.[1] 237

3.#fg 1

4.10 jobs:显示后台程序

作用:jobs命令显示后台任务的执行情况。

用法:jobs [选项] [jobspec…]

主要选项如下。

-l:长输出用法,显示全部内容。

-n:不输出信息。

-p:只输出进程号。

-r:只输出运行的进程。

[jobspec]表示后台任务号码。

应用实例如下。

先把两个进程放在系统后台运行,然后使用jobs命令查看后台任务的执行情况:

1.#du -a /etc > user.data &

2.[1] 233

3.# find / -name core -type f -ls > core.data &

4.[2] 234

5.#jobs -l

6.[1] + 237 Running du -a /etc > user.data

7.[2] - 238 Running find / -name core -type f -ls > core.data

说明:

上面的当前任务是"du -a /etc > user.data",因为后台任务号码是"[1]"。当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码"[2]"的后台任务,即当前任务是动态的。

4.11 kill:杀掉进程

用法:kill [-s signal |-p] [-a]pid…

或 kill -l [ signal ]

-s:指定发送的信号。

-p:模拟发送信号。

-l:指定信号的名称列表。

pid:要终止的进程的ID号。

signal:表示信号。

说明:kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。kill命令的工作原理是向Linux系统的内核发送一个系统操作信号和某个程序的进程标志号,然后系统内核就可以对进程标志号指定的进程进行操作。当需要中断一个前台进程的时候,通常使用Ctrl+C组合键;但是对于一个后台进程,必须使用kill命令。

应用实例如下。

(1)命令执行过程如果出错,用户可用"kill"来结束任务

对于在后台运行的进程,可以使用kill命令终止:

1.#du -a / | sort -rn > /tmp/du.sorted &

2.[1] 237

3.#kill 237

或者使用命令:

1.#du -a / | sort -rn > /tmp/du.sorted &

2.[1] 237

3.#kill %1

(2)对于僵尸进程,可以用kill-9来强制终止退出

比如一个程序已经彻底死掉,如果kill不加信号强度没有办法退出,最好的办法就是加信号强度-9,后面要接杀父进程。

比如:

1.# ps aux |grep gaim

2.beinan 5031 9.0 2.3 104996 17484 ?

S 13:23 0:01 gaim

3.root 5036 0.0 0.0 5160 724 pts/3

S+ 13:24 0:00 grep gaim

kill命令族成员简介如下。

终止一个进程或终止一个正在运行的程序,一般通过kill,killall,pkill,xkill等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。killall通过程序的名字,直接杀死所有进程。pkill和killall的应用方法差不多,也是直接杀死运行中的程序。如果想杀掉单个进程,可用kill来杀掉。xkill是在桌面用的杀死图形界面的程序。比如当Firefox出现崩溃不能退出时,单击鼠标就能杀死Firefox。当xkill运行时光标处会出来个人脑骨的图标,哪个图形程序崩溃了,一点就OK了。如果想终止xkill,就单击鼠标右键取消。

4.12 crontab:设置计时器

作用:crontab命令用于安装、删除或者列出用于驱动cron后台进程的任务表。然后,该配置由cron守护进程在设定的时间执行。

用法:crontab [-u user]文件

或 crontab [-u user] { -e | -l | -r }

主要选项如下。

-e:执行文字编辑器来设定时程表,默认的文字编辑器是vi。

-r:删除目前的时程表。

-l:列出目前的时程表。

[-u user]:指定要设置的用户名称。

crontab文件的用法是:minute hour day month dayofweek command

minute--分钟,0~59之间的任何整数。hour--小时,0~23之间的任何整数。day--日期,1~31之间的任何整数(如果指定了月份,必须是该月份的有效日期)。month--月份,1~12之间的任何整数(或使用月份的英文简写,如Jan,Feb等)。dayofweek--星期,0~7之间的任何整数,这里的0或7代表星期日(或使用星期的英文简写,如Sun,Mon等)。command--要执行的命令(可以是ls之类的命令,也可以执行自行编写的脚本的命令。)

应用实例如下。

设置一个定时、定期的系统提示:

1.#crontab

2. e

此时系统会打开一个vi编辑器,如果输入35 17 * * 5 Wall"明天休息,注意备份数据库",然后存盘退出。这时在/var/spool/cron/目录下会产生一个cao文件,内容如下:

1.# DO NOT EDIT THIS FILE

2. edit the master and reinstall.

3.# (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)

4.# (Cron version -- $Id: crontab.c,v 2.13

1994/01/17 03:20:37 vixie Exp $)

5.35 17 * * 5 wall "明天休息,注意备份数据库 "

这样到每个星期五下班时间(17:35),系统就会弹出一个显示屏提醒我们注意备份数据库。显示结果如图4-2所示。

4.13 ps:查看权限

作用:ps命令主要用于查看系统中进程的状态。

用法:ps [选项]

主要选项如下。

-a:显示系统中所有进程的信息。

-e:显示所有进程的信息。

-f:显示进程的所有信息。

-l:以长用法显示进程信息。

-r:只显示正在运行的进程。

-u:显示面向用户的用法(包括用户名、CPU及内存使用情况等信息)。

-x:显示所有非控制终端上的进程信息。

-p:显示由进程ID指定的进程的信息。

-t:显示指定终端上的进程的信息。

说明:根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说更为重要。使用"ps aux"命令可以获得终端上所有用户的有关进程的所有信息,下面将结合图4-3讲解进程的基本信息。

图4-3的第二行代码中,USER表示启动进程用户。PID表示进程标志号。%CPU表示运行该进程占用CPU的时间与该进程总的运行时间的比例。%MEM表示该进程占用内存和总内存的比例。VSZ表示占用的虚拟内存大小,以KB为单位。RSS为进程占用的物理内存值,以KB 为单位。TTY表示该进程建立时所对应的终端,"?"表示该进程不占用终端。STAT表示进程的运行状态,包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程;Z,不存在,但暂时无法消除;W,没有足够的内存分页可分配;<,高优先序的进程;N,低优先序的进程;L,有内存分页分配并锁在内存体内(实时系统或I/O)。STA R T为进程开始时间。TIME为执行的时间。COMMAND是对应的命令名。

应用实例如下。

(1)按内存占用情况对进程排序

1.# ps auxw --sort=rss

(2)在进行系统维护时,如果CPU负载突然增加,而又不知道是哪一个进程造成的

1.#ps auxw --sort=%cpu

4.14 pstree:显示进程状态树

作用:pstree命令列出当前的进程,以及它们的树状结构。

用法:pstree [选项] [pid|user]

主要选项如下。

-a:显示执行程序的命令与完整参数。

-c:取消同名程序,合并显示。

-h:对输出结果进行处理,高亮显示正在执行的程序。

-l:以长用法显示。

-n:以PID大小排序。

-p:显示PID。

-u:显示UID信息。

-G:使用VT100终端编码显示。

-U:使用UTF-8(Unicode)编码显示。

说明:使用ps命令得到的数据精确,但数据庞大。pstree命令正好可以弥补这个缺憾。它能将当前的执行程序以树状结构显示。pstree命令支持指定特定程序(PID)或使用者(USER)作为显示的起始。

pestree命令对程序名称相同的会自动合并,所有"|-httpd---8*[httpd]"即表示系统中有8个httpd 进程产生的子进程。

4.15 top:显示进程

作用:top命令用来显示系统当前的进程状况。

用法:top [选项]

-b:使用批处理模式。

-c:显示程序并显示程序的完整相关信息,如名称、路径等。

-i:忽略闲置或已经冻结的程序。

-d:以秒为单位,设定监控程序执行状况的时间间隔。

-n:设定监控信息的更新次数。

-p<进程号>:指定进程。

-s:安全模式。

-u:指定用户名。

-v:显示版本信息。

-h:显示帮助信息。

说明:top命令和ps命令的基本作用是相同的。但是top是一个动态显示过程,即可以通过

用户按键来不断刷新当前状态。下面结合图4-4来说明它给出的信息。

在图4-4中分成几行显示,其含义分别如下。

第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。

第二行显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。

第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)

比例。

第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区

占用的内存。

第五行显示交换分区的使用情况,包括总的、使用的、空闲的和用于高速缓存的交换分区。

第六行显示的项目最多,下面列出了详细解释。

PID(Process ID):进程标志号,是非零正整数。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIR T:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

STAT:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优

先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME:该进程启动后占用的总的CPU时间。

COMMAND:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

在top命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通

过以下快捷键启动的。

<空格>:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

应用实例如下。

(1)显示程序及其完整相关信息

1.#top -c

(2)以秒为单位,设定监控程序执行状况的时间间隔

例如,设定top命令的时间间隔为3秒,在命令行提示符下输入:

1.#top -d 3

(3)设定监控信息的更新次数

例如,设定系统任务信息更新5次后结束top命令,在命令行提示符下输入:

1.#top -n 5 ↙

4.16 nice:改变优先权等级

作用:nice命令可以改变程序执行的优先权等级。

用法:nice [-n <优先等级>][--help][--version][命令]

主要选项如下。

-n<优先等级>或-<优先等级>或--adjustment=<优先等级>:设置欲执行的命令的优先权等级。

等级的范围为 20~19,其中 20为最高,19为最低。

--help:在线帮助。

说明:应用程序优先权值的范围为 20~19,数字越小,优先权就越高。一般情况下,普通应

用程序的优先权值(CPU使用权值)都是0,如果让常用程序拥有较高的优先权等级,自然,

启动和运行速度都会快些。需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户才有权调整更高的优先权值( 20~19)。

应用实例如下。

将ls命令的优先权等级加1并执行,将结果输入文件1.txt:

1.# nice -n 1 ls >1.txt

4.17 renice:修改优先权等级

作用:renice命令允许用户修改一个正在运行的进程的优先权等级。

用法:renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]

主要选项如下。

priority:优先权等级。

-p pids:改变该程序的优先权等级,此参数为预设值。

-g pgrps:使用程序群组名称,修改所有隶属于该程序群组的程序的优先权等级。

-u user:指定用户名称,修改所有隶属于该用户的程序的优先权等级。

说明:renice命令可重新调整正在执行的程序的优先权等级。默认用程序识别码指定程序,

调整其优先权等级,也可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程

序群组或用户的程序的优先权等级。等级范围为 20~19,只有超级用户可以改变其他用户程序

的优先权和设置负数等级。普通用户只能对自己所有的进程使用renice命令。

应用实例如下。

将进程PID为987及32的进程与进程拥有者为daemon及root的优先权等级分别加1:

1.#renice +1 987 -u daemon root -p 32

4.18 sleep:暂停进程

用法:sleep number [选项]

主要选项如下。

number:时间长度,后面可接s,m,h或d。

s:以秒为单位(默认)。

m:以分钟为单位。

h:以小时为单位。

d:以天为单位。

说明:此命令大多用于Shell程序设计,使两条命令执行之间停顿指定的时间。

应用实例:

使进程先暂停60秒,然后查看哪个用户登录到系统中:

1.#sleep 60; who

4.19 nohup:用户退出系统之后继续工作

用法:nohup命令

说明:一般退出Linux系统时,会把所有的程序全部结束掉,包括那些后台程序。使用

nohup命令使进程在用户退出后仍继续执行。同时这些进程都在后台执行(命令放到后台运行,nohup必须与&操作同时使用),结果则会写到用户自己的目录下的nohup.out文件里。

应用实例如下。

程序在后台自动执行:

1.nohup wget -c -t0 https://www.360docs.net/doc/1315432505.html,/ghs1.rar &

4.20 pgrep:查找匹配条件的进程

作用:pgrep命令用于查找当前运行的进程,并列出匹配给定条件的进程的PID。所有的条件

都必须匹配才会被列出。

用法:pgrep[选项][程序名]

主要选项如下。

-l:列出程序名和进程ID。

-o:进程起始的ID。

-n:进程终止的ID。

应用实例如下。

用户cao查看sshd的进程列表:

1.[cao@localhost@cao]$pgrep -l sshd

2.829 sshd

4.21 fuser:用文件或者套接口表示进程

作用:fuser命令用文件或者套接口表示进程。

用法:fuser [-a | -s | -c] [-4 | -6] [-n space] [-k [-i] [-signal]] [-muvf] name …

或 fuser -l

或 fuser -V

主要选项如下。

-a:显示在命令行指定的所有文件,默认情况下,至少被一个进程访问的文件才能显示出来。

-c:同选项-m,用于同Posix进行兼容。

-f:忽略,用于同Posix进行兼容。

-i:结束进程前询问用户意见。

-k:结束正在访问文件的所有进程。

-l:列出所有已知的信号名字。

-m:挂载文件系统。

-n:选择一个不同的名字空间,名字空间是指文件(默认为文件名)、udp和tcp。

-s:不显示处理信息,选项-u和-v在此模式下将被忽略,选项-a不能与该选项一起使用。

-signal:结束进程时使用指定的信号而不是SIGKILL,当不使用选项-k时,该选项将被忽略。

-u PID:显示用户名。

-v:显示运行时的详细信息。

-V:显示版本信息。

应用实例如下。

(1)列出所有已知的信号名字

1.# fuser -l

2.HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL

USR1 SEGV USR2 PIPE ALRM TERM

3.STKFLT CHLD CONT STOP TSTP TTIN TTOU URG

XCPU XFSZ VTALRM PROF WINCH IO PWR SYS

4.UNUSED

(2)显示进程

例如,显示与/home/cjh/目录相关的所有进程,在命令行提示符下输入:

1.# fuser -a /home/cjh

2./home/cjh: 19169c 19197c

(3)结束正在访问文件的所有进程

例如,结束正在访问目录/home/cjh/tmp/的所有进程,在命令行提示符下输入:

1.#fuser -k /home/cjh/tmp/

2./home/cjh/tmp/: 19169c

(4)显示用户名

例如,显示所有访问目录/home/cjh/的进程,并显示进程的用户名,在命令行提示符下输入:

1.# fuser -u /home/cjh/

2./home/cjh/: 19245c(cjh)

(5)列出使用/etc/passwd文件的本地进程的进程号

1.#fuser /etc/passwd

(6)列出正在使用已从给定文件系统删除的文件的全部进程

1.#fuser -d /usr

4.22 chkconfig:设置系统的各种服务

作用:chkconfig命令检查、设置系统的各种服务。

用法:chkconfig [--add][--del][--list][系统服务]

或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

主要选项如下。

--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文

件内增加相关数据。

--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内

删除相关数据。

--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关闭。

说明:chkconfig提供了一个简单的命令行工具用于维护/etc/rc[0-6].d的路径层次,可以帮助

系统管理员在这些路径中直接操作符号行,chkconfig的执行是通过chkconfig命令激发的,此

命令目前在irix操作系统中存在,甚至包括了维护/etc/rc[0-6].d层次之外的设置信息。chkconfig

有5个不同的函数:为管理器添加新服务,从管理器中移出服务,列出当前启动的服务信息,

改变服务启动信息,检查特殊服务的启动状态。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

应用实例如下。

(1)显示所有服务的状态

1.#chkconfig -list

结果会看到一个系统服务列表,以及它们在运行级别0~6中已被启动或停止(on/off)。

(2)chkconfig管理服务技巧

从图4-5的列表末端,会看到由xinetd管理的服务部分。如果使用chkconfig--list来查询由xinetd管理的服务,会看到xinetd服务是被启用了(on)还是被关闭了(off)。例如,命令chkconfig--list finger返回了下列输出:

1.finger on

如上所示,finger作为xinetd服务被启用。如果xinetd在运行,finger就会被启用。

如果使用chkconfig --list来查询/etc/rc.d中的服务,会看到服务在每个运行级别中的设置。例如,命令chkconfig --list anacron返回了下列输出:

1.Anacron 0:off 1:off 2:on

3:on 4:on 5:on 6:off

chkconfig还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。例如,要在运

行级别3,4,5中停运nscd服务,使用下面的命令:

1.Chkconfig --level 345 nscd off

补充说明:由xinetd管理的服务会立即被chkconfig影响。例如,如果xinetd在运行,finger

被禁用,那么执行了chkconfig finger on命令后,finger可以自动随xinetd的改变而自动启用。

对其他服务的改变在使用chkconfig之后不会立即生效,必须使用service daemon stop命令来停

止个别服务。在前面的例子中,可以把daemon换成想停止的服务名称(如httpd)、把stop换

成start或restart来启动或重新启动该服务。

4.23 strace:跟踪一个进程的系统调用或信号产生的情况

作用:strace命令能够显示所有由用户空间程序发出的系统调用。strace显示这些调用的参数

并返回符号形式的值。strace从内核接收信息,而且不需要以任何特殊的方式来构建内核。

用法:strace [选项]

主要选项如下。

-f:除了跟踪当前进程外,还跟踪其子进程。

-o file:将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。

-p pid:绑定到一个由pid对应的正在运行的进程,此参数常用来调试后台进程。

应用实例如下。

(1)跟踪vim及其子进程的运行,将输出信息写到文件vim.strace

1.# strace -f -o vim.strace vim

(2)strace同时跟踪多个进程

1.#strace -o a.strace -f -F -p 4579 -p 4580 -p 4581

4.24 ltrace:跟踪进程调用库函数的情况

作用:ltrace命令用来跟踪进程调用库函数的情况。

用法:ltrace [选项]

主要选项如下。

-f:除了跟踪当前进程外,还跟踪其子进程。

-o file:将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。

-p pid:绑定到一个由pid对应的正在运行的进程,此参数常用来调试后台进程。

-d:打印调试信息。

应用实例如下。

跟踪一个pid为234的已经在运行的进程:

1.#ltrace -p 234

4.25 vmstat:报告虚拟内存统计信息

作用:vmstat命令报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息。由vmstat命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

用法:vmstat [-V] [-n] [延时[次数]]

-n:开关令第一次的信息只显示一次而不是周期地产生。

延时:刷新时间间隔(秒)。如果没有给出此延时时间,则仅显示系统启动至今的平均值。

次数:更新的次数。如果没有指定次数而又定义了延时时间,则次数的默认值是无穷次。

-V:开关可以用来输出该命令的版本信息。

实例如下。

使用vmstat 5 5(表示在5秒时间内进行5次采样)命令测试。命令输出分成6个部分。

(1)进程procs

r:在运行队列中等待的进程数。

b:在等待I/O的进程数。

w:可以进入运行队列但被替换的进程。

(2)内存memory

swpd:现时可用的交换内存,单位为KB。

free:空闲的内存,单位为KB。

buff:缓冲区中的内存数,单位为KB。

cache:被用来作为高速缓存的内存数,单位为KB。

(3)swap交换页面

si:从磁盘交换到内存的交换页数量,单位为KB/s。

so:从内存交换到磁盘的交换页数量,单位为KB/s。

(4)I/O块设备

bi:发送到块设备的块数,单位为块/秒。

bo:从块设备接收到的块数,单位为块/秒。

(5)system系统

in:每秒的中断数,包括时钟中断。

cs:每秒的环境(上下文)切换次数。

(6)CPU中央处理器

us:用户进程使用的时间,以百分比表示。

sy:系统进程使用的时间,以百分比表示。

id:中央处理器的空闲时间,以百分比表示。

如果r经常大于4,且id经常小于40,表示中央处理器的负荷很重。如果bi和bo长期不等于0,表示物理内存容量太小。

4.26 mpstat:监测CPU(包括多CPU)性能

用法:mpstat[选项]

主要选项如下。

-P {|A LL}:表示监控哪个CPU,CPU在[0,cpu个数-1]中取值。

internal:相邻的两次采样的间隔时间。

count:采样的次数,count只能和delay一起使用。

输出说明如下。

CPU:处理器ID。

%user:用户模式(应用程序)占用CPU的百分比。

%nice:用户模式(使用nice命令改变既定优先级权限的应用程序)占用CPU的百分比。

%system:核心占用CPU的百分比。

%idle:处理器的闲置时间百分比,以上四项总和为100%。

intr/s:处理器每秒处理的中断数量。

4.27 iostat:监测I/O性能

作用:iostat(I/O statistics)工具将对系统的磁盘操作活动进行监视。它汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个

进程进行深入分析,仅对系统的整体情况进行分析。

用法:iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]

主要选项如下。

-c:显示CPU的使用情况。

-d:显示磁盘的使用情况。

-k:表示按千字节每秒显示数据。

-t:打印汇报的时间。

-v:表示打印出版本信息和用法。

-x device:指定要统计的设备名称,默认为所有的设备。

interval:指每次统计间隔的时间,count指按照这个时间间隔统计的次数。

说明:目前Linux计算机系统的主要性能瓶颈在于I/O环节,这主要是由于I/O系统性能的提高远远低于CPU和内存性能的提高。根据摩尔定律,CPU性能和内存容量每18个月就可翻一番。但是作为外存的主要设备--硬磁盘,由于机械运动的本质特征导致性能的提高非常有限,

每年约7%。这样可由摩尔定律得出,如今I/O的性能在系统整体性能中占有举足轻重的地位。

目前优化磁盘性能的各种技术主要侧重于如何提高数据传输的带宽,很少有侧重于降低延迟的。

应用实例如下。

用iostat -x /dev/sda1来观看磁盘I/O的详细情况:

1.# iostat -x /dev/sda1

2.Linux 2.6.18-164.el5xen (localhost.localdomain)

2010年03月26日

3.

4.avg-cpu: %user %nice %system %iowait

%steal %idle

5. 0.11 0.02 0.18 0.35

0.03 99.31

6.

7.Device: tps Blk_read/s Blk_wrtn/s

Blk_read Blk_wrtn

8.sda1 0.02 0.08

0.00 2014 4

详细说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况(具体内容和mpstat命令相同)。这里主要关注后面I/O输出的信息,如表4-1所示。

表4-1 iostat输出

4.28 sar:系统活动情况报告

作用:sar一个开放源代码工具,它由Sebastien Godard维护。这个工具也包含于大部分Linux发行版本中,可用于当前的2.4和2.6版内核,在Red Hat Linux中是Sysstat。Sysstat 包括I/O与CPU统计资料的工具iostat、mpstat(用于多处理器性能监测)和sar。前面我们介绍了iostat、mpstat,下面重点介绍sar。

用法:sar [选项]

-A:汇总所有的报告。

-a:报告文件读写使用情况。

-B:报告附加的缓存的使用情况。

-b:报告缓存的使用情况。

-c:报告系统调用的使用情况。

-d:报告磁盘的使用情况。

-g:报告串口的使用情况。

-h:报告关于buffer使用的统计数据。

-m:报告IPC消息队列和信号量的使用情况。

-n:报告命名Cache的使用情况。

-p:报告调页活动的使用情况。

-q:报告运行队列和交换队列的平均长度。

-R:报告进程的活动情况。

-r:报告没有使用的内存页面和硬盘块。

-u:报告CPU的利用率。

-v:报告进程、I结点、文件和锁表状态。

-w:报告系统交换活动状况。

-y:报告TTY设备活动状况。

应用实例如下。

(1)察看内存和交换空間的使用率,使用sar -r

1.# sar -r

2.Linux 2.4.20-8 (https://www.360docs.net/doc/1315432505.html,) 20050503

3.12:00:01 AM kbmemfree kbmemused %memused

kbmemshrd kbbuffers kbcached

4.12:10:00 AM 240468 1048252 81.34

0 133724 485772

5.12:20:00 AM 240508 1048212 81.34

0 134172 485600

6.…

7.08:40:00 PM 934132 354588 27.51

0 26080 185364

8.Average: 324346 964374 74.83

0 96072 467559

kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空

间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据

存取量,单位为KB。

(2)观察系统部件10分钟,并对数据进行排序

1.#sar -o temp 60 10

说明:sar是System Activity Reporter(系统活动情况报告)的缩写。顾名思义,sar工具将对

系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是

可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它

时消耗的系统资源很小。sar是读/proc这个内存文件系统进行采样来得到数据的。sar从

/var/log/sa/sadd读取记录文件的资料。/usr/lib/sa/sadc负责维护系统活动资料和建立这些记录文件。sar实际包括两个Shell程序/usr/lib/sa/sa1和/usr/lib/sa/sa2。/etc/cron.d/systat是crontab的系

统文件,每10分钟执行sa1程序一次,然后将它的输出加到记录文件后面。sa1以二进制格式

储存sar所读取的资料。/usr/lib/sa/sa2将每天数据写入文件/var/log/sa/sadd。dd表示每月的日期。sar是目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对系统的活动进行

报告,包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活

动及IPC有关的活动等,使用也较为复杂。

4.29 ntsysv:设置系统服务

作用:ntsysv是Red Hat公司遵循GPL规则所开发的程序,它具有交互式操作界面。

用法:ntsysv [--back] [--level ]

--back:在交互式界面中显示上一步按钮。

--level:在指定的执行等级中选择要打开或关闭的系统服务;等级为0~6,可一次指

定多个等级,如"123"表示同时设定等级为1,2和3的服务。

levels执行的状态如下。

0:关机。

1:单人用户模式的文字界面。

2:多人用户的文字界面,但不具有NFS功能。

3:多人用户的文字界面,并且具有全部的网络功能。

4:某些发行版本使用此参数可进入X Window。

5:某些发行版本使用此参数可进入X Window。

6:重新启动。

应用实例如下。

(1)配置系统的各种服务运行等级

#ntsysv

(2)配置运行级别

编辑运行级别0,1和6:

1.#ntsysv --levels 016

(3)在交互式界面中显示Back按钮

例如,配置系统的各种服务运行等级,并且在交互式界面中显示Back按钮,可在命令行提示符下输入:

1.#ntsysv --back

如图4-7所示,原来界面中的Cancel按钮已被Back按钮取代。

Linux 进程管理实验

Linux 进程管理实验 一、实验内容: 1. 利用bochs观测linux0.11下的PCB进程控制结构。 2. 利用bochs观测linux0.11下的fork.c源代码文件,简单分析其中的重要函数。 3. 在fork.c适当位置添加代码,以验证fork函数的工作原理。 二、Linux进程管理机制分析 Linux有两类进程:一类是普通用户进程,一类是系统进程,它既可以在用户空间运行,又可以通过系统调用进入内核空间,并在内核空间运行;另一类叫做内核进程,这种进程只能在内核空间运行。在以i386为平台的Linux系统中,进程由进程控制块,系统堆栈,用户堆栈,程序代码及数据段组成。Linux系统中的每一个用户进程有两个堆栈:一个叫做用户堆栈,它是进程运行在用户空间时使用的堆栈;另一个叫做系统堆栈,它是用户进程运行在系统空间时使用的堆栈。 1.Linux进程的状态: Linux进程用进程控制块的state域记录了进程的当前状态,一个Linux 进程在它的生存期中,可以有下面6种状态。 1.就绪状态(TASK_RUNNING):在此状态下,进程已挂入就绪队列,进入准备运行状态。 2.运行状态(TASK_RUNNING):当进程正在运行时,它的state域中的值不改变。但是Linux会用一个专门指针(current)指向当前运行的

任务。 3.可中断等待状态(TASK_INTERRUPTIBLE):进程由于未获得它所申请的资源而处在等待状态。不管是资源有效或者中断唤醒信号都能使等待的进程脱离等待而进入就绪状态。即”浅睡眠状态”。 4.不可中断等待状态(TASK_UNINTERRUPTIBLE):这个等待状态与上面等待状态的区别在于只有当它申请的资源有效时才能被唤醒,而其它信号不能。即“深睡眠状态”。 5.停止状态(TASK_STOPPED):当进程收到一个SIGSTOP信号后就由运行状态进入停止状态,当收到一个SINCONT信号时,又会恢复运行状态。挂起状态。 6.终止状态(TASK_ZOMBIE):进程因某种原因终止运行,但进程控制块尚未注销。即“僵死状态”。 状态图如下所示: 2.Linux进程控制块:

Linux操作系统进程管理的分析与应用

Linux操作系统进程管理的分析与应用(1)发布时间:2006.05.19 07:12来源:LinuxSir作者:北南南北目录 1、程序和进程; 1.1 进程分类; 1.2 进程的属性; 1.3 父进程和子进程; 2、进程管理; 2.1 ps 监视进程工具; 2.1.1 ps参数说明; 2.1.2 ps 应用举例; 2.2 pgrep 3、终止进程的工具 kill 、killall、pkill、xkill; 3.1 kill 3.2 killall 3.3 pkill 3.4 xkill 4、top 监视系统任务的工具; 4.1 top 命令用法及参数; 4.2 top 应用举例; 5、进程的优先级: nice和renice; 6、关于本文; 7、后记; 8、参考文档; 9、相关文档; 1、程序和进程; 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。 一个运行着的程序,可能有多个进程。比如 https://www.360docs.net/doc/1315432505.html, 所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,

apache服务器将会创建有多个httpd进程来对其进行服务。 1.1 进程分类; 进程一般分为交互进程、批处理进程和守护进程三类。 值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在Fedora或Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd, /etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。 [root@localhost ~]# chkconfig --level 35 httpd on 由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 https://www.360docs.net/doc/1315432505.html, ,https://www.360docs.net/doc/1315432505.html, 的httpd服务器都在运行,等待着用户来访问,也就是等待着任务处理。 Linux操作系统进程管理的分析与应用(2)发布时间:2006.05.19 07:12来源:LinuxSir作者:北南南北 1.2 进程的属性; 进程ID(PID):是唯一的数值,用来区分进程; 父进程和父进程的ID(PPID); 启动进程的用户ID(UID)和所归属的组(GID); 进程状态:状态分为运行R、休眠S、僵尸Z; 进程执行的优先级; 进程所连接的终端名; 进程资源占用:比如占用资源大小(内存、CPU占用量); 1.3 父进程和子进程; 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。 在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;

linux进程管理篇

目录:(内容较多,加个目录) |-进程管理 进程常用命令 |- w查看当前系统信息 |- ps进程查看命令 |- kill终止进程 |- 一个存放内存中的特殊目录/proc |- 进程的优先级 |- 进程的挂起与恢复 |- 通过top命令查看进程 计划任务 |- 计划任务的重要性 |- 一次性计划at和batch |- 周期性计划crontab 进程管理的概念 进程和程序区别 1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2.程序和进程无一一对应关系。一个程序可以由多个时程公用;另一一方面,一个进程在活动中有可顺序地执行若干个程序 父子进程的关系 1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程 2.在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。 3.父进程终止子进程自然终止。 前台进程和后台进程 前台进程 在shell提示处理打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行别一个命令

很简单,我们在执行这个查找命令时,无法进行其它操作,这个查找就属于前台进程 后台进程 在Shell提示处打入命令,若后随一个&,Shell创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。“后台进程必须是非交互式的” 再来看这个命令就变成了后台进程,我们用同样的条件进行查找,把查找记过放到hzh/test/init.find这个文件中。不影响我们前台其它的操作。 进程的状态

linux进程管理(一)

进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。 一个运行着的程序,可能有多个进程。比如自学it网所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。 进程分类 进程一般分为交互进程、批处理进程和守护进程三类。 值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在 Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。 [root@localhost ~]# chkconfig --level 35 httpd on 进程的属性: 进程ID(PID):是唯一的数值,用来区分进程; 父进程和父进程的ID(PPID); 启动进程的用户ID(UID)和所归属的组(GID); 进程状态:状态分为运行R、休眠S、僵尸Z; 进程执行的优先级; 进程所连接的终端名; 进程资源占用:比如占用资源大小(内存、CPU占用量); 父进程和子进程: 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。 在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行; 进程管理

Linux进程管理-实验报告

(1) 加深对进程概念的理解,明确进程和程序的区别。 (2) 进一步认识并发执行的实质。 (3) 学习通过进程执行新的U 标程序的方法。 (4) 了解Linux 系统中进程信号处理的基本原理。 Red Hat Linux (1)进程的创建 编写一段程序,使用系统调用fork ()创建两个子进程,当此进程运 行时,在系统中有一个父进程和两个子进程活动,让每一个进程在 屏幕上显示一个字符,父进程显示字符“a” ;子进程分别显示字符 “b”和字符“c” ,试观察记录屏幕上的显示结果,并分析原因。 程序代码: # include int main() { int pl ,p2 ; while((p 1 =fork())==-1); if(pl==0) putchar(b); else { while((p2=fork())==-1); if(p2==0) putchar( c 1); else putchar( a r ); } return 0; ) 运行结果:bca 分析:第一个while 里调用fork()函数一次,返回两次。子进程P1 得到的返回值是0,父进程得到的返回值是新子进程的进程ID (正 整数);接下来父进程和子进程P1两个分支运行,判断P1二二0,子 进程P1符合条件,输出%";接下来else 里面的while 里再调用 fork()函数一次,子进程P2得到的返回值是0,父进程得到的返回值 是新子进程的进程ID (正整数);接下来判断P2=:0,子进程P2符 合条件,输出,接下来父进程输出“a” ,程序结束。 (2)进程的控制 ① 修改已编写的程序,将每个进程输出一个字符改为每个进程输出 一 《Linux 实验目的: 实验环境: 实验内容: 操作系统设计实践》实验一:进程管理

实验一——Linux环境下的进程管理之欧阳光明创编

软件学院 欧阳光明(2021.03.07) 上机实验报告 课程名称:操作系统 实验项目:实验一:Linux环境下进程管理 实验室:耘慧402 姓名:学号: 专业班级:实验时间:

一、实验目的及要求 1.加深对进程概念的理解,明确进程和程序的区别; 2.进一步认识并发执行的实质; 3.分析进程争用资源的现象,学习解决进程互斥的方法; 4.了解Linux系统中进程通信的基本原理; 二、实验性质 1.进程的创建:编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 2.进程的控制:修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用lockf ()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 3.用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 三、实验学时 实验性质:验证性 实验学时: 4学时 实验要求:必做 四、实验环境 1.实验环境: Linux系统开发环境 2.知识准备: (1) Linux系统开发环境搭建; (2) Linux环境下GCC编译器的使用; (3)语言中函数定义与调用、指针和类型的定义与使用、结构的定义、动态

内存的申请等预备知识。 五、实验内容及步骤 ①实验内容: (1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 ②实验步骤: 1.进程的创建 1.1 进程 UNIX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。 PCB的数据结构如下: (1)进程表项(Process Table Entry)。包括一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。 (2)U区(U Area)。用于存放进程表项的一些扩充信息。 每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符

最新整理Linux操作系统的进程管理详解

L i n u x操作系统的进程管理详解 L i n u x操作系统中进程的管理是很重要的一部分,下面由学习啦小编为大家整理了L i n u x操作系统的进程管理详解的相关知识,希望对大家有帮助! L i n u x操作系统的进程管理详解 对于L i n u x的进程的管理,是通过进程管理工具实现的,比如p s、k i l l、p g r e p等工具; L i n u x操作系统的进程管理/1、 p s监视进程工具; p s为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用t o p工具; 1.p s的参数说明; p s提供了很多的选项参数,常用的有以下几个; l长格式输出; u按用户名和启动时间的顺序来显示进程; j用任务格式来显示进程; f用树形格式来显示进程; a显示所有用户的所有进程(包括其它用户); x显示无控制终端的进程; r显示运行中的进程;

w w避免详细参数被截断; 我们常用的选项是组合是a u x或l a x,还有参数f 的应用; p s a u x或l a x输出的解释; U S E R进程的属主; P I D进程的I D; P P I D父进程; %C P U进程占用的C P U百分比; %M E M占用内存的百分比; N I进程的N I C E值,数值大,表示较少占用C P U时间; V S Z进程虚拟大小; R S S驻留中页的数量; W C H A N T T Y终端I D S T A T进程状态 D U n i n t e r r u p t i b l e s l e e p(u s u a l l y I O) R正在运行可中在队列中可过行的; S处于休眠状态; T停止或被追踪;

实验五 Linux进程管理

实验五Linux进程管理一.实验目的: 1.进行系统进程管理。 2.周期性任务安排 二.实验内容: 1.进程状态查看; 2.控制系统中运行的进程; 3.安排一次性和周期性自动执行的后台进程; 三.实验练习: 任务一进程管理 实验内容: 1、查看系统中的进程; 2、控制系统中的进程; 3、安排计划任务。 实验步骤: 1.使用ps命令查看和控制进程 显示本用户的进程: 显示所有用户的进程:。 在后台运行cat命令:

查看进程cat : 杀死进程cat:。 再次查看进程cat,看看是否被杀死。 注:ps命令包括较丰富的可选参数,常见的可选参数包括如下几个。 -A:显示所有用户启动的进程。 -a:显示所有其他用户的进程。 -u::显示进程拥有者、进程启动时间等更详细的信息。 -x:显示不是终端提供的进程信息。 -r:只显示正在运行的进程。 -m:显示线程信息。 -w:宽行显示进程信息。 -l:用长格式显示进程信息。 -t::只显示由终端/dev/tty提交的信息。 2.使用top命令查看和控制进程 用top命令动态显示当前的进程。 只显示用户user01的进程(利用u键)。 利用k键,杀死指定进程号的进程。 top参数: -b 以批量模式运行,但不能接受命令行输入;

-c 显示命令行,而不仅仅是命令名; -d N 显示两次刷新时间的间隔,比如-d 5,表示两次刷新间隔为5秒; -i 禁止显示空闲进程或僵尸进程; -n NUM 显示更新次数,然后退出。比如-n 5,表示top更新5次数据就退出;-p PID 仅监视指定进程的ID;PID是一个数值; -q 不经任何延时就刷新; -s 安全模式运行,禁用一些效互指令; -S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程; 交互式命令键位: space 立即更新; c 切换到命令名显示,或显示整个命令(包括参数); f,F 增加显示字段,或删除显示字段; h, 显示有关安全模式及累积模式的帮助信息; k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15) i 禁止空闲进程和僵尸进程; l 切换到显法负载平均值和正常运行的时间等信息; m 切换到内存信息,并以内存占用大小排序; n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;

Linux实验五 进程管理命令

实验五进程管理命令 一、实验目的 (1)了解如何监视系统运行状态 (2)掌握查看、删除进程的正确方法 (3)掌握命令在后台运行的用法 (4)掌握进程手工、调度启动的方法 二、常用命令 who 查看当前在线用户 top 监视系统状态 ps 查看进程 kill 向进程发信号 bg 把进程变成后台运行 & 把进程变成后台运行 fg 把后台进程变成前台运行 jobs 显示处于后台的进程。 at 在指定的时刻执行指定的命令或命令序列 batch 在系统负载较低、资源较空闲时执行命令或命令序列以上命令的具体用法请参阅教材、课件和man手册 三、实验内容 1、用top命令察看当前系统的状态,并识别各进程的有关栏目。 2、用ps命令察看系统当前的进程,并把系统当前的进程保存到文件 process中。

3、用ps命令察看系统当前有没有init进程。 4、输入“cat <回车>” 按-z 键,出现什么情况?输入fg命令出现什么情况? 答:将cat进程挂起,fg将挂起进程调到前台运行 按-c 键,出现什么情况? 答;强制中断 5、输入“find / -name ls*>temp &”,该命令的功能是什么? 查看该进程; 答:在根目录下按名字查找以ls开头的文件,并把查询结果保存到temp文件,并且把进程置为后台运行 输入killall find命令后,再查看该进程。 答:输入该命令后回车后,和fand相关的进程全部被杀死 6、输入“find / -name ls*>temp &” 输入jobs命令,出现什么情况? 答;查看后台进程的信息 输入fg命令出现什么情况? 答:将后台进程调到前台运行

Linux进程管理

八. Linux 的进程管理 (一)Linux 的进程结构 // 在文件 include/linux/task.h 中 #define NR_TASKS 512 //在文件 /kernal/ seched.c中 struct task_struct *task [ NR_TASKS ] = { &init_task }; //在文件 /include/linux / seched.h 中struct task_struct { … } //Linux的PCB内容 Linux的PCB: struct task_struct { …} 结构 [ 见补充材料 p13] (1) 进程状态 (2) 进程调度信息 (3) 进程标识

(4) 内部通信信息 (5) 进程链接指针 (6) 时间和定时器信息 (7) 文件系统信息 (8) 虚拟内存信息 (9) 进程上下文 1.Linux进程状态 long state; 2.进程调度信息: 进程普通进程——优先级调度 实时进程——先来先服务调度FCFS 时间片轮转调度 RR (1) long counter ; 进程剩余时间片 (2) long priority; 优先级(同时还表示进程 时间片)当counter=0时, priority =〉counter

(3) unsigned long policy; SCHED_ OTHER 普通进程 调度策略 SCHED_ FIFO 实时进程 SCHED_ RR 实时进程 (4)unsigned long rt_priority; 实时优先级(调度程序求权重时用到它) 3.标识号 (1) int pid ; //进程标识号 (2) unsigned short uid,euid,suid,fsuid; //用户标识,有效标识,备份标识,文件系统标识 (3) unsigned short gid,egid,sgid,fsgid; //用户组标识,有效组标识,备份组 标识,文件系统用户组标识 4. 内部通信信息 (IPC —— Inter Process Communication)为使在同一任务上协调工作,进程间必须 作通信即:交流数据

Linux进程管理

Linux进程管理Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 操作系统管理多个用户的请求和多个任务。大多数系统都只有一个CPU和一个主存,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当您提出一个请求时,给您造成一种假象,好象系统只被您独自占用。而实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和打印作业等。操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片大约都有零点几秒,虽然看起来很短,但实际上已经足够计算机完成成千上万的指令集。每个任务都会被系统运行一段时间,然后挂起,系统转而处理其他任务;过一段时间以后再回来处理这个任务,直到某个任务完成,从任务队列中去除。 一,进程及作业 Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源。我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。 进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。 进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。 作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。 例如,当用户编辑一个文本文件,并需要中止编辑做其他事情时,利用作业控制,用户可以让编辑器暂时挂起,返回shell提示符开始做其他的事情。其他事情做完以后,用户可以重新启动挂起的编辑器,返回到刚才中止的地方,就象用户从来没有离开编辑器一样。这只是一个例子,作业控制还有许多其他实际的用途。 二,启动进程 键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径∶手工启动和调度启动,后者是事先进行设置,根据用户要求自行启动。 1,手工启动

实验一——Linux环境下的进程管理

软件学院 上机实验报告 课程名称:操作系统 实验项目:实验一:Linux环境下进程管理 实验室:耘慧402 姓名:学号: 专业班级:实验时间:

一、实验目的及要求 1.加深对进程概念的理解,明确进程和程序的区别; 2. 进一步认识并发执行的实质; 3. 分析进程争用资源的现象,学习解决进程互斥的方法; 4. 了解Linux系统中进程通信的基本原理; 二、实验性质 1. 进程的创建:编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 2. 进程的控制:修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用lockf ()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 3. 用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 三、实验学时 实验性质:验证性 实验学时: 4学时 实验要求:必做 四、实验环境 1.实验环境: Linux系统开发环境

2.知识准备: (1) Linux系统开发环境搭建; (2) Linux环境下GCC编译器的使用; (3)语言中函数定义与调用、指针和类型的定义与使用、结构的定义、动态内存的申请等预备知识。 五、实验内容及步骤 ①实验内容: (1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 ②实验步骤: 1.进程的创建 1.1 进程 UNIX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。 PCB的数据结构如下: (1)进程表项(Process Table Entry)。包括一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存

实验五Linux进程管理.docx

实验五Linux 进程管理一. 实验目的: 1.进行系统进程管理。 2.周期性任务安排 二.实验内容: 1.进程状态查看; 2.控制系统中运行的进程; 3.安排一次性和周期性自动执行的后台进程; 三.实验练习: 任务一进程管理实 验内容: 1、查看系统中的进程; 2、控制系统中的进程; 3、安排计划任务。 实验步骤: 1.使用 ps 命令查看和控制进程 显示本用户的进程: 显示所有用户的进程:。 在后台运行cat 命令:

查看进程cat : 杀死进程cat:。 再次查看进程cat,看看是否被杀死。 注: ps 命令包括较丰富的可选参数,常见的可选参数包括如下几个。 -A:显示所有用户启动的进程。 -a:显示所有其他用户的进程。 -u::显示进程拥有者、进程启动时间等更详细的信息。 -x:显示不是终端提供的进程信息。 -r:只显示正在运行的进程。 -m:显示线程信息。 -w:宽行显示进程信息。 -l:用长格式显示进程信息。 -t: :只显示由终端/dev/tty提交的信息。 2.使用 top 命令查看和控制进程 用top 命令动态显示当前的进程。 只显示用户 user01 的进程(利用 u 键)。利 用 k 键,杀死指定进程号的进程。 top 参数: -b 以批量模式运行,但不能接受命令行输入;

-c 显示命令行,而不仅仅是命令名; -d N 显示两次刷新时间的间隔,比如-d 5,表示两次刷新间隔为 5 秒; -i 禁止显示空闲进程或僵尸进程; -n NUM 显示更新次数,然后退出。比如-n 5,表示 top 更新 5 次数据就退出;-p PID 仅监视指定进程的ID; PID 是一个数值; -q 不经任何延时就刷新; -s 安全模式运行,禁用一些效互指令; -S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程; 交互式命令键位: space 立即更新; c 切换到命令名显示,或显示整个命令(包括参数); f,F 增加显示字段,或删除显示字段; h, 显示有关安全模式及累积模式的帮助信息; k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15) i禁止空闲进程和僵尸进程; l切换到显法负载平均值和正常运行的时间等信息; m切换到内存信息,并以内存占用大小排序; n 提示显示的进程数,比如输入3,就在整屏上显示 3 个进程;

Linux进程管理-实验报告

《Linux 操作系统设计实践》实验一:进程管理 实验目的: (1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)学习通过进程执行新的目标程序的方法。 (4)了解Linux 系统中进程信号处理的基本原理。 实验环境:Red Hat Linux 实验内容:(1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程,当此进程运行时,在系统中有一个父进程和两个子进程活动,让每一个 进程在屏幕上显示一个字符,父进程显示字符“a”;子进程分别显 示字符“b”和字符“c”,试观察记录屏幕上的显示结果,并分析 原因。 程序代码: #include<> int main() { int p1 ,p2 ; while((p1=fork())==-1); if(p1==0) putchar('b'); else { while((p2=fork())==-1); if(p2==0) putchar('c'); else putchar('a'); } return 0; } 运行结果:bca 分析:第一个while里调用fork() 函数一次,返回两次。子进程P1得到的返回值是0,父进程得到的返回值是新子进程的进程ID (正整数);接下来父进程和子进程P1两个分支运行,判断P1==0,子进程P1符合条件,输出“b”;接下来else里面的while里再调 用fork()函数一次,子进程P2得到的返回值是0,父进程得到的返 回值是新子进程的进程ID(正整数);接下来判断P2==0,子进程P2 符合条件,输出“c”,接下来父进程输出“a”,程序结束。 (2)进程的控制

linux进程线程管理实验报告

西安郵電學院 操作系统LINUX实验报告 题目1:进程______ 题目2:线程管理__ 题目3:互斥_____ 院系名称:电子工程学院 专业名称:电子信息工程 班级:0806 学号:04085048 学生姓名:杨旭东

实验一: 进程管理 一.实验目的 通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点, 掌握在POSIX 规范中fork和kill系统调用的功能和使用。 二.实验要求 2.1 实验环境要求 1. 硬件 (1) 主机:Pentium III 以上; (2) 内存:128MB 以上; (3) 显示器:VGA 或更高; (4) 硬盘空间:至少100MB 以上剩余空间。 2. 软件 Linux 操作系统,内核2.4.26 以上,预装有X-Window 、vi、gcc、gdb 和任意web 浏览器。 2.2 实验前的准备工作 学习man 命令的用法,通过它查看fork 和kill 系统调用的在线帮助,并阅读参 考资料,学会fork 与kill 的用法。 复习C 语言的相关内容。 三、实验内容 3.1 补充POSIX 下进程控制的残缺版实验程序 3.2回答下列问题: 1. 你最初认为运行结果会怎么样? 2. 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。 3. proc_number 这个全局变量在各个子进程里的值相同吗?为什么? 4. kill 命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么? 5. 使用kill 命令可以在进程的外部杀死进程。进程怎样能主动退出?这两种退出方式哪种更好一些? 四、实验结果 4.2回答上述实验内容中的问题 1.预期结果:

熟悉Linux命令及进程管理

操作系统实验报告 实验一:熟悉Linux命令及进程管理 自己电脑上装了Ubuntu系统,所以这次实验的内容在此操作系统下进行 在home文件夹下有如下目录 workspace文件夹下有如下目录

一、实验目的 1、熟悉Linux命令 2、用Vi文本编辑器新建c语言文件并编译运行 3、进程管理 二、实验内容和步骤 1.熟悉Linux命令 (1)l s显示文件目录 打开终端 ls显示home文件夹下文件目录 如(5)中图所示 (2)c d:改变当前目录 cd workspace 进入workspace文件夹 ls 显示workspace文件夹下目录 如(5)中图所示 (3)m kdir 建立子目录

mkdir newfile 建立文件名为newfile的新目录 ls 显示目录 如(5)中图所示 (4)r mdir 删除子目录 rmdir newfile 删除文件名为newfile的目录 ls 显示目录 如(5)中图所示 (5)m v文件改名 mv example1 example4 将example1修改为example4 ls 显示目录 2.用Vi文本编辑器新建c语言文件并编译运行 在workspace/program文件夹下进行操作 vi hello.c 新建文件名为hello.c的文件

i 进入文本编辑模式 输入程序代码 Esc 退出文本编辑模式 Shift+; wq 退出保存 ls 查看目录 gcc hello.c –o hello 编译 ls 查看目录(绿色表示可执行文件)

./hello 当前目录下执行 输出hello linux! 3. 1. getpid()函数 vi getpid_test.c i 输入代码 esc Shift+; wq gcc getpid_test.c -o getpid_test ./getpid_test

Linux系统进程管理基本原理以及管理工具

Linux系统进程管理基本原理以及管理工具 一、进程简介 程序是保存在外部存储介质(如硬盘)中的可执行代码和数据的静态集合;为了某种任务而设计的软件。 而进程是在CPU及内存中处于动态执行状态的计算机程序。 在Linux系统中,一个程序启动后可以创建一个或多个进程,例如提供Web 服务的httpd程序,当有大量用户同时访问web页面时,httpd程序可能会创建多个进程来提供服务。 1.1 进程分类 进程分交互进程、批处理进程、和守护进程。 守护进程总是活跃的,一般是在后台运行,守护进程一般是由系统在开始时通过脚本自动激活启动或root启动。如/etc/init.d/httpd是web服务器的守护程序,使用chkconfig命令设置httpd程序的运行级别,当系统启动时,会跟着启动。 1.2 进程的属性 PID:进程的ID,唯一的数值,用来区分进程 PPID:代表父进程以及父进程的ID UID:启动进程的用户ID GID:进程所属的组 nice:进程执行的优先级 tty:进程所连接的终端 stat:进程的状态,一般状态分为运行R、休眠S、僵尸Z

还有一点,资源的占用,如内存、cpu 1.3 父进程和子进程 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行。 二、进程的管理 对于进程的管理是通过进程管理工具实现的,Linux系统中比较常用的进程管理命令有以下几种: 2.1 查看进程 ps 查看静态的进程统计信息(processes statistic) top 查看进程动态信息 htop 查看进程动态信息,top的升级版 pgrep 查询进程信息 pstree 查看进程树 2.2 控制进程 启动进程:分为手工启动和调度启动。 手工启动分别前台启动,和后台启动。前台启动就如我们平时的services network start相同,后台启动,是把services network start这条命令放入后台运行,不占用前台的console终端使用。将“&”置于命令的最后面,进程启动后会直接放于后台运行,如service network start &。

Linux进程管理命令详解

Linux进程管理命令详解 Linux进程管理命令详解2010-10-08 14:124.3 Linux进程管理命令详解(1) Linux管理进程的最好方法就是使用命令行下的系统命令。Linux下面的进程涉及的命令有 at,bg,fg,kill,crontab,jobs,ps,pstree,top,nice,renice,sleep,nohup。 1.at命令:定时运行命令 作用:at命令在指定时刻执行指定的命令序列。 格式: at[-V][-q x][-f file][-m]time atq[-V][-q x] atrm[-V][-q x]job… batch[-V][-f file][-m] 主要选项如下。 -V:显示作业将被执行的时间。 -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。 -f:从文件中读取命令或shell脚本,而非在提示后指定它们。 -m:执行完作业后发送电子邮件到用户。 time:设定作业执行的时间。time参数可以是下面格式中的任何一种。 HH:MM格式--如04:00,代表4:00AM。如果时间已过,就会在第二天的这一时间执行。

midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。 英文月名日期年份格式--如January 15 2005,代表2005年1月15日。 年份可无。 MMDDYY、MM/DD/YY或MM.DD.YY格式--如011505,代表2005年1月15日。 now+时间格式--时间以minutes、hours、days或weeks为单位。如now+5 days,代表命令应该在5天之后的此时此刻执行。偏移量的格式为时间+偏移量,单位是minutes、hours和days。 说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经设定的命令序列。atrm删除已经设定的命令序列。batch 当系统负载低于一个设定值(0.8),执行设定的命令序列。 应用实例如下。 (1)让系统在两天后的17:30执行文件data中指定的作业,使用命令: #at-f data 15:30+2 days (2)配置batch作业 要在系统平均载量降到0.8以下时执行某项一次性的任务,使用batch命令。键入batch命令后,"at"提示就会出现。键入要执行的命令,按"Enter"键,然后键入"Ctrl-D"。你可以指定多条命令,方法是键入每一条命令后按"Enter"键。键入所有命令后,按"Enter"键转入一个空行,然后再键入"Ctrl-D"。或者你也可以在提示后输入shell脚本,在脚本的每一行后按"Enter"键,然后在空行处键入"Ctrl-D"来退出。系统平均载量一降到0.8以下,这组命令或脚本就 会被执行。如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子 邮件方式被邮寄给用户。 (3)进阶应用:控制对at和batch的使用 通过/etc/at.allow和/etc/at.deny文件可以用来限制对at和batch命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使

Linux进程管理命令

实验指导 (一) Linux进程管理命令 Linux进程的管理通过进程管理命令实现,主要有如下三个。 1. 进程查看 Linux进程管理是一项十分重要的工作,可以帮助用户更好的控制系统。查看进程的命令主要有ps、top和pstree等。 (1) ps命令 ps命令是最基本、也是非常强大的进程查看命令,用于报告进程标识、用户、CPU 时间消耗以及其他属性。利用它可以确定有哪些进程正在运行及运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。单独使用ps命令可以看到前台执行的进程,但并非所有进程都在前台执行,也有不少进程隐藏在后台执行。后台进程不和屏幕、键盘等标准输入/输出设备进行通信,如果需要检测其情况,可以使用带参数的ps命令。ps提供很多选项参数,常用的有以下几个。 -l 长格式输出 -u 按用户名和启动时间的顺序来显示进程 -j 用任务格式来显示进程 -f 用树形格式来显示进程 -a 显示所有用户的所有进程(包括其它用户) -x 显示无控制终端的进程 -r 显示运行中的进程 -ww 避免详细参数被截断 ps命令提供进程的一次性查看,其结果并是不动态连续的;若需对进程进行时间监控,可以使用top命令。 Linux 使用top 命令显示CPU 占用率为前几位的进程。该命令可以按CPU 使用率、内存使用率、执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。top命令与ps命令基本作用相同,都是显示系统当前的进程状态,但top是一个动态显示的过程,输出结果是连续的。它的缺点是会消耗很多系统资源。top命令带的参数如下所示。 -b 以批量模式运行,但不能接受命令行输入。 -c 显示命令行,而不仅仅是命令名。

相关文档
最新文档