摘要:1. 基本概念 通过终端设备发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。 通过 串口收发 AT 指令,控制设备,以完成 呼叫、短信、电话本、数据业务、传真. GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有
阅读全文
摘要:1. sed 的工作流程 读取一行,使用 定义的规则 处理,再读下一行。 规则定义格式 /pattern/action pattern是正则表达式,两个反斜线表示表达式的开始和结尾。 只有缓存行匹配pattern,才使用action对其进行处理。 action包括 p 打印行 d 删除行 s 替换
阅读全文
摘要:1. 高级变量替换 2. getopts getopts 是bash 内建命令,语法为 getopts optstring name [args] #!/bin/bash function help() { echo "Usge getopts.sh [opts]" echo "options:"
阅读全文
摘要:1. 基本调试方法 set -v : 显示已经运行的脚本 set -x : 显示debug set -e : 报错则退出 2. 封装调试函数 将 vxe 封装成函数,可以 一键开关 调试信息 #!/bin/bash DEBUG=true function debug() { if [ "$DEBUG
阅读全文
摘要:1. 注册信号处理 #!/bin/bash function CleanUp() { echo "clean up" } trap CleanUp 2 sleep 10 echo "exit" 2. 定时器 #!/bin/bash function StartTimer() { # 如果没有指定,默
阅读全文
摘要:1. 函数返回值 #!/bin/bash function func1() { echo "I will return 0" } function func2() { echo "I will return 1" # 默认返回最近命令的 返回值 find ./ -name &>/dev/null }
阅读全文
摘要:1. for #!/bin/bash for file in $(ls *) do echo $file done for ((p = 0; p < 10; p++)) do echo $p done 2. select select dir in /bin /usr/sbin quit do if
阅读全文
摘要:1. 数组变量 #!/bin/bash # bash版本大于2.0才能使用数组 echo $BASH_VERSION # 把系统中注册的每一个用户名保存到数组变量中, # 然后遍历整个数组,打印系统所有用户 # 未被赋值的元素为空 i=3 for name in $(awk -F: '{print
阅读全文
摘要:1. 统计文件每个单词数量 #!/bin/bash function count() { if [ $# != 1 ] then echo "Need one file parameter to work!" exit 1; fi # 删除标点符号和特殊字符 tr -d '[:punct:]' <
阅读全文
摘要:1. 前台进程后台进程 前台进程:运行期间独占终端。 1.1 如何避免长耗时进程占用终端? 如 编译 kernel 时,将 make 放到后台,并重定向 标准输出 标准错误 [root@ifw8 polarssl-1.2.17]# make 1>output.txt 2>&1 & [1] 4167
阅读全文
摘要:1. 标准输出 ls -l > ./test ls -l 1> ./test ls -l >> ./test 2. 标准输入 read oneline while [ "oneline" != "" ] do read oneline done read命令:读取一行 ./test.sh < 1.t
阅读全文
摘要:1. ngx对变量性质的定义 用户可以在配置文件中使用变量,如 http_user_agent 就是变量,如上会根据 若使用IE访问 重写url。 ngx变量只有字符串类型,可以有用户定义的配置赋值,也可以由 ngx 自动赋值(如上,每次收到请求 自动对 http_user_agent 赋值)。 变
阅读全文
摘要:系统 ubuntu16 sudo apt-get install libmnl-dev libelf-dev linux-headers-$(uname -r) build-essential pkg-config git git clone https://git.zx2c4.com/WireGu
阅读全文
摘要:1. 综述 ngx 是事件驱动,没有事件,ngx会一直阻塞在 epoll_wait 或 sigsuspend 上,ngx的事件有 IO事件,定时器事件。 2. 多路IO模型 ngx对多路复用IO进行了封装。 封装为 ngx_event_action_t 结构体,该结构体主要属性为 回调函数 为了方便
阅读全文
摘要:1. 模块机制 ngx模块大致分为: handlers: 协同完成客户端处理,产生数据。 filters : 对handlers产生的数据进行各种过滤处理(增,删,改)。 upstream : 如果存在真实后端服务器,ngx可用upstream模块充当反向代理。 load-balance : 当ng
阅读全文
摘要:1. 配置格式定义 1.1 配置项 ngx定义了两种配置项, 简单,以 ; 结尾 复杂,以 {} 结尾 由于简单为;结尾,所以可以直接分行写 1.2 上下文 复杂匹配项有上下文,实现继承。 2. 指令定义 ngx定义了一些指令,模块自己可以定义指令。 如 daemon 指令 ngx定义指令对象为 n
阅读全文
摘要:1. ngx_str_t 2. ngx_list_t 3. ngx_array_t 4. ngx_queue_t 5. ngx_pool_t 6. ngx_hash_t 7. ngx_radix_tree_t
阅读全文
摘要:1. 进程工作 ngx是多进程模型:work进程,master进程,cache进程。 ngx还使用 upstream等模块实现和 其他服务器通信 master和worker进程工作流程如下 可以看出 用户使用信号控制 监控进程,监控进程 控制工作进程 监控进程主要处理 用户的信号, 监控进程使用 s
阅读全文
摘要:1. gdb调试 编译带调试信息的ngx ./configure --with-cc-opt='-g -O0' CFLAGS='-g -O0' ./configure make CFLAGS='-g -O0' gdb -p 3333 (gdb)attach 3333 若要gdb支持查看宏定义,需要
阅读全文
摘要:1. 启动gdb 1.1 vim 使用gdb 需要vim8+ gdb7+ vi main.c :packadd termdebug :Termdebug ./a.out 2. 设置断点 break function break linenum break filename:function brea
阅读全文
摘要:initramfs的作用 1. 作为启动跳板 kernel挂载initramfs,运行init程序,该程序会探测硬件,加载驱动,最后挂载真正的文件系统,执行文件系统上的init程序,进而切换到用户空间, 真正的文件系统挂载后,initramfs使命完成,释放其占用空间。 2. 作为最终文件系统 ra
阅读全文