1 首先要写一个测试脚本输出内存使用率
这是我写的有报错,下面有一个企业级的来对比一下我的错误。
vim serverstatus.sh
used.mem="free -m | grep Mem | awk '{print$3}'"
total.mem=" free -m | grep Mem | awk '{print$2}' "
usepercent=$(used.mem*100/total.mem)
echo usepercent
这里插嘴一下,那个grep只能过滤一行的,出来是一行的
#!/usr/bin/bash
mem_used=`free -m | grep Mem | awk '{print $3}'`
mem_total=`free -m | grep Mem | awk '{print $2}'`
mem_percent=$((mem_used*100/mem_total))
echo "当前内存使用百分比:$mem_percent%"
后面的就好写了然后是CPU负载 利用uptime命令可以看到平均负载
其中load average的三个值分别表示1分钟、5分钟、15分钟的CPU负载情况
(我这样的命名方法是-#错误#-的-根本识别不出变量)
average-load1 =`uptime | awk -F, '{print$3}' | awk -F: '{print$2}'`
average-load5=`uptime | awk -F, '{print$4}'`
average-load15=`uptime | awk -F, '{print$5}'`
然后是就是磁盘利用率
disk_percent=`df -h | grep "mapper"| awk '{print$5}'`
最后是io,这个是直接读取第四行,注意的是==
io_average=`iostat -x| awk 'NR==4{print$4}'`
我试验了从外面导入数据库,还是可以的
mysql -uroot -p123 -e "insert into lover.list values(1,2,3,4)"
mysql -uroot -p123 -e "insert into lover.list values($mem_percent,$average-load5,$disk_percent,$io_average)"
这里出现了一个错误,由于disk_percent 导出来的是19%导不进去
我当时用的varchar来建表,问题是如果是非数字都要用' ' 注意是单
2019/7/14 我要开始练习我的脚本了
1 这是一个有关日志练习的小脚本
#清理今天所产生的导出文件
time1=$(date "+%Y-%m-%d");
exportpath="/root/jiaobeng/rizhi/$time1/";
echo $exportpath;
if [ -d $exportpath ];then
rm -rf $exportpath;
if [ $? -eq 0 ];then
echo "删除文件夹$exportpath" >> /root/jiaobeng/rizhi/rm_export_dir_success.log;
fi
else
echo "文件夹不存在" >> /root/jiaobeng/rizhi/rm_day_exportdir.log;
fi
**********************************************************************************
我来理解一下,这就是日常清理每天日期文件,然后将处理信息分别发送对应的日志
首先是要执行脚本就要每天执行,每天的文件夹也不一样 同样的来说执行删除命令的时候那个路径也是一个变量
当我创建一个当前日期的文件夹是mkdir `date +%Y-%m-%d`
time1=$(date +%Y-%m-%d)
# 引用变量时要$, 如果要变$,不变的直接引用的命令加""
transportpath="/root/jiaoben/test/$time1"
# 看输出路径是否错误
echo $transportpath
# 如果这个目录存在则把这个目录删掉,shell 中判断是用[],判断目录是否存在
if [ -d $transportpath];then
rm -rf $transportpath
echo "$transportpath删除成功" >> 成功日志
else
echo "$transportpath文件夹不存在" >> 失败日志
fi
其实不加第二个判断也是可以的
编写shell脚本,清理/var/logs/目录下的一个持续增长的conn.log文件,以日为单位形成一个新的压缩文件,并删除30天前的日志压缩文件
# vim cleanlog.sh 创建脚本
# tar -czf /root/jiaobeng/rizhi/19年07月13号-15:04:54/bjd.tar rm_day_exportdir.sh 我用这个命令试验了一下成功了
# 我来介绍一下压缩的命令 tar -czf 首先是压缩的路径名字 然后是压缩的内容
tar -czf /log_backup/conn_`date +%y年%m月%d号-%H:%M:%S`.log.tar.gz /var/logs/conn.log
rm-rf/var/logs/conn.log
find /log_backup/-mtime+30 -exec rm{}\;
- 1)备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名为如下形式
- yymmdd_data,yy为年,mm为月,dd为日
- 2)读取/app/app.log文件中每行第一个域的全部数据加入到/backup/yymmdd_app_am.log,yy为年,mm为月,dd为日
- 3)删除/app/app.log文件
- shell程序appbak存放在/usr/bin目录下。(最少写一个循环)
vim/usr/bin/appbak
abc=`date +%Y%b%d`_data
tar-czf/usr/bin/backup/$abc /data
wait
cat /app/app.log |awk'{print$1}' >> /usr/bin/backup/$abc
rm -rf /app/app.log
# 这是什么鬼哟,文件还能加到压缩文件中吗?
- 实现用用户输入入用用户名和密码,当用用户名为ye或sk且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入入三次
# shell中语法和python的语法细节有些不同,为避免弄混我先好好研究下shell
while true
do
read -p"请输入你的用户名:" username
if [[ $username = "ye" || $username = "sk" ]];then
for i in {1..3}
do
read -p"请输入你的密码:" password
if [[ $password = "123" ]];then
echo "您已成功登陆"
exit
else
echo "密码错误,需要重新输入"
fi
done
echo "登陆失败"
exit
else
echo "该账户不存在,请重新输入"
fi
done