linux进程管理篇

linux进程管理篇
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这个文件中。不影响我们前台其它的操作。

进程的状态

学过操作系统原理的同学应该可以看得懂,不懂再去翻翻书,不知道你有没有想起当时教这门课的老师呢?呵呵

常用进程命令

w 查看当前系统信息

w命令,我在之前的章节用曾用过,当时是查看当前用户信息,当然也可以查看到系统相关的信息。

作用:查看当前系统活动摘要。

[root@bogon cron]# w

14:48:39 up 2:46, 1 user, load average: 0.00, 0.01, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/1 192.168.203.1 12:27 0.00s 0.17s 0.02s w

w显示信息的含义:

JCPU:以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的CPU时间会显示在这里PCPU: cpu执行程序消耗的时间

WHAT:用户下在执行的操作

load average :分别显示系统在过去1、5、15分钟内的平均负载程度。

FROM:显示用户从何处登录系统,“:0”的显示代表该用户时人X Windows下,打开文本模式窗口登

录的

IDLE:用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置

查看个别用户信息:w [用户名]

[root@localhost ~]# w root

23:32:01 up 52 min, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/1 192.168.203.1 22:53 0.00s 0.10s 0.01s w root

ps进程查看命令

ps应该是查看进程用得最普遍的命令,我在之前的面试中都被多次问到过。因为linux不是面试我的

重点,所以,我后来特意去查了一下。ps我以前的理解就是photoshop的缩写。哈哈!因为以前本专门跑

去学过平面设计。吼吼,扯远了!

进程查看命令:ps

常用选项:

-a:显示所有用户的进程

-u:显示用户名和启动时间

-x:显示没有控制终端的进程

-e:显示所有进程,包括没有控制终端的进程

-l:长格式显示

-w:宽行显示,可以使用多个w进行加宽显示

应用实例:

ps 查看隶属自己的进程

root@fnngj-virtual-machine:~# ps

PID TTY TIME CMD

1370 pts/0 00:00:00 bash

3185 pts/0 00:00:00 ps

root@root:~# ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 5941 5801 4 80 0 - 1882 wait pts/2 00:00:00 bash

4 R 0 6000 5941 0 80 0 - 1121 - pts/2 00:00:00 ps

看一下上面的选项都指的什么。。

PID :进程号

PPLD:父进程的进程号

TTY:进程启动的终端

STAT:进程当前状态(S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止)

NI:进程优先级

TIME:进程自从启动以后启用CPU的总时间

COMMAND/CMD:进程的命令名

USER:用户名

%CPU:占用CPU时间和总时间的百分比

%MEM:占用内存与系统内存总量的百分比

实列:

ps -u or -l查看隶属于自己进程详细信息

root@root:~# ps -u or -l

ps -le or -aux查看所有用户执行的进程的详细信息

root@root:~# ps le or -aux

ps -aux --sort pid可按进程执行的时间、PID、UID等对进程进行排序

root@root:~# ps -aux --sort pid

ps -uU fnngj 查看某个用记启动的进程

root@root:~# ps -uU fnngj

ps -le | grep init查看指定进程信息

root@root:~# ps -le | grep init

kill终止进程

在winddow下面,我们要结束一个进程,最简单的方式就是关闭这个程序,相应的进程也会随之结束,遇到不能关闭的情况。会打开任务管理器结果掉。那么在linux下如果做呢?我们可以使用kill命令来终止进程。

为什么要杀死进程?

* 该进程点用了过多的CPU时间

* 该进程缩住了一个终端,使其他前台进程无法运行

* 运行时间过长,但没有预期效果

* 产生了过多到屏幕或磁盘文件的输出

* 无法正常退出

kill用法:

关闭进程:kill [进程号]

root@root:~# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47)

SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-

12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

我们看到每个编号对应一个含义,如9) SIGKILL;9标注的是SIGKILL ,那么我们可用9来终止进程。

关闭进程:

kill -s 9 [进程号](强行关闭)

