linux 脚本 ps grep,linux中PS命令和grep命令以及信号处理函数

名称: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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值