分享9个实战及面试常用Linux Shell脚本编写
注意事项
1)开头加解释器:#!/bin/bash
2)语法缩进,使用四个空格;多加注释说明。
3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。
4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。
5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。
6)写脚本一定先测试再到生产上。
1 获取随机字符串或数字
获取随机8位字符串:
获取随机8位数字:
cksum:打印CRC效验和统计字节
2 定义一个颜色输出字符串函数
function关键字定义一个函数,可加或不加。
3 批量创建用户
4 检查软件包是否安装
5 检查服务状态
6 检查主机存活状态
方法1: 将错误IP放到数组里面判断是否ping失败三次
方法2: 将错误次数放到FAIL_COUNT变量里面判断是否ping失败三次
方法3: 利用for循环将ping通就跳出循环继续,如果不跳出就会走到打印ping失败
7 监控CPU、内存和硬盘利用率
1)CPU
借助vmstat工具来分析CPU统计信息。
2)内存
3)硬盘
8 批量主机磁盘利用率监控
前提监控端和被监控端SSH免交互登录或者密钥登录。
写一个配置文件保存被监控主机SSH连接信息,文件内容格式:IP User Port
9 检查网站可用性
1)检查URL可用性
2)判断三次URL可用性
思路与上面检查主机存活状态一样。
总结
以上所述是小编给大家介绍的分享9个实战及面试常用Shell脚本编写,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
Linux下使用Shell脚本获取终端宽度的解决方法
获取终端大小时候的学习 在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行缓慢 解决方法: 使用yes 命令 sed '50q' 显示50行 tr -d '\n' 删除 \n 多次重复输入相同字符可用yes yes "2" | sed '50q' | tr -d '\n' 想法来自:打印100个连续的符号,不用循环 ---------------------------------------------------------------------
-
linux环境下编写shell脚本实现启动停止tomcat服务的方法
第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat/apache-tomcat-8.0.48 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh case $1 in start) echo "启动$tomcat_home" $STAR
-
Linux Crontab Shell脚本实现秒级定时任务的方法
一.编写Shell脚本crontab.sh #!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/www/php/crontab/crontab.php') sleep $step done exit 0 二.crontab -e 输入以下语句,然后:wq 保存退出 # m h dom mon dow command * * * * * /home/www/php/crontab
-
在linux shell脚本中root切换到普通用户执行脚本或命令的方法
需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co
-
使用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 crontab定时执行Shell脚本需要执行特定的命令时解决思路
由于一些不可抗拒的原因,项目部署后需要定时检测项目是否正常运行,否则将执行重启命令. 在具体实施过程中发现,定时器执行无误,但是重启命令无法正常启动.多方查找发现Shell脚本中的Java命令需要引入环境变量方可正常执行.因此做了一下修改,脚本如下(仅供参考): 1.crontab执行配置 * * * * * cd /项目目录 && ./auto_start.sh >> /log/auto.out 2.Shell脚本 #!/bin/bash #导入环境变量 export LAN
-
Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件中,实现操作shell脚本启动jar包程序的功能. 编写的socdev.sh脚本文件中命令如下: #启动命令所在目录 HOME='/home/pi/Desktop/java' #获取mac地址(唯一的) mac=`ifconfig | grep eth0 | awk '{print $5}'` st
-
Linux中shell脚本获取当前工作目录的方法
如下: workdir=$(cd $(dirname $0); pwd) 步骤1 dirname $0,取得当前执行的脚本文件的父目录 步骤2 cd到父目录,即进入当前工作目录 步骤3 pwd显示当前工作目录 以上这篇Linux中shell脚本获取当前工作目录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
linux shell脚本对未定义变量的判断以及if的用法详解
环境 操作系统:win10 虚拟机:centos7 需求 因为公司有个脚本,是用于启动程序的,但是每次启动都要手动做如下两个操作: ①先查询之前的进程ID ②杀死之前的,在启动新了 时间长了弄得我很烦躁,所以就琢磨下,把上面的的操作一起整合到启动脚本里去. 最开始我是这么写的: #!/bin/bash echo "ggjob-search..." pid=`ps -ef|grep -w ggjob-search|grep -v grep|grep -v ggjob-search.sh|
-
Linux通过Shell脚本命令修改密码的两种方式
交互方式修改密码 1. ssh 远程到主机: 2. 切换到root账号: [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]: 3. passwd username 使用passwd username 修改 username 的密码: 使用该命令会有提示,即进入了交互界面,输入密码即可. 使用脚本修改密码 很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了. 此时可以使用如下两种方式修改密码: 方式1:
随机推荐
- React-intl 实现多语言的示例代码
- PHP+Mysql+Ajax+JS实现省市区三级联动
- HTML表单元素覆盖样式元素问题及其补救之道
- Ruby中实现把字符串转换为类的2种方法
- 详细讲解PostgreSQL中的全文搜索的用法
- Oracle 11g服务器与客户端卸载、安装全过程
- jQuery动态效果显示人物结构关系图的方法
- jQuery 获取对象 基本选择与层级
- windows安装nginx部署步骤图解(反向代理与负载均衡)
- jsp 开发之struts2中s:select标签的使用
- Java利用HttpClient模拟POST表单操作应用及注意事项
- Oracle数据库的字段约束创建和维护示例
- 提供个 全免杀海洋2006asp木马 下载
- 如何使用Administrators组用户运行ASP程序
- js中常用的弹出对话框3种方式
- Mysql 远程连接配置实现的两种方法
- BootStrap Fileinput初始化时的一些参数
- js实现(全选)多选按钮的方法【附实例】
- 浅谈MFC 改变控件大小和位置
- 看清ARP 排除网络故障技巧