信号系统及作用
系统信号是系统与进程之间交流的语法,系统中所有的信号如下(可用kill -l列出):
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
常用的信号有:
- HUP
- 重启系统进程
- INT
- 中断进程,等同于ctrl+c
- QUIT
- 以内核转存的方式离开程序,等同于ctrl+\
- ABRT
- 放弃进程并转存内核信息(core dump)
- KILL
- 强制删除进程
- SEGV
- 内存区段错误,并转存核心信息
- TERM
- 终止进程
- CONT
- 继续执行
- STOP
- 暂停进程
- TSTP
- 在终端中暂停进程,等同于ctrl+z
正则表达式
正则表达式是由正则表达式引擎来实现的,正则表达式引擎来解释正则表达式模式并匹配文本的。
linux中有两种正则表达式引擎:
- POSIX基本正则表达式(BRE)引擎
- POSIX扩展正则表达式(ERE)引擎
BRE的匹配的方式
1 2 3 |
#1.纯文本匹配: echo "this is test" | sed -n '/test/p' echo "this is test" | sed -n '/This/p' #正则表达式是区分大小写的 |
正则表达式中识别的特殊字符有:
.*[]^${}\+?|()
如果想在正则中仅仅把这些字符当做普通文本看待就需要对使用的字符转义
锚字符:锁定匹配值所在位置
- ^定义行首位置的匹配
- $定义行尾位置的匹配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
echo "this is test" | sed -n '/^test/p' #对行首的匹配 echo "this is test" | sed -n '/^this/p' #对行首的匹配 echo "this is a good book" | sed -n '/book$/p' #对行尾的匹配 echo "this are good books" | sed -n '/book$/p' #对行尾的匹配 echo "this is a book" | sed -n '/^this is book$/p' #组合使用,表示指定的一行数据 echo "this is a book" | sed -n '/^this is a book$/p' #同上 sed '/^$/d' test.sh #不显示test.sh中的空白行 echo "lx" | sed -n '\l.\p' echo "yes" | sed -n '\[Yy]\p' echo "Yes" | sed -n '\[Yy]\p' echo "1sa" | sed -n '\^[0-9]\p' #仅显示以数字开头的 echo "1sa" | sed -n '\[^0-9]\p' #仅显示不以数字开头的,将^写在[]里面表示排除字符组 #[[:alpha:]] 匹配任意字母字符,不论大小写 #[[:alnum:]] 匹配任意字母数字,不论大小写 #[[:blank:]] 匹配空格或者制表符 #[[:digit:]] 匹配数字 #[[:lower:]] 匹配小写字母 #[[:print:]] 匹配可打印字符 #[[:punct:]] 匹配标点符号 #[[:space:]] 匹配任意空白字符:空格、制表符、NL、FF、VT、CR #[[:upper:]] 匹配任意大写字母 echo 'ASD' | sed -n '\[[:lower:]]\p' echo 'ASD' | sed -n '\[[:alnum:]]\p' echo "ik" | sed -n '\ie*k\p' echo "ik" | sed -n '\i[Ee]*k\p' echo "this is a good thing" | sed -n '\this.*thing\p' #.代替任何字符,*表示任意字符可以重复n遍 #sed不支持ERE的功能,但gawk支持。 #1.问号(?):和星号是类似的效果,不过匹配的字符要求只出现0次或者1次 echo "bt" | gawk '/be?t/{print $0}' echo "beet" | gawk '/be?t/{print $0}' #2.加号(+):和星号是类似的效果,不过匹配的字符要求出现至少1次 echo "bt" | gawk '/be+t/{print $0}' #使用方法:{m}-准确出现m次 {m,n}-至少出现m次,至多出现n次 echo "bet" | gawk '/be{0,10}t/{print $0}' #4.管道符号(|):用逻辑or的方式连接多个正则的结果 echo "hat cat dog" | gawk '/[ch]at|dog/{print $0}' #5.聚合表达式(()):将()中的表达式视为一个整体,即一个字符 echo "Saturday" | gawk '/Sat(urday)?/{print $0}' echo "cat hello" | gawk '/(c|h)at/{print $0}' #聚合和管道的使用 |
重定向&&文件描述符
linux将对象当做文件来处理,并用标准文件描述符来表示每个文件.
每一个文件描述符都可以标识一个会话中打开的文件.
每个过程中最多可以有9个文件描述符,其中前三个被bash shell指定用于特殊用途:文件描述符 缩写 描述
#0 STDIN 标准输入
#1 STDOUT 标准输出
#2 STDERR 标准错误
对于一个终端来讲,标准输入STDIN就是键盘,标准输出STDOUT和标准错误STDERR就是屏幕.
bash shell中除了这三个标准输入输出描述符以外还有6个文件描述符.分别是3-8这6个文件描述符当做输入输出重定向都可以
1 2 3 4 5 6 7 8 9 10 |
#重定向错误: ls -al baseasd 2> error #重定向错误和输出 ls -l 10* askldf 2> error 1> output #将错误和输出定向到不同文件 ls -l 4.* mzxv &> alloutput #将错误和输出定向到同一个文件中 #在脚本中重定向输出 echo this is output >&1 #临时重定向 exec 1> output #永久重定向 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#下面是对其他6个文件描述符的使用 #1.创建输出文件描述符 exec 3> output_3 echo this is output. >&3 #2.重定向文件描述符。我们可以使用重定向符<,>将STDOUT、STDIN等重定向到其他文件中。但是如果想要标准输入输出的话就必须借用其他的文件描述符了。 #恢复标准输出文件描述符 exec 3> &1 exec 1> output echo this is output1. echo this is output3. >&3 exec 1> &3 echo now, this is normal output #关闭文件描述符 exec 6<&- #关闭作为输入重定向的文件描述符6 #here document的使用: cat <<EOF>test line1 line2 ..... EOF #上述表达式可以将EOF间的所有内容定向到test文件中 #注意:我们可以使用set打开bash的noclobber选项,来防止在重定向输出时覆盖原文件. |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Linux » Linux 高性能服务器编程:信号12/12
- ♥ Linux下修改用户密码记录08/08
- ♥ Linux 高性能服务器编程:服务器程序规范12/04
- ♥ Make&&Makefile03/23
- ♥ Linux_ 命令大全 Windows System03/16
- ♥ Linux目录的作用03/16