kill -9 [进程号](强行关闭)

上面的两种形式都可以强行关闭进程。

重启进程:

有时候我们需要把进程重新启动一下,可以下面的命令完成。

kill -1 [进程号](重启进程)

root@root:~# kill -1 3567 重启PID为3567的进程

关闭图形程序:

关闭图形程序: xkill

当你在终端下输入这个命令时,你的鼠标会变成一个小叉子,你只去点你想要关闭的窗口就可以关闭了

其它:

结束所有进程: killall

查找服务进程号: pgrep [服务名称]

关闭进程: pkill [进程名称]

一个存放内存中的特殊目录/proc

这个目录比较特殊,他并不在我们磁盘上,而在我们的内存当中;当前系统运行的所有进程都动态的存放在这个目录中。

root@root:~# ls /proc

1 14 15 187 287 820 dma net

10 1401 1524 19 3 827 driver pagetypeinfo

1037 1403 1525 1906 32 830 execdomains partitions

1043 1413 1527 1919 34 832 fb sched_debug

1047 1414 1531 2 35 834 filesystems schedstat

11 1415 1536 20 36 840 fs scsi

1172 1418 1544 2024 454 842 interrupts self

12 1423 1555 2025 459 843 iomem slabinfo

.....................

上面每个编号就是以我们当前进程PID所命令的目录名。

当然,当前目录下也存放了一些我们系统的信息

查看我们当前cpu的信息

root@root:~# cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 23

model name : Pentium(R) Dual-Core CPU T4500 @ 2.30GHz

stepping : 10

cpu MHz : 2294.000

cache size : 1024 KB

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov

pat

pse36 clflush dts acpi mmx fxsr sse sse2 ss nx constant_tsc up arch_perfmon

pebs

bts xtopology tsc_reliable aperfmperf pni ssse3 hypervisor dts

bogomips : 4588.00

clflush size : 64

cache_alignment : 64

address sizes : 40 bits physical, 48 bits virtual

power management:

查看内存信息

root@root:~# cat /proc/meminfo

MemTotal: 508344 kB

MemFree: 10668 kB

Buffers: 10700 kB

Cached: 96056 kB

SwapCached: 34124 kB

Active: 231384 kB

Inactive: 231576 kB

Active(anon): 178524 kB

Inactive(anon): 178316 kB

Active(file): 52860 kB

Inactive(file): 53260 kB

........................

查看当前分区的信息

root@root:~# cat /proc/partitions

major minor #blocks name

8 0 20971520 sda

8 1 20446208 sda1

8 2 1 sda2

8 5 522240 sda5

进程的优先级

我们学过操作系统原理的同学都知道,我们系统在执行程序时有会先后顺序的,但为什么我们的电脑可以边听音乐,边聊QQ,边上网,甚至还可以同时挂几个游戏。因为我们CPU运行超快。他可以把每个程序的进程排好队,这个执行一下,那个执行一下。所以,我们会觉得各种程序是并行运行的。

当然,进程也会分个快慢缓急的,所以要对进程分个优先级。同学们在食堂排队打饭,总理来了,这优先级多高啊。同学们纷纷让开,先给总理打。

* 优先级取值范围为(-20,19)

linux给我们提供的优先级的范围为-20到19,我们启动一个进程时,默认的优先级为0 ,-20的优先级为最大,或者说最高。当然,我们在设置的时候可以写-30,但系统默认为-20。

nice命令

指定程序的运行优先级

格式:nice -n command

例如:nice --5 command

renice 命令

改变一个正在运行的进程的优先级

格式: renice n pid

例如:renice -5 777

例子:

[root@bogon cron]# ps -le

[root@bogon cron]# renice -20 [PID]

nohup命令可以在用户退出时继续执行某一进程

一般的命令在用户退登录后就停止执行了,nohup命令可以使进程在用户退出登录后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储到文件nohup.out中

格式:

nohup program &

例子:

[root@bogon cron]# nohup find / -name init* > /hzh/test/find.init.20120520 &

