管道命令在一个windows杀进程命令内执行这句话对不对

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
管道通信 父进程使用系统调用pipe( ).PPT 20页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
管道通信 父进程使用系统调用pipe( )
你可能关注的文档:
··········
··········
实验一、进程控制 一、实验目的
1、加深对进程的理解,进一步认识并发执行的实质;
2、分析进程争用资源现象,学习解决进程互斥的方法;
3、掌握Linux进程基本控制;
4、掌握Linux系统中的软中断和管道通信。 编写程序,演示多进程并发执行和进程软中断、管道通信。 父进程使用系统调用pipe( )建立一个管道,然后使用系统调用fork()创建两个子进程,子进程1和子进程2; 子进程1每隔1秒通过管道向子进程2发送数据:
I send you x times. (x初值为1,每次发送后做加一操作)
子进程2从管道读出信息,并显示在屏幕上。 父进程用系统调用signal()捕捉来自键盘的中断信号(即按Ctrl+C键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:
Child Process l is Killed by Parent!
Child Process 2 is Killed by Parent! 父进程等待两个子进程终止后,释放管道并输出如下的信息后终止
Parent Process is Killed! 二、实验内容
三、预备知识 vi :Linux古老的、功能强大的全屏幕编辑器 启动方式:
--$vi 文件名
打开已有的文件或编辑新文件
先编辑,之后命名存盘 Vi的三种模式:命令模式、输入模式和末行模式
gedit:图形编辑器 1、Linux文件编辑 2、编辑、编译、执行/调试 $vi $cc –o
-g test.c $cc –o sub1 sub1.c $gdb $./test 3、Linux进程管理命令——进程查看 ps命令:报告进程标识、用户、CPU时间消耗及其他属性 命令单独使用可以看到前台执行的进程;后台进程可以使用带参数的ps命令(如ps -ax) 提供进程的一次性查看,结果不连续 结果数据很精确,但数据量庞大
top命令:显示CPU占用率为前几位的进程 动态显示,输出结果连续 消耗较多的系统资源
pstree命令:列出当前的进程,以及它们的树状结构 将当前的执行程序以树状结构显示,弥补ps命令的不足 支持指定特定程序(PID)或使用者(USER)作为显示的起始 3、Linux进程管理命令—进程终止 终止一个进程或终止一个正在运行的程序 kill命令:根据PID向进程发送信号,缺省操作是停止进程 如果进程启动了子进程,只终止父进程,子进程运行中将仍消耗资源成为“僵尸”进程,可用kill -9强制终止退出 pkill命令:终止同一进程组内的所有进程。允许指定要终止的进程名称,而非PID Killall命令:与pkill应用方法类似,直接杀死运行中的程序
数据库服务器的父进程不能用这些命令杀死(容易产生更多的文件碎片导致数据库崩溃) 4、Linux进程控制函数——进程创建 pid=fork();
创建一个子进程,被创建的子进程是父进程的进程映像的一个副本 (除proc结构外) 。
67 4、 Linux进程控制函数—修改进程 函数族exec() :启动另外的进程取代当前的进程 #include &unistd.h& int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, const char *envp[]); int execv(const char *path, const char *argv[]); int execve(const char *path, const char *argv[], const char *envp[]; int execvp(const char *file, const char *argv[]); 实例: pid_t
if ((p1=fork()) == 0) {
execv(&./get&,NULL);
} 4、 Linux进程控制函数—进程属性操作 设置进程属性 nice():改变进程执行的优先级 setpgid():将指定进程的组进程设为指定的组识别码 setpgrp():将目前进程的组进程识别码设为目前进程的进程识别码,等价于setpgid(0,0) setpriority():设置进程、进程
正在加载中,请稍后...管道命令【bat吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:13,874贴子:
管道命令收藏
什么是管道命令啊??在网上看了很久都不太明白,高手来解释一下啊!!&
在&
&
和&
&
里的解释有很大差别啊!&
顺便解释一下:&
1.@echo&off&
netstat&-a&-n&&&a.txt&
type&a.txt&|&find&&7626&&&&&echo&&Congratulations!&You&have&infected&GLACIER!&&
del&a.txt&
2.time&/t&&D:\IP.log&
netstat&-n&-p&tcp│find&&:3389&&&D:\IP.log&
start&Explorer
&&&&和&||&我是不用的呵呵
第二个网址里回答者所说的只是管道的一个应用
@echo&off
netstat&-a&-n&&&1.txt
REM&执行命令&netstat&-a&-n,输出到&a.txt
type&a.txt&|&find&&7626&
REM&将命令&type&a.txt&的输出作为&find&&7626&&的输入.
REM&&type&a.txt&的输出就是a.txt的内容;&find&&7626&&会从输入中查找
&7626&(并显示出来)
REM&管道命令实际上会启动两个cmd进程来执行这两个命令,并对它们建立管道.嗯这要记住.
if&not&errorlevel&1&echo&&Congratulations!&You&have&infected&GLACIER!&
REM&如果find命令的返回值不大于等于1,显示一些文字.一般情况下,find命令在输入中找不到要查找的字符串时返回1,否则返回0.
del&a.txt
time&/t&&D:\IP.log
REM&执行命令&time&/t(会输出当前时和分),输出(续写)到&D:\IP.log
netstat&-n&-p&tcp&|&find&&:3389&&&D:\IP.log
REM&略
start&Explorer
登录百度帐号进程管理通道实验中若不对管道进行互斥控制会怎样_百度知道
进程管理通道实验中若不对管道进行互斥控制会怎样
我有更好的答案
  一、实验的目的与基本要求实验目的本课程设计是为了配合操作系统课程的理论教学而设置的,目的是通过课程设计的综合训练,加强学生对操作系统概念的实际应用技能的训练,提高学生分析问题和解决问题的能力。基本要求课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上3-4小时的机来调试程序。学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计的具体内容如下:设计1 进程管理1. 设计目的加深对进程概念的理解,明确进程和程序的区别;进一步认识并发执行的实质;实现Linux中进程通信的两种方式:软中断和管道通信。2. 设计内容1) 进程的创建和控制编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。每个进程在屏幕上显示一个字符,记录屏幕上的显示结果,并分析原因。修改以编写的程序,将每个进程输出一个字符改为每个进程输出一句话。2) 进程的软中断通信使用系统调用fork()创建两个子进程,使用系统调用signal()让父进程捕捉用alarm函数设置时钟的时间段终止时产生的信号,当捕捉到该信号后,父进程使用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出子进程被杀死信息后终止,父进程等待两个子进程终止后,输出父进程被杀死信息后终止程序。记录屏幕上的显示结果,并分析原因。3) 进程的管道通信使用系统调用pipe()建立一个管道;两个子进程分别向管道写信息,父进程则从管道读出来自子进程的信息,显示在屏幕上。记录屏幕上的显示结果,并分析原因。3. 系统调用函数说明、参数值及定义1. Fork()创建一个新进程进程int fork()其中返回int取值意义如下:正确返回:在父进程中返回子进程的进程号,在子进程中返回0错误返回:-12. Lockf(int files,int function,long size)用作锁定文件的某些段或者整个文件。file:文件描述符;function:锁定和解锁,1表示锁定,0表示解锁;size:是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。3. Signal(int sig, (*func) function)进程控制软中断信号的处理。signal()会依照参数sig指定的信号编号来设置该信号的处理函数。sig: SIGALRM: alarm()函数设置的时钟的时间段终止时产生的信号.其它信号略function:信号处理的一个函数地址。4. kill(int pid,int sig)向一个进程或一个进程组发信号,可以用来送参数sig指定的信号给参数pid指定的进程。pid: pid&0 将信号传给进程号为pid的进程其它略signumber: 送给进程号为pid进程指定信号量5. alarm(unsigned int seconds)设置一个指定时间的计时器seconds: 设置时间秒数6. int pipe(int filedes[2])filedes为整数数组名,在调用这个函数后,系统为通道分配的两个文件描述符将通过这个数组返回到用户进程中, filedes[1]是文件输出描述符, filedes[0]是文件输入描述符7. int wait(int *status)暂停目前进程的执行,直到有信号到来或子进程的结束。子进程的结束状态指会由参数status返回,如果不在意结束状态时,则参数status可以设置成NULL设计2 进程的同步与互斥1. 设计目的分析进程争用资源的现象,学习解决进程互斥的方法。2. 设计内容用程序实现生产者-消费者问题
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。posts - 12,&
comments - 1,&
trackbacks - 0
工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号。如/path/from/file.{1..100}。而机房间的专线对单个scp进程的传输速度是有限制的,比如最大在100Mb/s,如果直接启动100个scp,则又会遇到ssh的并发连接数限制。
所以需要控制并发数,即不超过ssh的并发限制,又要让单网卡上的带宽接近饱和,尽快完成传输(假设专线带宽远大于单机网卡带宽)
之前知道通过mkfifo创建一个命名管道,可以实现对并发的控制。现在来实现一个。
在此之前,如果对mkfifo不了解,可以,作者写得很详细,我就不造轮子了。
这里直接给出代码,并做一些解释。因为单进程的带宽如上所述,所以考虑9个并发。代码如下:
1 #!/bin/bash
3 your_func()
# use your cmd or func instead of sleep here. don't end with background(&)
echo "scp HOSTNAME:/home/USER/path/from/file.$1 REMOTE_HOST:/home/USER/path/to/"
10 concurrent()
# from $1 to $2, (included $1,$2 itself), con-current $3 cmd
start=$1 && end=$2 && cur_num=$3
# ff_file which is opened by fd 4 will be really removed after script stopped
./fifo.$$ &&
exec 4&& ./fifo.$$ && rm -f ./fifo.$$
# initial fifo: write $cur_num line to $ff_file
for ((i=$ i&$cur_num+$ i++)); do
echo "init time add $i" &&4
for((i=$ i&=$ i++)); do
# read from mkfifo file
# REPLY is var for read
echo -e "-- current loop: [cmd id: $ fifo id: $REPLY ]"
your_func $i
echo "real time add $(($i+$cur_num))"
1&&4 # write to $ff_file
} & # & to backgroud each process in {}
# wait all con-current cmd in { } been running over
34 concurrent 0 8 3
上面以3为并发数,执行0到8号共9次,以便显示如下执行结果。
1 bash concurrent.sh
2 -- current loop: [cmd id: 0 ; fifo id: init time add 0 ]
3 -- current loop: [cmd id: 1 ; fifo id: init time add 1 ]
4 -- current loop: [cmd id: 2 ; fifo id: init time add 2 ]
7 scp HOSTNAME:/home/USER/path/from/file.0 REMOTE_HOST:/home/USER/path/to/
8 scp HOSTNAME:/home/USER/path/from/file.2 REMOTE_HOST:/home/USER/path/to/
10 scp HOSTNAME:/home/USER/path/from/file.1 REMOTE_HOST:/home/USER/path/to/
11 -- current loop: [cmd id: 3 ; fifo id: real time add 3 ]
12 -- current loop: [cmd id: 4 ; fifo id: real time add 5 ]
13 -- current loop: [cmd id: 5 ; fifo id: real time add 4 ]
15 scp HOSTNAME:/home/USER/path/from/file.3 REMOTE_HOST:/home/USER/path/to/
18 scp HOSTNAME:/home/USER/path/from/file.5 REMOTE_HOST:/home/USER/path/to/
19 scp HOSTNAME:/home/USER/path/from/file.4 REMOTE_HOST:/home/USER/path/to/
20 -- current loop: [cmd id: 6 ; fifo id: real time add 6 ]
21 -- current loop: [cmd id: 7 ; fifo id: real time add 7 ]
22 -- current loop: [cmd id: 8 ; fifo id: real time add 8 ]
24 scp HOSTNAME:/home/USER/path/from/file.6 REMOTE_HOST:/home/USER/path/to/
27 scp HOSTNAME:/home/USER/path/from/file.7 REMOTE_HOST:/home/USER/path/to/
28 scp HOSTNAME:/home/USER/path/from/file.8 REMOTE_HOST:/home/USER/path/to/
从date输出的时间上,可以看出,每2秒会执行3个并发。
设N的值为并发数。通过在fifo中初始化N行内容(可以为空值),再利用fifo的特性,从fifo中每读一行,启动一次your_func调用,当fifo读完N次时,fifo为空。再读时就会阻塞。这样开始执行时就是N个并发(1-N)。
当并发执行的进程your_func,任意一个完成操作时,下一步会招待如下语句:
echo "real time add $(($i+$cur_num))" &1&&4
这样就对fifo新写入了一行,前面被阻塞的第N+1号待执行的进程read成功,开始进入{}语句块执行。这样通过read fifo的阻塞功能,实现了并发数的控制。
需要注意的是,当并发数较大时,多个并发进程即使在使用sleep相同秒数模拟时,也会存在进程调度的顺序问题,因而并不是按启动顺序结束的,可能会后启动的进程先结束。
从而导致如下语句所示的输出中,两个数字并不一定是相等的。并发数越大,这种差异性越大。
-- current loop: [cmd id: 8 ; fifo id: real time add 9 ]
自定义函数
修改自定义函数your_func,这个函数实际只需要一行就完成了。
your_func()
# use your cmd or func instead of sleep here. don't end with background(&)
scp HOSTNAME:/home/USER/path/from/file.$1 REMOTE_HOST:/home/USER/path/to/
需要注意的是,scp命令最后不需要添加压后台的&符号。因为在上一级就已经压后台并发了。
再来说明concurrent函数的第14行。
exec digit&& &filename
这是一个平常很少使用到的命令。特别是&&&&这个符号。既然不明白我们来查一下系统帮助。
# search 'exec '
Opening File Descriptors for Reading and Writing
The redirection operator
of word to be opened for both reading and writing on file
descriptor n, or on file descriptor 0 if n is not specified.
If the file does not exist, it is created.
通过man bash来搜索exec加空格,会找到对exec的说明。注意如果直接man exec,会搜索到linux programer's manual,是对execl, execlp, execle, execv, execvp, execvpe - execute a file这一堆系统函数的调用说明。
还要注意哦,4&& 这几个字符不要加空格,必然连着写。word前可以加空格。
mkfifo先创建管道文件,再通过exec将该文件绑定到文件描述符4。也许你在疑惑后面的rm操作。其实当该文件绑定到文件描述符后,内核已经通过open系统调用打开了该文件,这个时候执行rm操作,删除的是文件的Inode,但concurrent函数已经连接到文件的block块区。
如果你遇到过这样的情况,你就明白了:如果线上的nginx日志是没有切分的,access.log会越来越大,这时你直接rm&access.log文件后,文件不见了,但df查看系统并没有释放磁盘空间。这就是因为rm只是删除了inode,但这之前nginx早已经通过open打开了这个文件,nginx进程的进程控制块中的文件描述符表中对应的fd,已经有相应的文件指针指向了该文件在内存中的文件表,以及其在内存中的v节点表,并最终指向文件的实际存储块。因此nginx依然可以继续写日志,磁盘还在被写入。只有重启或者reload,让进程重新读一次配置,重新打开一遍相应的文件时,才会发现该文件不存在的,并新建该文件。而这时因为Inode节点已经释放,再用df查看时就能看到可用空间增大了。
不懂可以参考APUE的图3.1及想着说明。
因此14行的rm并不影响后继脚本执行,直到脚本结束,系统收回所有文件描述符。
18-20行在做初始化管道的工作。其中读取管道有两类写法:
1 # style 1
for ((i=$ i&$cur_num+$ i++)); do
echo "init time add $i" &&4
6 # style 2
for ((i=$ i&$cur_num+$ i++)); do
echo "init time add $i"
差别就是&&&4& 这几个字符放在echo语句后面,还是放在done后面,两者都可以,前者针对echo语句,后者针对整个for循环。
同理,在下一个for循环中,read命令也有两种方式:
for((i=$ i&=$ i++)); do
your_func $i
echo "real time add $(($i+$cur_num))"
1&&4 # write to $ff_file
for((i=$ i&=$ i++)); do
your_func $i
echo "real time add $(($i+$cur_num))"
1&&4 # write to $ff_file
再解释一下REPLY变量。这是上述循环中,用来存放read命令从fifo中读到的内容。其实在整个脚本中,是不需要关注这个点的。不过这里随带也解释一下。
通过能fifo的不断读写,才实现了echo如下语句:
-- current loop: [cmd id: 7 ; fifo id: real time add 7 ]
如何了解到REPLY呢?我们又得man一下了。为了找到read的参数。先man read发现不对。再如下查找,因为read是bash自建命令。
2 # search
'Shell Variables'
Set to the line of input read by the read builtin command when no arguments are supplied.
阅读(...) 评论()除了使用ps命令查看当前内核运行进程信息,是否还有其他方法_百度知道
除了使用ps命令查看当前内核运行进程信息,是否还有其他方法
我有更好的答案
显示其他用户启动的进程(a)查看系统中属于自己的进程(x)启动这个进程的用户和它启动的时间(u)使用“date -s”命令来修改系统时间比如将系统时间设定成日的命令如下。#date -s 06/10/96将系统时间设定成下午1点12分0秒的命令如下。#date -s 13:12:00------------------------------------------------------USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0
? S Nov05 0:04 initroot 2 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]root 3 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]...------------------------------------------------------USER域指明了是哪个用户启动了这个命令;用户可以查看某个进程占用了多少CPU;内存使用及其VSZ(虚拟内存大小)和RSS(常驻集大小):VSZ表示如果一个程序完全驻留在内存的话需要占用多少内存空间;RSS指明了当前实际占用了多少内存;STAT显示了进程当前的状态:&S&:进程处在睡眠状态,表明这些进程在等待某些事件发生--可能是用户输入或者系统资源的可用性;last命令可以有效的查看系统登录事件在一个进程调用了exit之后,该进程并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Linux进程的5种状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。系统调用exit的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁。进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。转载
ps aux 中STAT 解释 收藏运行 ps aux 的到如下信息:
ps auxUSER
%CPU %MEM VSZ
START TIME COMMANDsmmsp 3521
20:40 0:00 sendmail: Queue runner@01:00:00 froot
20:40 0:00 gpm -m /dev/input/mice -t imps2htt
20:41 0:00 /usr/sbin/htt -retryonerror 0htt
20:41 0:00 htt_server -nodaemonroot
20:41 0:00 crondxfs
20:41 0:00 xfs -droppriv -daemonroot
20:41 0:00 anacron -sroot
20:41 0:00 /usr/sbin/atddbus
20:41 0:00 dbus-daemon-1 --system....................................stat 中的参数意义如下:
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
死掉的进程
& 高优先级
包含子进程
位于后台的进程组======================================ps命令要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有程序。3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。4)ps -e 此参数的效果和指定&A&参数相同。5)ps e 列出程序时,显示每个程序所使用的环境变量。6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。7)ps -H 显示树状结构,表示程序间的相互关系。8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。9)ps s 采用程序信号的格式显示程序状况。10)ps S 列出程序时,包括已中断的子程序资料。11)ps -t&终端机编号&  指定终端机编号,并列出属于该终端机的程序的状况。12)ps u  以用户为主的格式来显示程序状况。13)ps x  显示所有程序,不以终端机来区分。最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)ps工具标识进程的5种状态码:D 不可中断 uninterruptible sleep (usually IO)R 运行 runnable (on run queue)S 中断 sleepingT 停止 traced or stoppedZ 僵死 a defunct (”zombie”) process注: 其它状态还包括W(无驻留页), &(高优先级进程), N(低优先级进程), L(内存锁页).使用ps格式输出来查看进程状态:ps -eo user,stat..,cmduser 用户名uid 用户号pid 进程号ppid 父进程号size 内存大小, Kbytes字节.vsize 总虚拟内存大小, bytes字节(包含code+data+stack)share 总共享页数nice 进程优先级(缺省为0, 最大为-20)priority(pri) 内核调度优先级pmem 进程分享的物理内存数的百分比trs 程序执行代码驻留大小rss 进程使用的总物理内存数, Kbytes字节time 进程执行起到现在总的CPU暂用时间stat 进程状态cmd(args) 执行命令的简单格式例子:查看当前系统进程的uid,pid,stat,pri, 以uid号排序.ps -eo pid,stat,pri,uid –sort uid查看当前系统进程的user,pid,stat,rss,args, 以rss排序.ps -eo user,pid,stat,rss,args –sort rss名称:ps使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A 列出所有的行程-w 显示加宽可以显示较多的资讯-au 显示较详细的资讯-aux 显示所有包含其他使用者的行程au(x) 输出格式 :USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER: 行程拥有者PID: pid%CPU: 占用的 CPU 使用率%MEM: 占用的记忆体使用率VSZ: 占用的虚拟记忆体大小RSS: 占用的记忆体大小TTY: 终端的次要装置号码 (minor device number of tty)STAT: 该行程的状态:D: 不可中断的静止R: 正在执行中S: 静止状态T: 暂停执行Z: 不存在但暂时无法消除W: 没有足够的记忆体分页可分配&: 高优先序的行程N: 低优先序的行程L: 有记忆体分页分配并锁在记忆体内START: 行程开始时间TIME: 执行的时间COMMAND:所执行的指令范例:psPID TTY TIME CMD2791 ttyp0 00:00:00 tcsh3092 ttyp0 00:00:00 ps% ps -APID TTY TIME CMD1 ? 00:00:03 init2 ? 00:00:00 kflushd3 ? 00:00:00 kpiod4 ? 00:00:00 kswapd5 ? 00:00:00 mdrecoveryd.......% ps -auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.7
? S Sep10 0:03 init [3]root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]........要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。kill 用于杀死进程。1、ps 的参数说明ps 提供了很多的选项参数,常用的有以下几个:l 长格式输出;u 按用户名和启动时间的顺序来显示进程;j 用任务格式来显示进程;f 用树形格式来显示进程;a 显示所有用户的所有进程(包括其它用户);x 显示无控制终端的进程;r 显示运行中的进程;ww 避免详细参数被截断;我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。2、ps aux 或 lax 输出的解释USER 进程的属主;PID 进程的ID;PPID 父进程;%CPU 进程占用的CPU百分比;%MEM 占用内存的百分比;NI 进程的NICE值,数值大,表示较少占用CPU时间;VSZ 进程虚拟大小;RSS 驻留中页的数量;TTY 终端IDSTAT 进程状态(有以下几种)D 无法中断的休眠状态(通常 IO 的进程);R 正在运行可中在队列中可过行的;S 处于休眠状态;T 停止或被追踪;W 进入内存交换(从内核2.6开始无效);X 死掉的进程(从来没见过);Z 僵尸进程;& 优先级高的进程N 优先级较低的进程L 有些页被锁进内存;s 进程的领导者(在它之下有子进程);l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);+ 位于后台的进程组;WCHAN 正在等待的进程资源;START 启动进程的时间;TIME 进程消耗CPU的时间;COMMAND 命令的名称和参数;3、应用举例[root@localhost ~]# ps -aux |more可以用 | 管道和 more 连接起来分页查看。[root@localhost ~]# ps -aux & ps001.txt[root@localhost ~]# more ps001.txt这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看。4、kill 终止进程有十几种控制进程的方法,下面是一些常用的方法:kill -STOP [pid]发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。kill -CONT [pid]发送SIGCONT (19,18,25)重新开始一个停止的进程。kill -KILL [pid]发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。kill -9 -1终止你拥有的全部进程。SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
电脑网络爱好者
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 linux杀死进程命令 的文章

 

随机推荐