博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Unix shell 编程指南学习笔记(第五部分)
阅读量:5158 次
发布时间:2019-06-13

本文共 3607 字,大约阅读时间需要 12 分钟。

第二十五章 深入讨论 <<

当shell 看到 << 的时候,它知道下一个词是一个分界符。该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行)。比方:

cat >> tmpfile <
this is the first line> this is the second line> third> forth>.....>DOC
当中DOC就是分界符,再次在新的行中输入DOC时。表示输入已经完毕。

高速创建一个文件

自己主动进入菜单

ftp传输(实例操作)

连接到其它应用系统 (实例操作)

高速创建文件

cat  >> tmpfile  <<delimiter(增加tab键后有的系统不能识别)  或者  cat >> tmpfile <<-delimiter

高速创建打印文档 (输入文档后,按enter键自己主动送往打印机): lpr << qc   

第二十六章   shell工具

创建以日期命名的文件及暂时文件

信号

trap命令以及怎样捕获信号

eval命令

logger命令

使用date命令创建文件:

date格式: date  [option] +%format  (详情请自己查阅 date --help)

工作中常常会定义一些属于自己的文件格式以下就以 XXX_XXX_日期信息.log创建文件:

当中日期信息的命令  date +%Y_%m_%d:%H:%M:%S.%N 

创建文件的命令: >XXX_XXX_`date +%Y_%m_%d:%H:%M:%S.%N`.log 。ls将看到例如以下文件:

XXX_XXX_2014_10_17:08:30:21.128727204.log

创建唯一的暂时文件: 使用 $$(进程号) 创建脚本执行中 唯一的暂时文件(系统中进程号是唯一的),退出程序时删除暂时文件 。

信号

信号就是系统向脚本或命令发出的消息。经常使用信号及其含义表(kill -l 显示全部的信号):

信号				信号名			含义 1				SIGHUP			挂起或父进程被杀死 2				SIGINT			来自键盘的中断信号,一般是< CTRL-C> 3				SIGQUIT			从键盘退出 9				SIGKILL			无条件终止 11				SIGSEGV			段(内存)冲突 15				SIGTERM			软件终止(缺省杀进程信号)
发送信号的格式:kill  [ -signal  |  -s  signal ]    PID[s]

杀死一个进程

关闭当前shell:kill     -9    $$  (另外能够用 ps 查询进程信息)

检測信号

有些信号能够被程序或脚本捕获,可是有些信号不能被捕获(接收到信号9后就不能再接收其它信号)。

脚本中须要关注的信号是  1 SIGHUP  、2 SIGINT 、3 SIGQUIT 、15 SIGTERM

捕获到这些信号后交给系统处理,或者  由脚本或应用自行处理这些信号(须要用到trap命令)。

trap

trap 命令 能够在脚本中捕捉信号, trap  name(捕捉到信号后的处理函数) signal(s)

trap经常用法举例:

trap "" 2 3			忽略信号2和信号3,用户不能终止该脚本trap"commands" 2 3		假设捕捉到信号2或3,就运行对应的c o m m a n d s命令trap 2 3			复位信号2和3,用户能够终止该脚本也能够使用单引號(‘’)来取代双引號(“”)。其结果是一样的。

以下给出一个监听键盘中断<CTRL_C>演示样例:

#!/bin/bash trap "keyboardIntHandler" 2function keyboardIntHandler(){    echo "CTRL_C pressed !"}while [ 1 ] do    sleep 2done

eval
eval 使用域一次扫描无法实现其功能的变量——它首先会扫描命令行进行全部的置换 。 然后再运行命令。

运行含有命令的字符串:

#!/bin/bash NAME='cat Ctrl_c_Listener'echo -e  $NAME '\n\n'eval $NAME
从上述运行结果比較,发现eval 回显的是文件的内容,而不是name的字符串值。

对于一个只存有名-值对的文件,使用eval能够将第一列作为变量,而第二列作为值。演示样例代码例如以下:

key_value_pair 的内容:key_one     timekey_two     lovekey_three   mum脚本kv_eval的内容:#!/bin/bash while read NAME TYPEdo    eval `echo "${NAME}"="${TYPE}"`done < key_value_pairecho "key_one's value is  ${key_one}"echo "key_two's value is  ${key_two}"
logger命令:

使用该命令之前最好先查阅联机手冊(不同供应商提供的操作系统中该命令的语法不一样)。

logger命令格式:  logger  [ options ] message

ubuntu 12.04中的选项:

-d, --udp             use UDP (TCP is default) -i, --id              log the process ID too -f, --file 
log the contents of this file -h, --help display this help text and exit -n, --server
write to this remote syslog server -P, --port
use this UDP port -p, --priority
mark given message with this priority -s, --stderr output message to standard error as well -t, --tag
mark every line with this tag -u, --socket
write to this Unix socket -V, --version output version information and exit
第27章 几个脚本样例

pingall:一个依照/etc/hosts文件里的条目逐一ping全部主机的脚本。

backup_gen:一个通用的备份脚本。可以载入缺省设置。

del.lines:一个引用sed命令的脚本。能从文件里删除若干行。
access_deny:一个可以阻止某些特定用户登录的工具。
logroll:一个可以清除超过某一长度的日志的工具。
nfsdown:一个高速unmount全部nfs文件系统的工具

实践。

第28章  执行级别脚本

假设希望在系统启动时自己主动执行某些应用程序、服务或脚本,或者在系统重新启动动时可以正确地关闭这些程序。那么须要创建执行级别脚本。

执行级别

确定当前的执行级别: who -r  (linux 系统: runlevel  第一仅仅个值是系统的前一个执行级别。第二仅仅值是当前执行级别。)

inittab

系统启动过程中会启动init进程。该进程通过inittab的配置文件来查看须要启动哪些服务、应当进入哪一个执行级别。

inittab格式: id:rstart:action:process

id:   进程的唯一标识

rstart:执行该进程的级别

action:告诉init进程怎样对待process所相应的进程。

process:实际要执行的命令。

第二十九章  cgi 脚本

cgi : common  gateway interface (通用网关接口)。

连接web的协议:协议包含http、ftp、mailto、file、telnet和news。这里我们仅仅关心http协议(超文本传输协议)。

该章主要解说 web操作。实践。

转载于:https://www.cnblogs.com/claireyuancy/p/6936234.html

你可能感兴趣的文章
iOS 组件化
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>
博客盈利请先考虑这七点
查看>>
使用 XMLBeans 进行编程
查看>>
写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋...
查看>>
【OpenJ_Bailian - 2287】Tian Ji -- The Horse Racing (贪心)
查看>>
Java网络编程--socket服务器端与客户端讲解
查看>>
List_统计输入数值的各种值
查看>>
学习笔记-KMP算法
查看>>
Timer-triggered memory-to-memory DMA transfer demonstrator
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>