※使用ps命令
※在后台运行进程 ,并且使用ps命令监视正在运行的进程的状态
※运行一个后台进程并使其在你退出系统后不被挂起。
※ 切换后台进程到前台运行。
※挂起一个进程。
※停止进程的运行。
14.1 ps 命令
语法:
ps [-efl] 报告进程的状态
例子:
$ ps
PID TTY TIME COMMAND
1324 ttyp2 0:00 sh
1387 ttyp2 0:00 ps
$ ps –ef
UID PID PPID C STIME TTY TIME COMMAND
Root 0 0 0 Jan 1 ? 0:20 swapper
Root 1 0 0 Jan 23 ? 0:00 init
Root 2 0 0 Jan 23 ? 0:16 vhand
User3 1324 1 3 18:03:21 ttyp2 0:00 -sh
User3 1390 1324 22 18:30:23 ttyp2 0:00 ps –ef
系统中每个进程在启动的时候都会被分配一个唯一的确认号码,这个号码就叫进程ID(PID)。ps
命令会显示当前运行中(或睡眠中)的进程的信息,包括每个进程的PID和每个进程父进程的PID(PPID)。通过PID和PPID号,你可以追踪你系统中任何进程的起源。ps命令也会报告每个进程的属主和是进程在哪个终端上执行的。
ps 命令可以不带参数执行,结果会报告你当前的终端线索的进程信息。
-e选项会报告系统中每一个进程的信息,而不仅仅是你自己运行的进程信息。 -f
和-l选项会报告长的(long),或完全的(full)包含其他的细节的列表。
注意:ps 命令执行时会集中使用CPU,你也许会注意到当这个命令执行的时候要过一会才有响应
14.2 后台进程
语法:
命令>cmd.out &
例子:
$ grep user * > grep.out &
194
$ ps
PID TTY TIME COMMAND
164 ttyp2 0:00 sh
194 ttyp2 0:00 grep
195 ttyp2 0:00 ps
命令> cmd.out &
※使命令在后台执行。
※当后台任务开始后立刻返回提示符。
※重定向命令的输出,这样命令的输出就不会影响当前屏幕的显示。
※退出系统会中止后台运行的进程。用户会在第一次试图退出时收到一个警告:“There are running
jobs”。用户须再次键入Exit 或ctrl+d来中止这个线索。
一些命令会执行很长的时间,例如在全部的磁盘上查找单个文件,或使用一个文本处理工具来格式化和打印一个手册。UNIX操作系统允许你启动一个很消耗时间的程序,并且在让它在后台运行,在后台,UNIX会让这个程序继续执行。和其他的立即执行的命令不同的是,shell不会等待后台程序执行完毕,而会立即返回提示符,这样你就可以继续其他的工作。
在一个命令的末尾使用一个“&”符号可以使一个命令在后台运行。通常需要重定向后台运行的程序的输出,以免后台命令的输出影响你当前的终端线程。如果没有重定向输出,后台命令会使用标准输出,也就是会输出到你的终端上。
由于shell控制标准输入,而后台运行的命令不能够从标准输入接收数据,因此,任何后台运行的命令要求输入都必须使用输入重定向从一个文件得到输入数据。
当一个命令被放在后台执行,如果设置了monitor选项(set -o
moniotr),shell会报告命令的任务号和进程ID,任务号定义了与你终端线索相联系的任务。进程ID为UNIX分配给每一个被执行的进程的唯一的号码。Monitor选项会导致在后台进程完成之后会在终端上显示一条信息:
[1] + Done grep user * > grep.out & 提示进程执行完毕
由于在后台运行的命令不和键盘通信,所以你不能够通过中止键,ctrl +
c来中断一个后台进程,后台进程可以通过kill命令来中断或通过退出系统来中断。
注意: 一个后台进程都要明确地重定向输入和输出。
注意: 一个后台任务可能包含多个命令,只要将这些命令用括号括起来(命令1,命令2,命令3),然后操作系统就会作为一个任务执行这些命令。
14.3 将任务放在后台/前台运行
jobs ?????显示当前运行的任务
ctrl + z ???将当前前台运行的程序挂起。
fg [%number]? 将指定任务号的任务放在前台运行
fg [%string] ?将以指定字符串开头的命令放在前台运行
bg [%number] ?将指定任务号的任务放在后台运行
bg [%number] ?将指定任务号的任务放在后台运行
在POSIX shell
中,进程可以被放在前台或后台运行。如果你在前台正在运行一个冗长的进程,你可以向这个进程发送一个susp(挂起)信号,这个信号通常被设置为ctrl
+ z.。这个挂起字符通常是在登录时通过.prifile指定的,语法为:stty susp ^Z
。这个动作会暂时停止你的前台进程,同时出现一个shell提示符。你然后可以使用bg命令来将这个命令放到后台运行。
同样,如果你有一个在后台运行的进程,你想要把它放在前台运行,你可以使用fg命令,然后前台进程会控制你的终端,直到运行完毕或者被挂起。
14.4 nohup 命令
语法:
nohup 命令 (使命令不被挂起)。
例子:
$ nohup cat * > bigfile &
$ ctril + d
login: user3
passwd :
$ ps -ef |grep cat
UID PID PPID COMMAND
User3 972 1 cat * >bigfile &
UNIX系统提供一个nohup命令来使命令不被挂起。nohup命令是一组特殊unix命令的一个,这组命令被称为 prefix
command(前缀命令),这个命令在其他命令之前使用。记住,退出系统通常都会中止后台的进程。但是如果一个后台命令以nohup开头,你就可以放心地退出系统,系统会继续完成你的进程。即使这个程序的父shell不再运行。注意,当nohup命令的父进程中止后,这个命令会被一号进程(init)所收养。你可以再次登录观察nohup命令执行后的状态和结果。
当使用nohup的时候,用户通常都要重定向输出到文件中。如果用户没有指定一个输出文件,nohup会自动地重定向输出到nohup.out文件中。注意,nohup.out文件中会同时有标准输出和标准错误信息。
14.5 nice 命令
语法:
nice [-N] 命令 使一个命令以更低的优先级运行
N 为一个1到19的号码
例子:
$ nice -10 cc myprog.c -o myprog
$ nice -5 sort * > sort.out &
UNIX操作系统是一个分时的系统,进程的优先级决定程序使用系统资源的频率。优先级低的任务比优先级高的用户存储系统的频率更少。例如:你的终端线索有相对更高的优先级得到提示和系统响应。
nice命令是另一个前缀命令,能让你降低一个程序的优先级。这个命令对运行不要求立即完成的命令的时候有用处,例如格式化整个帮助手册。
语法是:
nice [-increment] 命令
increment是一个1到19的整数。默认值为10。一个进程的nice值越高,它的优先权就越低。nice值不是一个绝对的优先级修改量。
你可以通过ps -l来浏览进程的优先级。优先级在字段PRI那一栏显示。更高的优先级任务的优先值更低。nice 值在字段NI下显示。
在大多数的UNIX系统中,前台进程默认nice值为20,后台进程的值为24。最大值为39,所以最大的增量为19和15。更多的增量都不会增加超过39。而负的增长只能root使用。
14.6 kill 命令
语法:
kill [-s signal_name] PID [PID....] 发送一个信号给指定的进程。
例子:
$ cat /usr/share/man/cat1/ * > bigfile1 &
1.995
$ cat /usr/share/man/cat2/ * > bigfile2 &
2.996
$ kill 995
[1] -Terminated cat /usr/share/man/cat1/* > bigfile1 &
$ kill -s INT %2
[2] + interrupt cat /usr/share/man/cat2/ * >bigfile2 &
$ kill -s KILL 0
kill
命令能被用来中断任何命令,其中包括nohup,和后台命令。kill发送一个信号给一个进程。更具体的说,kill发送一个信号给一个进程。进程收到其中的大多数的信号后,默认的行动都是死亡。发送信号者必须是进程的属主;kill不能够被用来杀掉其他用户的进程除非使用kill的是超级用户。
在UNIX系统中,实际上是不可能真正地杀死一个进程。大多数的UNIX系统所做的只是要求进程自己结束。默认的情况是,kill发送TERM信号(软中断信号)给指定的进程。但进程通常不会捕捉或者会忽略这个信号。而有其他的信号,如上表列出的信号,能够通过-s选项指定。UNIX系统提供的,确保kill执行成功的,最方便的办法就是KILL信号(kill
signal)
要想杀死一个进程,你可以指明进程ID或任务号。当指明任务号的时候,必须使用%作为前缀。如果指明的进程号为0,会终止所有的与当前shell相关的所有的进程,包括当前的shell。
注意: 命令kill –l 会列出所有支持的signal-name(信号名)的值。当 –l
选项被使用的时候,每个信号的符号名称都会输出到标准输出上:
$ kill –l
HUP INT QUIT ILL TRAP ARRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
USI USR2 PWR VTALRM PROP IO WINCH STOP TSTP CONT TTIN TTOU URG LOST
阅读(933) | 评论(0) | 转发(0) |