linux脚本

使用cron,logrotate来管理日志文件

喜你入骨 提交于 2020-03-01 04:08:55
1) logrotate配置 logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。 我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。 logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。 logrotate 的配置文件是 /etc/logrotate.conf 主要参数如下表: 参数 功能 compress 通过gzip 压缩转储以后的日志 nocompress 不需要压缩时,用这个参数 copytruncate 用于还在打开中的日志文件,把当前日志备份并截断 nocopytruncate 备份日志文件但是不截断 create mode owner group 转储文件,使用指定的文件模式创建新的日志文件 nocreate 不建立新的日志文件 delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。 errors address 专储时的错误信息发送到指定的Email 地址 ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。 notifempty 如果是空文件的话,不转储 mail

linux之shell脚本管理(一)

为君一笑 提交于 2020-02-29 14:05:43
在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行 不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作)。该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell 脚本中的应用。 1、条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示成功执行,否则(非0值)表示执行失败。用于特定条件表达式的测试时,可以使用Linux系统中提供的专用工具——test命令、 使用test测试命令时,可以有以下两种形式。 test 条件表达式 【 条件表达式 】 这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程习惯。需要注意的是,方括号“[”或者“]”与条件表达式语句之间至少需要有一个空格进行分隔。 根据需要判断的条件内容不同,条件操作也不同,最常用的条件主要包括文件状态测试,比较整数值大小,比较字符串,以及同时判断多个条件时的逻辑关系,下面将分别进行讲解。以下主要采用方括号的测试形式。 1.1、测试文件状态 文件状态测试是指根据给定的路径名称,判断该名称对应的是文件还是目录,或者判断文件是否可读,可写,可执行等

Shell脚本中计算字符串长度的5种方法