如果我们没指定/hzh/test/find.init.20120520这个保存位置的话,系统默认会把查询的结果放到nohup.out的文件中。我们一般不会去使用默认方式保存。

进程的挂起与恢复

当我们执行一条命令时,发现太慢或输出内容太多,最常用到的做法就是终止(ctrl+c),那么挂起呢?通俗一点就是暂停呗!^_^!!

进程中止(挂起)和终止

挂起(ctrl+z)

终止(ctrl+c)

[root@bogon ~]# find / -name init* > /hzh/test/find.init.20120520

[1]+ Stopped find / -name init* >/hzh/test/find.init.20120520

被暂停的进程会提示我们Stopped

小知识:系统中有两种运行的进程,我们在前台是看不到的。一种是后台执行的命令,一种就是被暂停的。那我们通过什么方式查看被暂停和后台执行的进程呢?

查看被挂起的进程(jobs)

进程的恢复:

恢复到前台继续运行(fg)

恢复到后台继续运行(bg)

[root@bogon ~]# jobs 通过jobs命令可以查看后被暂停的进程

[1]+ Stopped find / -name init* >/hzh/test/find.init.20120520

[root@bogon ~]# fg fg会将暂停的进程恢复到前台继续执行。

find / -name init* >/hzh/test/find.init.20120520

[root@bogon ~]# bg bg会将暂停的进程恢复到后台继续执行

[1]+ find / -name init* >/hzh/test/find.init.20120520 &

通过top命令查看进程

top命令与前面介绍的ps命令相似,已经介绍了ps,为什么还要top?top有它自己的优点呢。它比ps显示的信息更详细。而且是动态的噢,信息是在不断变化的噢!

[root@bogon ~]# top

top - 12:45:16 up 43 min, 1 user, load average: 0.00, 0.04, 0.06

Tasks: 57 total, 1 running, 56 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 99.3% id, 0.0% wa, 0.0% hi, 0.0% si

Mem: 1034536k total, 232864k used, 801672k free, 60188k buffers

Swap: 1052248k total, 0k used, 1052248k free, 118692k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

6848 root 15 0 28948 8444 2524 S 0.3 0.8 0:05.44 X

7181 root 16 0 7036 2436 1968 S 0.3 0.2 0:00.26 sshd

7244 root 16 0 1964 976 772 R 0.3 0.1 0:00.45 top

1 root 16 0 3116 544 464 S 0.0 0.1 0:00.97 init

2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

3 root 3

4 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

4 root

5 -10 0 0 0 S 0.0 0.0 0:00.03 events/0

5 root 5 -10 0 0 0 S 0.0 0.0 0:00.01 khelper

6 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kthread

7 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid

88 root 5 -10 0 0 0 S 0.0 0.0 0:00.01 kblockd/0

89 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd

106 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

107 root 15 0 0 0 0 S 0.0 0.0 0:00.18 pdflush

108 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0

109 root 6 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0

255 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod

常用选项:

d:指定刷新的时间间隔

c: 显示整个命令而不仅仅显示命令名

在命令运行的时候按键盘d,会出现如下提示要求你输入刷新的间隔时间

Change delay from 3.0 to: 10(秒)

常用命令:

u:查看指定用户的进程

k:终止执行中的进程

h or ?获得帮助

r: 重新设定进程优先级

s:改变刷新的时间间隔

W:将当前设置写入~/.toprc文件中

这里不细讲了,感兴趣的可以用 man top 命令查看top的详细帮助。

为什么要计划任务

为什么要设置计划任务

我们在系统的管理中,很多时候不是及时的去操作,比如对某一网站数据的备份,备份的过程需要占

用大量的系统资源,凌晨三四点的时候系统访问用户最少,系统最空闲。但我们的系统的系统管理员总不

能老那个时间爬起来操作吧。如果在家远程操作的话,老婆不愿意了。哈哈!

计划任务的命令

计划命令分一次性计划和周期性计划。比如我要在今年10月1结婚,这是一次性的计划。不能每年的10

