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`. /var/log
# date使⽤反引号括起来,反引号表⽰引号内部的字符作为命令执⾏,+%Y%m%d限定了date的格式是年⽉⽇,反引号在键盘<tab>键上⾯# 脚本调⽤:
# crontab ‐e是指系统在某个时间执⾏的特定的命令或程序,后⾯的五个数字位是任务执⾏设置,分别代表分钟,⼩时,⽇,⽉,星期⼏调⽤logbak.sh
crontab ‐e 0003 * * 5 /root/logbak.sh
4、⼀键部署 LNMP(RPM 包版本)
# LNMP是Linux + nginx + mysql + PHP,
linux命令及shell编写# 编译安装需要输⼊⼤量的命令,如果是配置⽣产环境需要耗费⼤量的时间。
# 搭建好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:收件⼈,<&是邮件内容
#!/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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论