linux捕获信号命令 linux网络抓包命令

linux程序如何捕获退出程序事件

用trap命令,正常退出调用的应该是SIGHUP(1),非正常退出根据情况不同调用SIGINT(2), SIGQUIT(3),SIGTERM(15)。一般情况的退出基本上1 2 3 15都能包括了。

10多年的英山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整英山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“英山网站设计”,“英山网站推广”以来,每个客户项目都认真落实执行。

例:

##################################

#!/bin/sh

trap`echo get_messages` 1 2 3 15

##################################

其中用``包含的部分写你要执行的脚本或者命令。

后面的1 2 3 15是捕捉的SIGNAL的号码

★上面例子的意思是:当所执行的process接收到SIGHUP(1),SIGINT(2), SIGQUIT(3), SIGTERM(15)信号的时候,输出get_messages然后终止程序。

※如果你要执行复杂脚本或者命令的话,建议你把他写成函数

比如:

#################################

#!/bin/sh

trap `echo_many_messages` 1 2 3 15

echo_many_messages(){

echo a

echo b

echo c

}

##################################

Linux如何进行实时输入信号采集

trap是采集信号的命令 可以百度一下格式 如果有信号发生就会执行trap命令预定的处理函数 如果没有设置就执行信号的默认方式

Linux中,shell脚本如何使用信号机制去控制线程的开启关闭

trap是Linux的内建命令,用于捕捉信号,trap命令可以指定收到某种信号时所执行的命令。trap命令的格式如下:trap command sig1 sig2 ... sigN,当接收到sinN中任意一个信号时,执行command命令,command命令完成后继续接收到信号前的操作,直到脚本结束。 利用trap命令捕捉INT信号(即与Ctrl+c绑定的中断信号)。trap还可以忽略某些信号,将command用空字符串代替即可,如trap "" TERM INT,忽略kill %n和Ctrl+c发送的信号(kill发送的是TERM信号)。Linux更强劲的杀死进程的命令:kill -9 进程号(或kill -9 %n作业号)等价与kill -KILL 进程号。

举个例子:

最近小A需要生产2015年全年的KPI数据报表,现在小A已经将生产脚本写好了,生产脚本一次只能生产指定一天的KPI数据,假设跑一次生产脚本需要5分钟,那么:

如果是循环顺序执行,那么需要时间:5 * 365 = 1825 分钟,约等于 6 天

如果是一次性放到linux后台并发执行,365个后台任务,系统可承受不住哦!

既然不能一次性把365个任务放到linux后台执行,那么,能不能实现自动地每次将N个任务放到后台并发执行呢?当然是可以的啦。

#! /bin/bash

source /etc/profile;

# -----------------------------

tempfifo=$$.fifo        # $$表示当前执行文件的PID

begin_date=$1           # 开始时间

end_date=$2             # 结束时间

if [ $# -eq 2 ] 

then

if [ "$begin_date" \ "$end_date" ]

then

echo "Error! $begin_date is greater than $end_date"

exit 1;

fi

else

echo "Error! Not enough params."

echo "Sample: sh loop_kpi 2015-12-01 2015-12-07"

exit 2;

fi

# -----------------------------

trap "exec 1000-;exec 1000-;exit 0" 2

mkfifo $tempfifo

exec 1000$tempfifo

rm -rf $tempfifo

for ((i=1; i=8; i++))

do

echo 1000

done

while [ $begin_date != $end_date ]

do

read -u1000

{

echo $begin_date

hive -f kpi_report.sql --hivevar date=$begin_date

echo 1000

begin_date=`date -d "+1 day $begin_date" +"%Y-%m-%d"`

done

wait

echo "done!!!!!!!!!!"

第6~22行:比如:sh loop_kpi_report.sh 2015-01-01 2015-12-01:

$1表示脚本入参的第一个参数,等于2015-01-01

$2表示脚本入参的第二个参数,等于2015-12-01

$#表示脚本入参的个数,等于2

第13行用于比较传入的两个日期的大小,\是转义

第26行:表示在脚本运行过程中,如果接收到Ctrl+C中断命令,则关闭文件描述符1000的读写,并正常退出

exec 1000-;表示关闭文件描述符1000的写

exec 1000-;表示关闭文件描述符1000的读

trap是捕获中断命令

第27~29行:

第27行,创建一个管道文件

第28行,将文件描述符1000与FIFO进行绑定,读的绑定,写的绑定,则标识对文件描述符1000的所有操作等同于对管道文件$tempfifo的操作

第29行,可能会有这样的疑问:为什么不直接使用管道文件呢?事实上这并非多此一举,管道的一个重要特性,就是读写必须同时存在,缺失某一个操作,另一个操作就是滞留,而第28行的绑定文件描述符(读、写绑定)正好解决了这个问题

第31~34行:对文件描述符1000进行写入操作。通过循环写入8个空行,这个8就是我们要定义的后台并发的线程数。为什么是写空行而不是写其它字符?因为管道文件的读取,是以行为单位的

第37~42行:

第37行,read -u1000的作用就是读取管道中的一行,在这里就是读取一个空行;每次读取管道就会减少一个空行

第39~41行,注意到第42行结尾的吗?它表示进程放到linux后台中执行

第41行,执行完后台任务之后,往文件描述符1000中写入一个空行。这是关键所在了,由于read -u1000每次操作,都会导致管道减少一个空行,当linux后台放入了8个任务之后,由于文件描述符1000没有可读取的空行,将导致read -u1000一直处于等待。

关于linux中信号SIGINT的捕获问题,求大大们指教

网上有Webtop的破解方法,可在Webtop上安装全功能版本的Linux。Webtop其实就是一个缩水版的ubuntu。

但是那个Ubuntu是有很大的限制的,和PC的Ubuntu区别很大。基本上是只能上网和使用非常有限的一些应用。要直接使用ubuntu得破解,而且还很麻烦。

我现在就等Webtop到手开工了。

至于Linux支持的CPU,那得看发行版。部分Linux发行版是支持目前所有的商用CPU的,从X86到ARM到IA64通吃,也有部分是高度专精的,如Arch就只支持X86.

不过我强烈不建议用Atrix来做音乐制作系统,毕竟处理能力太弱,据说破解之后正常上网十分钟手机就变得非常烫。音乐制作那就可想而知了。

还有,你要使用USB声卡,还得考虑一下声卡有没有相应版本的驱动。

总之Webtop并不能算是全功能的笔记本,只能当上网本来用。我买Webtop也主要是因为笔记本太大太重,平时带着上课做笔记不方便才买来,记笔记基本上只用得到浏览器和文本编辑器,这些都不是问题。但是音乐制作,还是用完整的PC为好。

=======================

另外Android并不能算是Linux的发行版。Android的机制是运行在Linux内核上的一套虚拟机程序,其应用和直接基于Linux的本地应用程序有很大的不同,除非重编译,二进制包是不通用的。


网页题目:linux捕获信号命令 linux网络抓包命令
地址分享:http://ybzwz.com/article/ddgopdo.html