shell简介
Shell是一种脚本语言,又是一种命令语言,可以通俗一点来说,shell脚本就是一系列命令的集合,可以在Unix、LInux上面直接使用,并且直接条用大量系统内部的功能来解释执行程序把一些重复性的工作交给shell做,来实现自动化运维
shell虽然没有C/C++、Java、Python等强大,但也支持了基本的编程元素,例如:if 、
for、while、case等循环,还有变量、数组、字符串、注释、加减乘除逻辑运算等。
常见的脚步语言
shell、perl、php、python
shell的优点
易用 高效 简单
shell应用场景
- 监控linux环境的使用情况
- 对数据进行处理
- 与数据库的交互
- 进程监控,自动化启停
- 完成一些重复性的工作
Sheel编写第一个脚本
编写第一个脚本
以sh为结尾的一个文件
[root@xjm opt]# cat first.sh
#!/bin/bash
#作者:Meimei
#日期:2021-9-11
#功能:this is first shell !
echo "this is my first shell !"
[root@xjm opt]# chmod 755 frist.sh
[root@xjm opt]# sh frist.sh
this is my first shell !
shell脚本与crontab定时器的运用
crond服务:
以守护进程方式在无需人工干预的情况下来处理着一系列作业和指令的服务
查看crond服务状态的命令
[root@xjm opt]# systemctl status crond.service
crond服务的启停命令
[root@xjm opt]# systemctl start crond.service
[root@xjm opt]# systemctl stop crond.service
crontab定时器的使用
语法:
crontab 【选项】
crontab -l 查询有哪些任务
crontab -e 编写定时器
crontab -r 删除任务
crontab的例子
利用shell脚本实战nginx日志的切割
需求:
- nginx的日志文件路径
- 每天的0点对nginx日志进行切割
- 以前一天日期为命名
shell脚本编写
[root@xjm opt]# cat nginxcut.sh
#!/bin/bash
#create by meimei
#date:2021-9-11
#Auto cut nginx log script
#nginx日志路径
logs_path=/usr/local/nginx/logs
#前一天的日期
YesterDay=$(date -d 'yesterday' +%Y-%m-%d)
#移动日志并以日期为名字
mv ${logs_path}/access.log ${logs_path}/access_${YesterDay}.log
mv ${logs_path}/error.log ${logs_path}/error_${YesterDay}.log
#向nginx主进程发送信号,重新生成日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
[root@xjm opt]#
查看日志文件名字有无更改
[root@xjm logs]# ll
total 4
-rw-r--r--. 1 nobody root 0 Sep 11 21:11 access_2021-09-10.log
-rw-r--r--. 1 nobody root 0 Sep 11 21:12 access.log
-rw-r--r--. 1 nobody root 0 Sep 11 21:11 error_2021-09-10.log
-rw-r--r--. 1 nobody root 0 Sep 11 21:12 error.log
-rw-r--r--. 1 root root 5 Sep 11 20:57 nginx.pid
写一个定时任务,每天的0时0分执行
[root@xjm opt]# crontab -e
no crontab for root - using an empty one
0 0 * * * sh /opt/nginxcut.sh