月1结婚吧,真有女女愿意结,咱经济上也吃不消呀。睡觉就是周期性的计划。比如,我给自己规定每天晚

上的11点半睡觉。那么到时间我就上床睡觉。

at 安排作业在某一时刻执行一次

batch 安排作业在系统负载不重时执行一次

cron 安排周期性运行的作业

一次性计划at和batch

at命令指定时间的方式

绝对计时方法:

midnight noon teatime

hh:mm [today]

hh:mm tomorrow

hh:mm 星期

hh:mm MM/DD/YY

相对计时方法:

now+n minutes

mow+n hours

now+n days

用法:

指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2012年1月11日)

命令格式:

at 5:30pm

at 17:30

at 17:20 today

at now+3 hours

at now+180 minutes

at 17:30 12.1.11

at 17:30 1.11.12

好!现格式知道了,玩个实例吧!

[root@bogon ~]# at now+5 minutes

at>

我们定的时间是5分钟之后,现在可以在at下面输入各种任务,保存!5分钟之后执行;不过,我们需要注意,在用命令时最好写命令的绝对路径,为了安全。

[root@bogon ~]# at now+5 minutes

at> /usr/bin/wall < /etc/motd 做一个广播,把etc/motd 文件广播出去

at> 可以继续写其它的计划

at>

job 2 at 2012-05-20 13:43 ctrl+d保存计划并退出

是否还担心我们的计划是否启动,通过下面两个命令查看at进程是否正常启动

[root@bogon test]# at -l

3 2012-05-20 13:57 a root

[root@bogon test]# atq

3 2012-05-20 13:57 a root

如果真的没有启动的话,可以通过手工方式重新启动一下

[root@bogon ~]# /etc/rc.d/init.d/atd start

删除at计划任务

[root@bogon test]# at -d

查看at计划任务

[root@bogon test]# ls /var/spool/at/

batch命令

作用:

安排一个或多个命令在系统负载较轻进运行一次(一般情况下负载较轻指平均负载降到0.8以下)

使用方法同at

周期性计划命令crontab

作用:用于生成cron进程所需要的crontab文件

crontab的命令格式

crontab {-l|-r|-e}

-l 显示当前的crontab

-r 删除当前的crontab

-e 使用编辑器编辑当前crontab文件

好多人都觉得周期计划任务设置起来比较麻烦,其实我们只要掌握规律就很好设置。

crontab -e

规则:把知道的具体的时间添上,不知道的都添加上*

分钟小时天月星期命令/脚本

假如,我们每天早上4点要做一下操作,以下面方式表示:

分钟小时天月星期命令/脚本

* 18 * * 1,3 [具体的操作]

假如,我们每周一和三下午的6点要做一下操作,以下面方式表示:

分钟小时天月星期命令/脚本

* 4 * * * [具体的操作]

案例:在上学的时候都有上机课,周一到周五,下午5点30上课结果。我们需要在5点30发一个通知,5

点45自动关机。设定计划任务需要分两步完成,第一步提醒,第二步关机

分钟小时天月星期命令/脚本

30 17 * * 1-5 /usr/bin/wall < /hzh/test/guanji.wall

45 17 * * 1-5 /usr/bin/shudown -h now

操作方法:

[root@bogon test]# crontab -e回车会进入一个vi文本中

根据我上面介绍格式编写内容,然后保存退出

crontab: installing new crontab 表示创建计划成功

通过下面方式进行查看计划:

[root@bogon test]# cd /var/spool/cron

[root@bogon cron]# ls

root

[root@bogon cron]# cat root

30 17 * * 1-5 /usr/bin/shudown -h now

--------------------------------------------------------------------------------------------

-----------------------------------------

关于进程的所有内容讲完,学这一部分内容用了我一周的时间。在此标记一下!!

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/255612378.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/255612378.html, ,https://www.360docs.net/doc/255612378.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 显示命令行,而不仅仅是命令名。

相关文档
最新文档