shell编程100例及代码注释——持续更新
时间:2020-04-15
本文章向大家介绍shell编程100例及代码注释——持续更新,主要包括shell编程100例及代码注释——持续更新使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、编写hello world脚本
#!/bin/bash echo "Hello World!"
2、通过位置变量创建 Linux 系统账户及密码
#!/bin/bash useradd "$1" echo "$2" | passwd ‐‐stdin "$1"
#$1 是传给脚本的第一个参数,$2 是传给脚本的第二个参数
# 命名为test.sh,保存退出,调用:
# bash Test.sh yln 123
# 创建了名为yln,密码为123的账户
# bash Test.sh yln 123
# 创建了名为yln,密码为123的账户
3、备份日志
# 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
# 编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
#!/bin/bash # vim /root/logbak.sh tar -czf log-`date +%Y%m%d`.tar.gz /var/log
# date使用反引号括起来,反引号表示引号内部的字符作为命令执行,+%Y%m%d限定了date的格式是年月日,反引号在键盘<tab>键上面
# 脚本调用:
# crontab ‐e是指系统在某个时间执行的特定的命令或程序,后面的五个数字位是任务执行设置,分别代表分钟,小时,日,月,星期几调用logbak.sh
crontab ‐e 00 03 * * 5 /root/logbak.sh
4、一键部署 LNMP(RPM 包版本)
# LNMP是Linux + nginx + mysql + PHP,
# 编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
# 搭建好LNMP环境之后就无需一个一个的输入命令,无需值守,编译安装优化编译参数,
# 提高性能,解决不必要的软件间依赖,特别针对配置自动优化。
# LNMP是Linux + nginx + mysql + PHP,
# 编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
# 搭建好LNMP环境之后就无需一个一个的输入命令,无需值守,编译安装优化编译参数,
# 提高性能,解决不必要的软件间依赖,特别针对配置自动优化。
# 一键部署 LNMP(RPM 包版本)
# 使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败
# 本脚本使用于 centos7.2 或 RHEL7.2
# 使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败
# 本脚本使用于 centos7.2 或 RHEL7.2
#!/bin/bash yum ‐y install httpd # httpd(网页伺服器)实际上是Apache,它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。 yum ‐y install mariadb mariadb‐devel mariadb‐server # mariadbMariaDB数据库管理系统是MySQL的替代,主要由开源社区在维护, # 采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 yum ‐y install php php‐mysql # php‐mysql是搭配服用的:免费的 MySQL 数据库通常是通过 PHP 来使用的 systemctl start httpd mariadb # linux系统启动服务:启动httpd mariadb systemctl enable httpd mariadb # linux系统设置开机自启动
5、监控内存和磁盘容量,小于给定值时报警
# 实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员
# 提取根分区剩余空间(/)
# df:显示磁盘分区上的可使用的磁盘空间,/代表linux根目录,linux所有目录都由它衍生出来
# awk:后面接条件+{动作},这里是按分隔符分割管道命令左边的域,然后打印第4个域,\/等价于下面的Mem
# 提取内存剩余空间
# free:用来查看可用内存,有两行物理内存:Mem,交换内存:swap,这里是提取第一行第四列
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
# if后面方括号写明条件,如果条件为真,执行then后面的命令
# -le:shell中大于,大于等于,小于等于,lt,gt,ne,ge,le
# -a: shell的if有-a至-z的参数,-a file,代表:如果file存在则为真
# -s: 邮件主题,root:收件人,<<EOF.....是邮件内容
# df:显示磁盘分区上的可使用的磁盘空间,/代表linux根目录,linux所有目录都由它衍生出来
# awk:后面接条件+{动作},这里是按分隔符分割管道命令左边的域,然后打印第4个域,\/等价于下面的Mem
# 提取内存剩余空间
# free:用来查看可用内存,有两行物理内存:Mem,交换内存:swap,这里是提取第一行第四列
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
# if后面方括号写明条件,如果条件为真,执行then后面的命令
# -le:shell中大于,大于等于,小于等于,lt,gt,ne,ge,le
# -a: shell的if有-a至-z的参数,-a file,代表:如果file存在则为真
# -s: 邮件主题,root:收件人,<<EOF.....是邮件内容
#!/bin/bash
disk_size=$(df / | awk '/\//{print $4}')
while :
do
if [ $disk_size -le 512000 -a $mem_size -le 1024000 ]
then
mail ‐s "Warning" root
<<EOF
Insufficient resources,资源不足
EOF
fi
done
原文地址:https://www.cnblogs.com/YlnChen/p/12706981.html
- Spark Streaming自定义Receivers
- 利用USB橡皮鸭在目标机器上启动Empire或Meterpreter会话
- Spark部署
- Spark调优
- perl语言十分钟入门【零基础可入】
- Spark硬件配置推荐
- Spark作业调度
- 如何把Photoshop改造成远程控制工具(RAT)来利用
- Office高级威胁漏洞在野利用分析
- 10行代码告诉你,为什么说Python数据可视化是一件艺术品
- 没想到你是这样的Linux | 终端下有趣的命令合集
- PhEmail:基于Python的开源网络钓鱼测试工具
- 数据库中间件mysql-proxy细节【mysql官方的中间件】
- Office CVE-2017-8570远程代码执行漏洞复现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中出现“No space left on device”错误的排查与解决方法
- 浏览器是如何调度进程和线程的?
- Linux shell利用sed如何批量更改文件名详解
- linux下通过xinetd服务管理 rsync 实现开机自启动
- linux实现自动删除最旧的几个文件详解
- 基于Ubuntu 16.04设置固定IP的方法教程
- CentOS添加和删除用户以及用户组的方法
- Linux下使用inode删除指定文件方法示例
- Apache虚拟目录配置及vue-cli反向代理的设置方法
- linux socket通讯获取本地的源端口号的实现方法
- 初识centos7与centos6的区别整理(内核、命令等)
- Apache下通过shell脚本提交网站404死链的方法
- centos查找已安装的jdk路径的方法
- CentOS7+apache+php7+mysql5.7配置教程详解
- 如何利用SystemTap统计函数执行耗时详解