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等).二 ...
随机推荐
- 机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树
上一讲主要利用不同模型计算出来的g.採用aggregation来实现更好的g.假设还没有做出来g.我们能够採用bootstrap的方法来做出一系列的"diversity"的data ...
- Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)
Spring4.0的新特性我们在上一章已经介绍过了. 包含它对jdk8的支持,Groovy Bean Definition DSL的支持.核心容器功能的改进,Web开发改进.測试框架改进等等.这张我们 ...
- LeetCode 67 Add Binary(二进制相加)(*)
翻译 给定两个二进制字符串,返回它们的和(也是二进制字符串). 比如, a = "11" b = "1" 返回 "100". 原文 Give ...
- unix时间戳(unix timestamp)与北京时间的互转方法
1.在linux bash下北京时间与unix时间戳互转: 获取unix timestamp: 命令:date "+%s" 输出:1372654714 获取北京时间: 命令:dat ...
- Unity5的关卡切换
本文章由cartzhang编写,转载请注明出处. 全部权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51055584 作者:car ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Ubuntu 14.04正式公布,一个不眠之夜
请看下图: 这就是Ubuntu 14.04 LTS桌面版本号的一份视图.感觉既亲切,又寻常,可是,没有什么大的变化.注意:这个Ubuntu桌面版本号要陪伴我们长达5年之久! 直到4月18日(北京时间) ...
- C语言变长数组data[0]总结
C语言变长数组data[0] 1.前言 今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内 ...
- Eclipse项目遇到问题汇总
1:gc overhead limit exceeded 原因:这是由于项目中eclipse内存分配不足导致 修改:修改eclipse.ini文件 修改如下: ...
- win10复制粘贴 失效
win10复制粘贴 DISM.exe /Online /Cleanup-image /Restorehealth https://social.technet.microsoft.com/Forums ...