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的账户
 
 
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(RPM 包版本)
# 使用 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.....是邮件内容
#!/bin/bash
disk_size=$(df / | awk '/\//{print $4}')
mem_size=$(free | awk '/Mem/{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

  


 

posted @ 2020-04-15 18:00  YlnChen  阅读(3701)  评论(0编辑  收藏  举报