这一生的挚爱 提交于 2020-02-28 19:08:15
Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在 Linux操作系统 中需要计算某个字符串的长度,通过查询资料整理了下目前 Shell 中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数。 echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个数,(www.jbxue.com)但是如果大于10个字符的长度时是否存在问题需要后面确认 echo "abc" |awk -F "" '{print NF}' 方法4: 通过awk+length的方式获取字符串长度 echo “Alex”|awk '{print length($0)}' 方法5: 通过echo ${#string}的方式(注意:这里的string是该字符串的变量名) name=Alex echo ${#name} shell中应该还有其它获取字符串长度的方法,请大家有知道其它方式的回复补充下,有存在问题的地方大家指正! 来源: oschina 链接: https://my.oschina.net

Vim与Shell脚本(下)

笑着哭i 提交于 2020-02-28 09:20:12
流程控制语句 3.while while条件循环语句 (条件) while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景 该脚本使用$RANDOM变量来调取出一个随机的数值(范围为0~32767),将这个随机数对1000进行取余操作,并使用expr命令取得其结果,再用这个数值与用户通过read命令输入的数值进行比较判断 #!/bin/bash #thin is a test.sh PRICE=$(expr $RANDOM % 1000) TIMES=0 echo " 商品实际价格为 0-999 之间,猜猜看是多少? " while true do read -p " 请输入您猜测的价格数目: " INT let TIMES++ if [ $INT -eq $PRICE ] ; then echo " 恭喜您答对了,实际价格是 $PRICE" echo " 您总共猜测了 $TIMES 次 " exit 0 elif [ $INT -gt $PRICE ] ; then echo " 太高了! " else echo " 太低了! " fi done 4.case条件测试语句 case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试

shell编程

Deadly 提交于 2020-02-28 06:25:49
1,shell脚本的变量认识 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数,n是一个数字,表示第几个参数。例如第一个参数是$1,第二个参数是$2 $# 表示传递给脚本或者参数的个数 $* 传递给脚本或函数的所有参数 $@ 传递给函数互脚本的所有的参数,被双引号(“ ”),与$*稍有不同 $? 上个命令的退出状态,或函数的返回值 $$ 当前shell进程id。对于shell脚本,就是这些脚本所在的进程id 注释:$*和$@的区别: $*和$@都表示传递给函数或脚本的的所有的参数,不被双引号(“ ”)包含时,都以$1,$2,$3。。。$n的形式输出所有参数,但他们被双引号(“ ”)时,$*会将所有参数作为一个整体,以“$1, $2,$3...$n”的形式输出,$@会将各个参数分开,将以“$1”,“$2”,“$3”。。。“$n”的形式输出 2,一个简单的shell脚本文件 a="雪雪" echo "$a is my favourite" 注意:在定义变量和给变量赋值的时候,变量名和=之间不能有空格,=和变量之间也不要有空格 3,逻辑控制语句 a="雪雪" echo "$a is my favourite" if [ -n "$a" ];then echo "$a long time no see" else echo "$a i miss you" fi# 语法结构#

CentOS7一键安装docker-ce 脚本

和自甴很熟 提交于 2020-02-28 03:45:13
[root@danrtsey ~]#cat install_docker-ce_centos7.sh #!/bin/bash # #******************************************************************** #script_name: install_docker-ce_centos7.sh #Author: Danrtsey #mail: mydefiniteaim@126.com #attentions: #******************************************************************** export PATH=$PATH [ -f /etc/init.d/functions ]&& . /etc/init.d/functions COLOR="echo -e \\033[1;31m" END="\033[m" ###Check if user is root if [ $UID -ne 0 ]; then echo "Error: This script must be executed as root." exit 1 fi ###set the ip in hosts hostsset() { echo "#########################

shell 脚本的字符串比较与截取

不羁的心 提交于 2020-02-27 12:34:02
Linux 的字符串截取很有用。有八种方法。 假设有变量 var=http://www.hao.com/123.htm . . 一 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 : www.hao.com/123.htm . . 二 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.hao.com/ 结果是 123.htm . . 三 %号截取,删除右边字符,保留左边字符 echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是: http://www.hao.com . . 四 %% 号截取,删除右边字符,保留左边字符 echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http: . . 五 从左边第几个字符开始,及字符的个数 echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是:http: . . 六 从左边第几个字符开始,一直到结束。 echo $

shell脚本编程学习(一)

佐手、 提交于 2020-02-27 03:04:48
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言,在后续的博客当中,我会陆续介绍shell脚本的使用。这里是开始篇。 一、shell脚本的基本构成简介: 1、shell脚本通常包含如下部分: 首行     第一行内容在脚本的首行左侧,表示脚本将要调用的shell解释器,内容如下: #!/bin/bash #!符号能够被内核识别成是一个脚本的开始,这一行必须位于脚本的首行,/bin/bash是bash程序的绝对路径,在这里表示后续的内容将通过bash程序解释执行。 注释     注释符号# 放在需注释内容的前面 内容     可执行内容和shell结构 Shell脚本的权限 一般情况下,默认创建的脚本是没有执行权限的。 没有权限不能执行,需要赋予可执行权限,例如给test.sh脚本赋可执行权限,可以使用以下语句。 chmod +x test.sh Shell脚本的执行 1,输入脚本的绝对路径或相对路径 /root/helloWorld.sh ./helloWorld.sh 2,bash或sh +脚本 bash /root/helloWorld.sh sh helloWorld.sh 注:当脚本没有x权限时,root和文件所有者通过该方式可以正常执行。 3,在脚本的路径前再加". " 或source

常用linux系统 安装docker的脚本

江枫思渺然 提交于 2020-02-27 02:25:59
centos: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce -y sudo systemctl enable docker sudo systemctl start docker ubuntu sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $( lsb_release -cs ) \ stable" sudo

Linux编写Bash脚本的10个技巧

女生的网名这么多〃 提交于 2020-02-26 23:03:33
Shell 脚本 编程 是你在 Linux 下学习或练习编程的最简单的方式。尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。 本文中,我们将分享 10 个写出高效可靠的 bash 脚本的实用技巧,它们包括: 1、 脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型的编程中的一种推荐做法。在脚本中作注释能帮你或别人翻阅你的脚本时了解脚本的不同部分所做的工作。 对于刚入门的人来说,注释用 # 号来定义。 # TecMint 是浏览各类 Linux 文章的最佳站点 2、 当运行失败时使脚本退出 有时即使某些 命令 运行失败,bash 可能继续去执行脚本,这样就影响到脚本的其余部分(会最终导致逻辑错误)。用下面的行的方式在遇到 命令 失败时来退出脚本执行: Linux 中高效编写 Bash 脚本的 10 个技巧 3、 当 Bash 用未声明变量时使脚本退出 Bash 也可能会使用能导致起逻辑错误的未声明的变量。因此用下面行的方式去通知 bash 当它尝试去用一个未声明变量时就退出脚本执行: Linux 中高效编写 Bash 脚本的 10 个技巧 4、 使用双引号来引用变量 当引用时(使用一个变量的值)用双引号有助于防止由于空格导致单词分割开和由于识别和扩展了通配符而导致的不必要匹配。 看看下面的例子: