shell脚本

shell传递参数

我的未来我决定 提交于 2019-12-06 03:17:23
$# 传递到脚本的参数个数 $* 以一个字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程的ID号 $| 后台运行的最后一个进程的ID号 $@ 与$*相同,但是用时加引号,并在引号返回每个参数 $- 显示shell使用的当前选项 与set命令功能相同 $? 显示最后命令的退出状态,0表示没有错误,其他任何值表明错误 #!/bin/bash # author:菜鸟教程 # url:www.runoob.com a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi 执行脚本,输出结果以下所示: a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b#########################关系运行符#

shell 学习笔记

倖福魔咒の 提交于 2019-12-06 02:59:10
Shell 是什么 Shell 是指一种命令行解释器,是为用户和操作系统之间通信提供的一种接口 分类 图形界面shell(graphical user interface) 命令行shell (Command Line Interface ) 即CLI Shell不只是解释器,还是一种脚本语言(解释型语言) 工作模式: 互动模式 脚步模式 互动模式:由系统管理人员直接通过键盘输入命令,并等待其执行在一个命令 脚步模式:设计出一个脚步文件,将所有需要执行命令写在该文件中,由bash shell读取并执行 Shell 内建命令 bash, :, ., [, alias, bg, bind, break, builtin, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit,export, fc, fg, getopts , hash, help, history, jobs, kill, let, local, logout, pops, printf, pushed, pwd, read,redonly, return, set, shift,shopt, source, suspend, test, times, trap, rype,

程序性能优化之耗电优化(四)上篇

安稳与你 提交于 2019-12-06 02:45:58
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将最后从以下两个方面来介绍耗电优化: 【Doze 和 StandBy模式】 【Battery Historian 使用】 一、 Doze 和 StandBy模式 1.1 Doze低电耗模式 Android 6.0(API 级别 23)引入了低电耗模式,当用户设备未插接电源、处于静止状态且屏幕关闭时,该模式会推迟 CPU 和网络活动,从而延长电池寿命。而 Android 7.0 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了低电耗模式。 ​ 当设备处于充电状态且屏幕已关闭一定时间后,设备会进入低电耗模式并应用第一部分限制:关闭应用网络访问、推迟作业和同步。如果进入低电耗模式后设备处于静止状态达到一定时间,系统则会对 PowerManager.WakeLock、AlarmManager 闹铃、GPS 和 WLAN 扫描应用余下的低电耗模式限制。无论是应用部分还是全部低电耗模式限制,系统都会唤醒设备以提供简短的维护时间窗口,在此窗口期间,应用程序可以访问网络并执行任何被推迟的作业/同步。 1、暂停访问网络。 2、系统将忽略 wake locks。

shell脚本的基本语句

耗尽温柔 提交于 2019-12-06 02:35:42
shell 变量: name=”hauzai007” echo $name 注意事项: 变量名和等号之间不能有空格 不能使用标点符号 不能使用bash里的关键字 只读变量: name=”huazai007” 关键字:readonly name 删除变量: unset name 变量类型: 1 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 2 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 系统环境变量: 查看所有环境变量:env 删除环境变量:unset HAHA 举个例子: PPID:是当前进程的父进程的PID PWD:当前工作目录。 RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。 查看所有环境变量:env 删除环境变量:unset 用vim在/etc/profile文件中添加我们想要的环境变量 设置新的环境变量 export 新环境变量名=内容 例:export MYNAME=”LLZZ” 生效 source /etc/profile 字符串 str="abcdefg" echo ${#str} echo ${str:1:4} #表示从字符串的第二个字符开始截取,取第四个字符

20.5 shell脚本中的逻辑判断 20.6 文件目录属性判断 20.7 if特殊用法 20.8/20.9 case判断

孤街浪徒 提交于 2019-12-06 02:30:18
20.5 shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; then … ;elif …; then …; else …; fi 逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 , 注意到处都是空格 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 可以使用 && || 结合多个条件 if [ $a -gt 5 ] && [ $a -lt 10 ]; then if [ $b -gt 5 ] || [ $b -lt 3 ]; then 用 (( )) 括起来 就可以使用判断符号了 如 if (( $a>1 )) -a 与 -o 或 ! 非 20.6 文件目录属性判断 [ -f file ]判断是否是普通文件,且存在 / [ ! -f file ]判断是否不是普通文件,且不存在 [ -d file ] 判断是否是目录,且存在 [ -e file ] 判断文件或目录是否存在 [ -r file ] 判断文件是否可读 [ -w file ] 判断文件是否可写 [ -x file ] 判断文件是否可执行 If [ $a == $b ]

shell脚本中 “set -e” 的作用

别来无恙 提交于 2019-12-06 00:40:03
#!/bin/bash set -e command 1 command 2 每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出。 这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。 ———————————————— 原文链接:https://blog.csdn.net/l1394049664/article/details/81741106 来源: https://www.cnblogs.com/wxwgk/p/11953927.html

理论 :shell编程之expect免交互

纵饮孤独 提交于 2019-12-05 21:28:47
前言: expect用途: 设置账号密码 ssh输入登陆密码 scp 输入验证密码 免交互的目的是代人工手动输入 expect概述 expect安装 expect基本命令 expect执行方式 expect案例 一 : expect 概述 1.1 expect expect是建立在tcl基础上的一个工具,expect是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。对于大规模的linux运维很有帮助 在linux运维和开发中,我们经常需要远程登陆服务器进行操作,登陆的过程是一个交互的过程,可能会需要输入yes/no、password等信息。为了模拟这种输入,可以使用expect脚本 二 : expect 安装 2.1 挂载光盘 2.2 制作本地yum仓库 2.3 执行安装命令 yum install expect -y 系统在默认情况下是没有安装expect软件,需要手动安装 三 : expect基本命令 3.1 spawn : 启动进程,并跟踪后续交互信息 3.2 expect expect的一个内部命令,判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超过时间后返回。 只能捕捉由spawn启动的进程的输出 3.3 send :向进程发送字符串,用于模拟用户的输入 该命令不能自动回车换行,一般要加\r(回车) 3.4 interact

Shell能做什么

前提是你 提交于 2019-12-05 20:05:12
shell概览 一、shell能做什么 1.自动化系统初始化(update,软件安装,时区设置,安全策略...) 2.自动化批量软件部署程序(LAMP/LNMP/Tomcat/Nginx) 3.管理应用程序(KVM,集群管理扩容,MySQL,DELLR720批量RAID) 4.日志分析处理程序(PV,UV,200,!200,top100,grep/awk) 5.自动化备份恢复程序(MySQL完全备份/增量+Crond) 6.自动化管理程序(批量远程修改密码,软件升级,配置更新) 7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 8.配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 9.自动化扩容(增量云主机——>业务上线) zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机)+Shell Script(业务上线) 10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运动的小火车,坦克大战,排序算法实现 11.Shell理论上将可以做任何事(一切取决业务需求) 程序语言执行: C —— 编译 —— 二进制机器码(CPU可以直接执行,不用再处理,x86复杂指令集

Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

痴心易碎 提交于 2019-12-05 19:21:14
Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录 转自 https://www.cnblogs.com/kevingrace/p/10466530.html 一. MySQL InnoDB Cluster 介绍 MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluster, 腾讯的PhxSQL, MySQL Fabric., aliSQL。MySQL官方在2017年4月推出了一套完整的、高可用的Mysql解决方案 - MySQL InnoDB Cluster, 即一组MySQL服务器可以配置为一个MySQL集群。在默认的单主节点模式下,集群服务器具有一个读写主节点和多个只读辅节点。辅助服务器是主服务器的副本。客户端应用程序通过MySQL Router连接到主服务程序。如果主服务连接失败,则次要的节点自动提升为主节点,MySQL Router请求到新的主节点。InnoDB Cluster不提供NDB Cluster支持。 -> 分布式MySQL之InnoDB和NDB 分布式MySQL主要有InnoDB和NDB模式, NDB是基于集群的引擎-数据被自动切分并复制到数个机器上(数据节点),

For,while,case,shell循环结构

荒凉一梦 提交于 2019-12-05 19:14:15
For,while,case,shell循环结构 案例 1 :使用 for 循环结构 案例 2 :使用 while 循环结构 案例 3 :基于 case 分支编写脚本 案例 4 :使用 Shell 函数 案例 5 :中断及退出 1 案例 1 :使用 for 循环结构 1.1 问题 本案例要求编写一个 Shell 脚本 chkhosts.sh ,利用 for 循环来检测多个主机的存活状态,相关要求及说明如下: 对 192.168.4.0/24 网段执行 ping 检测 ping 检测可参考前一天的 pinghost.sh 脚本 脚本能遍历 ping 各主机,并反馈存活状态 执行检测脚本以后,反馈结果如图 -1 所示。 图 -1 1.2 方案 在 Shell 脚本应用中,常见的 for 循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。 for 循环的语法结构如下所示: for 变量名 in 值列表 do 命令序列 done For 变量名 in `ls/etc/*.conf` do 命令序列 done for 变量名 in {1..5} do 命令序列 done for 变量名 in `seq 5` do 命令序列 done 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:练习 for 循环基本用法 脚本 1 ,通过循环批量显示