分享
 
 
 

shell编程中的信号处理(signalhandlinginshellprogramming)

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚

本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我

们可不希望用户使用ctrl+C之类便进入到shell状态,做我们不希望做的事情。这便用到了信号

处理。

kill -l可以列出系统的信号名称,如下:

HUP INT QUIT

ILL TRAP ABRT

EMT FPE KILL

BUS SEGV SYS

PIPE ALRM TERM

USR1 USR2 CHLD

PWR WINCH URG

POLL STOP TSTP

CONT TTIN TTOU

VTALRM PROF XCPU

XFSZ

共31个,在很多情况下,信号可以用序号也可以用名称表示。

通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24

使用这样的语句可以使这些中断信号被忽略:

trap "" 1 2 3 24 或 trap "" HUP INT QUIT TSTP

用 trap :1 2 3 24 或 trap HUP INT QUIT TSTP使其回复默认值。

用stty -a可以列出中断信号与键盘的对应,分别执行上面的命令后,运行

tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)下有何不同。

更方便的是我们可以用在shell中用trap定义我们自己的信号处理程序,就象在c中用

signal一样,

如:trap “echo 'GO Away'” INT

cleanup()

{

[font="" size=3] echo " catching signal..."

rm /tmp/tmpfile

exit

}

...

trap clearnup INT TERM

...

这样使我们的程序在退出时可以清理一些临时文件。

command list:

stty kill trap

[/home/guest]kill -l

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

5) SIGTRAP 6) SIGABRT 7) SIGEMT SIGFPE

9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS

13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG

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

21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU

25) SIGXFSZ 27) SIGMSG 28) SIGWINCH 29) SIGPWR

30) SIGUSR1 31) SIGUSR2 32) SIGPROF 33) SIGDANGER

34) SIGVTALRM 35) SIGMIGRATE 36) SIGPRE 37) SIGVIRT

38) SIGALRM1 39) SIGWAITING 60) SIGKAP 61) SIGRETRACT

62) SIGSOUND 63) SIGSAK

不同的系统不一样,先前是sco5.0.5上的结果,

下面是HP-UX的结果,

1) HUP 16) USR1 31) RESERVED

2) INT 17) USR2 32) DIL

3) QUIT 18) CHLD 33) XCPU

4) ILL 19) PWR 34) XFSZ

5) TRAP 20) VTALRM 35) bad trap

6) IOT 21) PROF 36) bad trap

7) EMT 22) POLL 37) RTMIN

8) FPE 23) WINCH 38) RTMIN+1

9) KILL 24) STOP 39) RTMIN+2

10) BUS 25) TSTP 40) RTMIN+3

11) SEGV 26) CONT 41) RTMAX-3

12) SYS 27) TTIN 42) RTMAX-2

13) PIPE 28) TTOU 43) RTMAX-1

14) ALRM 29) URG 44) RTMAX

15) TERM 30) LOST

下面是cygwin下的结果:

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

5) SIGTRAP 6) SIGABRT 7) SIGEMT SIGFPE

9) SIGKILL10) SIGBUS11) SIGSEGV12) SIGSYS

13) SIGPIPE14) SIGALRM15) SIGTERM16) SIGURG

17) SIGSTOP18) SIGTSTP19) SIGCONT20) SIGCHLD

21) SIGTTIN22) SIGTTOU23) SIGIO24) SIGXCPU

25) SIGXFSZ26) SIGVTALRM27) SIGPROF28) SIGWINCH

29) SIGLOST30) SIGUSR131) SIGUSR2

大同小异。

高呀。请教一个问题。

我做了这样一个SHELL:

trap "echo """ 2 3 4

echo "enter date"

read fdate

flen=`echo $fdate|awi '{print $0}'`

if [ $flen -ne 8 ]

:

:

这个SHELL 在某些机器上运行到 IF 语句时出错,提示:TEST 。。。

如果把TRAP语句屏蔽掉则可以在所有机器上正常运行。

这是怎么回事???

To fanyan1999 :

你的if 语句在用户输入为空是一般会出错的,应该在此以前有如此形式的判断

[ "X"$flen = "X" ] && echo "no input" && exit

你的trap语句是不是可以多换的形式试一试。

如:

trap “echo ‘’” 2 3 4

说明一下你用的系统和详细错误信息。

请问一下

trap "echo logout" 0

这是什么意思?

>> trap "echo logout" 0

>> 这是什么意思?

用户退出时执行 echo logout ,就是说用户退出时会看到 logout 的提示信息

shell 编程中的信号处理(signal handling in shell programming)

trap可以屏蔽信号2,15等,

但屏蔽信号9好像不行。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有