linux脚本

linux下bash脚本语法

﹥>﹥吖頭↗ 提交于 2020-01-12 16:47:01
1、shell中的变量定义和引用 (1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要制定类型,也没有类型这个概念。 (2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。 注意:shell对语法非常在意,非常严格。很多地方空格都是必须没有或者必须有,而且不能随意有没有空格。 (3)变量赋值,变量定义后可以再次赋值,新的赋值会覆盖老的赋值。shell中并不刻意区分变量的定义和赋值,反正每个变量就是一个符号,这个符号的值就是最后一个给他赋值时的值。 (4)变量引用。shell中引用一个变量必须使用$符号,$符号就是变量解引用符号。 注意:$符号后面跟一个字符串,这个字符串就会被当作变量去解析。如果这个字符串本身没有定义,执行时并不会报错,而是把这个变量解析为空。也就是说在shell中没有被定义的变量其实就相当于是一个定义并赋值为空的变量。 注意:变量引用的时候可以$var,也可以${var}。这两种的区别是在某些情况下只能用${var}而不能简单的$var 2、shell中无引用、单引号和双引号的区别 (1)shell中使用字符串可以不加双引号,直接使用。而且有空格时也可以,但是缺陷是不能输出"或者其他转义字符。 (2

转载:linux下tomcat重启脚本(使用tomcat.pid)

怎甘沉沦 提交于 2020-01-12 01:44:56
原文链接: https://blog.51cto.com/zhangyb/2164192?source=dra 1、配置tomcat启动后将进程号保存至 $TOMCATHOME/bin/tomcat.pid 文件。 修改$TOMCAT_HOME/bin/catalina.sh文件,在 PRGDIR 下面一行添加 CATALINAPID 参数行,如下: PRGDIR= dirname "$PRG" CATALINA_PID=$PRGDIR/tomcat.pid 2、编写tomcat 重启脚本 restart.sh #!/bin/bash tomcat_home=/root/server/test-tomcat kill -9 `cat $tomcat_home/bin/tomcat.pid` echo "killed tomcat" # 编写自己的具体步骤 比如rm webapps/xx $tomcat_home/bin/startup.sh sleep 3 3、保存文件,添加权限 chmod +x restart.sh 来源: https://www.cnblogs.com/yaohuimo/p/12181704.html

初入Shell

风格不统一 提交于 2020-01-12 00:07:23
shell 第 1 章 Shell 概述 大数据 程序员 为什么要 学习 Shell 呢?   1 ) 需要看懂运维人员 编写的Shell程序。   2) 偶尔会编写一些简单 Shell 程序 来管理集群、 提高开发效率 。    第 2 章 Shell 解析器   ( 1 ) Linux 提供的 Shell 解析器有: [atguigu@hadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh   ( 2 ) bash 和 sh 的关系 [atguigu@hadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash   ( 3 ) Centos/Ubutun 默认的 解析 器 是bash [atguigu@hadoop102 bin]$ echo $SHELL /bin/bash 第 3 章 Shell 脚本 入门 1 . 脚本格式 脚本以 #!/bin/bash 开头 (指定解析 器 ) 2 . 第一个 Shell 脚本 :helloworld ( 1 )需求:创建一个

Bash脚本15分钟进阶教程

本小妞迷上赌 提交于 2020-01-11 09:39:27
Bash脚本15分钟进阶教程 04/23. 2014 这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。 脚本安全 我的所有bash脚本都以下面几句为开场白: #!/bin/bash set -o nounset set -o errexit 这样做会避免两种常见的问题: 引用未定义的变量(缺省值为“”) 执行失败的命令被忽略 需要注意的是,有些Linux命令的某些参数可以强制忽略发生的错误,例如“mkdir -p” 和 “rm -f”。 还要注意的是,在“errexit”模式下,虽然能有效的捕捉错误,但并不能捕捉全部失败的命令,在某些情况下,一些失败的命令是无法检测到的。(更多细节请参考这个帖子。) 脚本函数 在bash里你可以定义函数,它们就跟其它命令一样,可以随意的使用;它们能让你的脚本更具可读性: ExtractBashComments() { egrep "^#" } cat myscript.sh | ExtractBashComments | wc comments=$(ExtractBashComments < myscript.sh) 还有一些例子: SumLines() { # iterating over stdin - similar to awk local sum=0 local

linux shell 基础语法B

岁酱吖の 提交于 2020-01-10 18:39:26
接着之前的内容继续讲shell编程的基础。 这部分还是先要巩固重定向的使用,以及创建自己的文件描述符,在编写shell脚本中关注临时重定向和永久重定向的用法。 (1)< << (2)> >> 为了区分如上的重定向符号,大家搞懂以下2个例子就行: cat > file <<eof; cat >> fileA <fileB 实际使用中输入重定向还是比较少,多数是输出重定向 &> 表示stdout和stderr都重定向 对于文件描述符,我们不光要掌握0,1,2,还要能够自己创建自己的文件描述符,且在shell编程中与默认的标准文件描述符进行组合使用。比如说要恢复文件描述符就是一个例子。 exec 3 >&1 exec 1> testfile ... ... exec 1>&3 ... ... 以上是输出重定向的恢复,输入重定向如下 exec 6 <&0 exec 0 <filein ... exec 0 <&6 关闭文件描述符 exec 3 >&- 还有一种<>读写文件描述符的,慎用,最好是读完后再重定向写入,不然shell维护的内部指针会把文件内容搞得很混乱。 创建临时文件和目录 mktemp file.XXXXXX mktemp -t 创建在/tmp下面且返回绝对路径 mktemp -d创建目录 tee的使用 tee -a 重定向讲完,再讲讲脚本的控制。脚本的控制主要是信号的处理。

Linux系统巡检脚本

孤街浪徒 提交于 2020-01-10 18:01:20
#!/bin/bash # auth:Bertram # created Time : 2019-12-26 # func:sys info check # sys:centos6.x/7.x ------------------------------------------------------------------------------------------------------------------------------------- [ $(id -u) -ne 0 ] && echo "请用root用户执行此脚本!" && exit 1 sysversion=$(rpm -q centos-release|cut -d- -f3) line="-------------------------------------------------" [ -d logs ] || mkdir logs #sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt" sys_check_file="logs/$(ifconfig |awk 'NR==2{print $2}')-`date +%Y

在 CentOS7 上安装 DockerCE

一世执手 提交于 2020-01-10 11:45:23
一、安装前清理旧版本docker 旧版本的Docker被称作docker或者docker-engine。 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 二、使用repository进行安装 此种安装方式比较简单,并且升级方便。 1. 安装依赖项 安装Docker CE之前,需安装依赖:yum-utils提供的yum-config-manager工具,以及devicemapper需要的device-mapper-persistent-data和lvm2。 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 2. 安装stable版本的repository sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 附:启用或禁用nightly和test版本的命令如下 sudo yum-config-manager

Shell脚本一键部署tomcat

*爱你&永不变心* 提交于 2020-01-10 10:58:42
1:准备包和脚本 #!/bin/bash systemctl stop firewalld setenforce 0 rpm -ivh jdk-8u131-linux-x64_.rpm java --version tar zxf apache-tomcat-7.0.47.tar.gz cp -r apache-tomcat-7.0.47 /opt/tomcat /opt/tomcat/bin/startup.sh 保存退出 最后访问一下IP:8080(加上端口) 来源: CSDN 作者: 毛某人G 链接: https://blog.csdn.net/mrh666/article/details/103896494

Ubuntu 16.04及以上 安装/卸载 Docker-CE

泪湿孤枕 提交于 2020-01-10 05:36:55
前言 本文仅针对Ubuntu 18.10、18.04、16.04的x86_64的OS与架构下的Docker-CE的安装 卸载老版本 如果已安装,请卸载它们: sudo apt-get remove docker docker-engine docker.io containerd runc 安装Docker CE 使用包管理器安装 更新 apt 包索引 sudo apt-get update 安装Https使用的包装包,防止OS中没有这些软件,导致安装失败 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 可以通过校验这个密钥是否添加成功 sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE

windows bat脚本实现ftp自动下载 删除

◇◆丶佛笑我妖孽 提交于 2020-01-09 23:57:27
现在有一个需求就是把远程某个文件下面的图片,下载到本地,并且删除下载成功的的文件,而且远程目录下的那个图片会随时增加。假设一下如果所有的脚本都写好了,那么就需要调用windows上的计划任务定时执行脚本就ok了,Linux上利用cronjob 同样可以做到。大体的实现思路如下,当然了不止这一种方式。 在远程服务器上搭建ftp server ,例如这里在远程服务上的 images 作为下载目录。搭建ftp server 最简单的方式就是用FileZilla Server 这个工具去搭建,很方便,零配置。 在client端编写 脚本,首先实现可以从远程服务器上下载,其次再把下载成功的文件到远程服务器上进行删除,这里的细节需要注意: a.首先把下载完成的文件的列表写入到一个临时文件中 例如文件 filelist.tmp,同时把下载到临时目录中的文件移动到一个一个正式目录 例如 download 目录 b.其次删除文件的时候就按照这个 filelist.tmp 文件中文件list, 由于因windows下不能直接将参数传给ftp脚本函数,所以删除文件就采用分批删除,例如一次删除 10个文件,当然这个你可以自己零活控制 , 这里主要用到了ftp 命令中的 mdelete 这个方法,同时可以删除多个文件。 3. 然后根据你的需求,把这个脚本添加到任务计划中。 这个程序包含 2个 脚本