unix shell 解析 1
---- shell 1
testdb3:/home/oracle [pprod] >more /home/oracle/utility/macro/tns_log_back_12c.sh
#! /usr/bin/ksh
#set -x
if [ $# = 0 ]
then
echo ""
echo "# usage: $0 tns log file name"
echo ""
else
# Set up the search paths:
PATH=$PATH:.
case $PATH in
*/usr/local/bin* ) ;;
*: ) PATH=${PATH}/usr/local/bin ;;
* ) PATH=${PATH}:/usr/local/bin ;;
esac
export PATH
# Set up the oracle variables:
export ORACLE_SID=pprod
export ORACLE_BASE=/opt/oracle12c
export ORACLE_HOME=/opt/oracle12c/product/12.1
export ORAENV_ASK=NO
. oraenv
export PATH=$ORACLE_HOME/bin:.:$PATH:/usr/bin:/usr/sbin:/etc
export LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib
export PS1=`hostname`:'${PWD} [$ORACLE_SID] >'
export TERM=vt220
#export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LAapp=AMERICAN_AMERICA.ZHS16GBK
#export NLS_LAapp=AMERICAN_AMERICA.UTF8
#export NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'
umask 022
DATE=`date +%Y%m%d%H%M`
TNS_LOGNAME=$1
TNS_LOGBAK=`hostname`_${TNS_LOGNAME}_`date '+%Y%m%d%H%M'`
TNS_LOGPATH=${ORACLE_HOME}/network/log
cd ${TNS_LOGPATH}
cp ${TNS_LOGNAME} ${TNS_LOGBAK}
if [ $? -ne 0 ]
then
echo "${bold}ERROR:Back tns log error!${normal}"
echo ""
exit 0
fi
> ${TNS_LOGNAME}
/usr/contrib/bin/gzip ${TNS_LOGBAK}
ls -lrt ${ORACLE_HOME}/network/log
fi
--shell 2
testdb3:/home/oracle [pprod] >more /home/oracle/utility/macro/compress_all.sh
SCRIPT_DIR=/home/oracle/utility/macro
PRG_NAME=$SCRIPT_DIR/compress_arch.sh
#$SCRIPT_DIR/compress_arch_app.sh apppr /appprdblog 100 10
#$PRG_NAME appde /appdedblog 10
#$PRG_NAME appRO /approdblog 10
#$PRG_NAME appROA /approadblog 10
$PRG_NAME appspr /appsprdblog 10
$PRG_NAME app /appdblog 10
#$PRG_NAME apppr /appprdblog 10
$PRG_NAME xprprod /xprproddblog 10
$PRG_NAME pcc /pccdblog 10
$PRG_NAME corpprod /corpproddblog 10
$PRG_NAME bpsprod /bpsproddblog 10
$PRG_NAME tgpsprod /tgpsproddblog 10
$PRG_NAME wrlprod /wrlproddblog 24
$PRG_NAME icomprod /icomproddblog 24
$PRG_NAME bizprod /bizlinkdblog 10
#add in 20160901
$PRG_NAME oasprod /oasprodlog 10
|
more compress_arch.sh
ORACLE_SID=$1
dname=$2
COMPRESS=/usr/contrib/bin/gzip
SCRIPT_DIR=/home/oracle/utility/macro
SLEEP="/usr/bin/sleep $3"
# 1. check whether db is up and runniapp on server
up_flag=`${SCRIPT_DIR}/chkdbup.sh ${ORACLE_SID}`
if [ ${up_flag} -eq 0 ]; then
ls -t ${dname}/*.arc | awk -v SLEEP="${SLEEP}" -v COMPRESS=${COMPRESS} '
NR > 40 { print COMPRESS, $0;system(SLEEP) }
' | ksh -x
@@@解析 shell2
1. awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'
其中:BEGIN和END中的语句分别在开始读取文件(in_file)之前和读取完文件之后发挥作用,可以理解为初始化和扫尾。
(1)参数说明:
-F re:允许awk更改其字段分隔符
-v var=$v 把v值赋值给var,如果有多个变量要赋值,那么就写多个-v,每个变量赋值对应一个-v
e.g. 要打印文件a的第num行到num+num1行之间的行,
awk -v num=$num -v num1=$num1 'NR==num,NR==num+num1{print}' a
-f progfile:允许awk调用并执行progfile程序文件,当然progfile必须是一个符合awk语法的程序文件。
2.管道的作用
以下2条命令的输出可以比较 ,说明管道是一条条记录处理的。
ls -t /pproddblog/*.dbf*|more
ls -t /pproddblog/*.dbf*
3.NR 用法
NR NR 是总共读取了多少行
条件表达式使用两个符号--问号和冒号给表达式赋值: conditional expression1 ? expression2 : expressional3,其逻辑等同于C语言中的条件表达式。其对应的if/else语句如下:
{
if (expression1)
expression2
else
expression3
}
/> cat testfile
northwest NW Charles Main 3.0 .98 3 34
western WE Sharon Gray 5.3 .97 5 23
southwest SW Lewis Dalsass 2.7 .8 2 18
southern SO Suan Chin 5.1 .95 4 15
southeast SE Patricia Hemenway 4.0 .7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
pal CT Ann Stephens 5.7 .94 5 13
/> awk 'NR <= 3 {print ($7 > 4 ? "high "$7 : "low "$7) }' testfile
low 3
high 5
low 2
4.
先来看一下system()函数的简单介绍:
#include
int system(const char *command)
system()函数调用/bin/sh来执行参数指定的命令,/bin/sh 一般是一个软连接,指向某个具体的shell,比如bash,-c选项是告诉shell从字符串command中读取命令; 在该command执行期间,SIGCHLD是被阻塞的,好比在说:hi,内核,这会不要给我送SIGCHLD信号,等我忙完再说; 在该command执行期间,SIGINT和SIGQUIT是被忽略的,意思是进程收到这两个信号后没有任何动作。
unix shell 解析 1的更多相关文章
- 【转载】Unix Shell中用[-n]判断字符串不为NULL
转载自:http://blog.sina.com.cn/s/blog_541086430100mosm.html 在Unix Shell中,可以使用-n来判断一个string不是NULL值,但是之前却 ...
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- Linux/Unix shell sql 之间传递变量
灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Lin ...
- Linux/Unix shell 监控Oracle实例(monitor instance)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 监控Oracle监听器(monitor listener)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 自动发送AWR report(二)
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告.不过awrrpt.sql脚本执行时需要我们提供一些交互信 ...
- Unix Shell 通配符、转义字符、元字符、特殊字符
shell通配符: * 匹配0或多个字符 a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, a01b, ab等 ? 匹配任意一个字符 a?b a与b之间有且只有一个字符 ...
- PowerShell与Unix Shell对比:八大实例
PowerShell与Unix Shell对比:八大实例 本文将从八个实例对比PowerShell和Unix Shell,通常是Linux Bourne Shell(包括sh.ksh和bash等).二 ...
随机推荐
- react 开发 PC 端项目(一)项目环境搭建 及 处理 IE8 兼容问题
步骤一:项目环境搭建 首先,你不应该使用 React v15 或更高版本.使用仍然支持 IE8 的 React v0.14 即可. 技术选型: 1.react@0.14 2.bootstrap3 3. ...
- react 路由 react-router@3.2.1
react路由,4.x的差异还是比较大,暂时还是3.x的版本 安装: npm install -S react-router@3.x 配置: import { Router, Route, hashH ...
- 全文检索(二)-基于lucene4.10的增删改查
今天 用lucene完毕了 一个简单的web应用.提取了早期编写的一个測试类. 首先简单介绍下lucene几个经常使用包; lucene 包的组成结构:对于外部应用来说索引模块(index)和检索模块 ...
- 深入源代码解析Android中的Handler,Message,MessageQueue,Looper
本文主要是对Handler和消息循环的实现原理进行源代码分析.假设不熟悉Handler能够參见博文< Android中Handler的使用>,里面对Android为何以引入Handler机 ...
- 【知识梳理1】Android触摸事件机制
前言 随着科学技术的发展,智能手机早已成为我们当代人身边不可缺少的"伙伴"之中的一个,堪比对象女友.每天我们对着手机反复的做着点击.滑动操作,而手机则随着我们的操作给我们展示她的精 ...
- [CSAPP]Bufbomb实验报告
Bufbomb实验报告 实验分析: level 0-3从test開始制运行,通过函数getbuf向外界读取一串内容(buf). Level 4 是通过參数-n,程序运行testn函数,调用getbuf ...
- uva live 4394 String painter 区间dp
// uva live 4394 String painter // // 这一题是训练指南上dp专题的习题,初看之下认为仅仅是稍微复杂了一点 // 就敲阿敲阿敲,两个半小时后,发现例子过了.然而自己 ...
- 安卓版本和Api Level
Platform Version API Level VERSION_CODE Notes Android 4.4 19 KITKAT Platform Highlights Android 4.3 ...
- 一个程序员对微信小程序的看法
我们公司用两周的时间开发了一款微信小程序,叫<如e支付>,大家可以去体验一下.由于接口都是写好的,所以开发起来很快.我将从4个不同的角度来介绍我对微信小程序的理解. 1.技术的角度 ...
- Buildroot用户指南【转】
本文转载自:http://www.voidcn.com/blog/bytxl/article/p-4727302.html 第一章 关于Buildroot Buildroot是一个包含M ...