名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps a
显示现行终端机下的所有程序,包括其他用户的程序。
ps -A
显示所有程序。
ps c
列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e
此参数的效果和指定"A"参数相同。
ps e
列出程序时,显示每个程序所使用的环境变量。
ps f
用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H
显示树状结构,表示程序间的相互关系。
ps -N
显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s
采用程序信号的格式显示程序状况。
ps S
列出程序时,包括已中断的子程序资料。
ps
-t 指定终端机编号,并列出属于该终端机的程序的状况。
ps u
以用户为主的格式来显示程序状况。
ps x
显示所有程序,不以终端机来区分。
最常用的方法是ps
aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<:>
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
范例:
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? 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]
1、基本概念
软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处理。第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。
在进程表的表项中有一个软中断信号域,该域中每一位对应一个信号,当有信号发送给进程时,对应位置位。由此可以看出,进程对不同的信号可以同时保留,但对于同一个信号,进程并不知道在处理之前来过多少个。
函数原型:
#include
void (*signal (int signo, void (* func)(int)))
(int);
或
sig_t signal(int signum,sig_t handler)
signum:设置信号处理函数所依据的信号编号
handler:信号处理函数
signal函数的原型说明此函数要求两个参数,返回一个函数指针,而该指针所指向的函数返回值( void
)。第一个参数signo是一个整型数,第二个参数是函数指针,它所指向的函数需一个整型参数,无返回值。用一般语言来描述也就是要向信号处理程序传送一个整型参数,它却无返回值。当调用signal设置信号处理程序时,第二个参数是指向该函数
(也就是信号处程序)的指针。signal的返回值则是指向以前的信号处理程序的指针。
例如:sig_bus.cpp
#includesignal.h>
#includestdio.h>
#includestdlib.h>
void my_func(int sign_no)
{
if(sign_no=SIGBUS)
{
printf("I
have get SIGBUS\n");
}
}
int main()
{
printf("Waiting for signal
SIGBUS\n");
//注册信号处理函数
signal(SIGBUS,my_func); pause();//将进程挂起,直到扑捉到信号为止
exit(0);
}
在终端中
gcc sig_bus.c -o sig_bus
./sig_bus
显示:Waiting for signal SIGBUS
打开另一终端,查找sin_bus的进程号 通过kill命令发送SIGBUS信号给这个进程
ps -aux|grep sig_bus
得到:root 20256 0.0 0.0 1988 280
pts/3 S+ 09:50 0:00 ./deal
kill -BUS 20256
从而在另一终端显示:I have get SIGBUS
1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global
Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2.格式
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。