第一题 每日一文件
#!/bin/bashdate_log=$(date +%F)dir=/data/log/disklog[ -d $dir ] || mkdir -p $dirdf -h > /$dir/$date_log.log
第二题 统计访问量
#!/bin/bash#统计nginx访问日志if [ $# -ne 1 ];then echo "请输入nginx的访问日志文件" exit 1fi awk '{print $1}' $1 |sort|uniq -c|sort -rn
第三题 统计内存
#!/bin/bashmem_num=$(ps aux|sed 1d|awk '{print $6}')num=0for i in $mem_num;do num=$((num+i))doneecho "$((num/1024/1024))"
第四题 监控机器存活
#!/bin/bashread -p "请输入IP地址:" IPif [ -z $IP ];then echo "输入的IP不能为空..." exit 1fiVALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')if [ ${VALID_CHECK:-no} == "yes" ]; then num=`ping -c5 $IP|grep packet|awk -F "[%]" '{print $NR}'|awk -F ',' '{print $NF}'` if [ $num -ge 50 ];then echo "$IP已断开" else echo "$IP正常" fielse echo "$IP输入错误"fi
第五题 批量修改文件
#!/bin/bashpath=/123find "$path" -type f -name "*.txt"|xargs -i mv {} {}.bakcd /tar zcvf $path/123.tar.gz 123cd /123rename ".bak" "" *
第六题 检测nginx端口
#!/bin/bashduankou=`ss -lntp|grep 80|wc -l`if [ $duankou -ne 1 ];then echo "Nginx error"else echo "Nginx 正常"fi[ro
第七题 Mysql备份
#!/bin/bash################################################################################### [功能说明]#==========================================================================# 1.每个月的14号、28号的晚上23:45进行全量备份;# 2.备份完成后,只保留最新的备份数据;# 3.将最新的备份文件上传到远程备份服务器中,远程备份服务器地址为172.20.62.224# [使用说明]#==========================================================================# 1.打开/etc/crontab/ 添加如下定时任务,每天晚上23:45分执行;# 45 23 * * * /bin/bash /scripts/dbbackup.sh &> /dev/null# (请先通过service crond status 确保crond服务已经有启动。);# 2.请根据环境设置好[参数列表]中的参数。#==========================================================================# [参数列表]#==========================================================================# 1. username : 数据库用户名;# 2. password : 数据库密码;# 3. baseDir : 备份数据存储的基目录,全量数据存储于# 4. backup_host : 备份服务器地址# ******************需要设置的变量参数**************************************#日期now_date=$(date +%d)#mysql数据库用户名username="root"#备份文件存储目录backup_dir=/home/data/backup/mysql#binlog备份文件存储目录backup_bin=/home/data/backup/mysql_binlog#数据库连接命令MYCMD="mysql -u$username"#数据库备份命令MYDUMP="mysqldump -u$username -x -B -F -R -E --master-data=2 --triggers --flush-privileges --default-character-set=utf8 --hex-blob"#备份服务器地址backup_host="172.20.62.224"# binlog的目录及文件binlog_path=/opt/software/mysqlbinFile=/opt/software/mysql/mysql-bin.index#全量备份mysql数据,并远程推送至备份服务器mysql_dump() { [ ! -d $backup_dir ] && mkdir -p $backup_dir #DBLIST=`$MYCMD -e "show databases;"|sed 1d|egrep "^ag_*|^huiche*|^jd_gaosu$|^jiading_keyikao$|^jingan$|^ping$|^zvic-dev-*"` DBLIST=`$MYCMD -e "show databases;"|sed 1d|egrep "^jiading_keyikao$|^jingan$"` for dbname in $DBLIST;do [ ! -d $backup_dir/$dbname ] && mkdir -p $backup_dir/$dbname $MYDUMP $dbname|gzip >$backup_dir/$dbname/${dbname}_$(date +%F).sql.gz done rsync -az --no-o --no-g $backup_dir rsync_backup@$backup_host::backup/ --password-file=/etc/rsync.password}#增量备份数据,并远程推送至备份服务器incre_backup() { [ ! -d $backup_bin ] && mkdir -p $backup_bin #(1)拷贝binlog前先锁定表,以防备份期间数据的写入 mysql -u${username} -e "flush tables with read lock;" 2>/dev/null #(2)将缓存中的数据更改写到binlog中,并生产一个新的mysql-bin.00000*文件 mysqladmin -u${username} flush-logs 2>/dev/null counter=$(wc -l $binFile | awk '{print $1}') nextNum=0 #(3)将除刚产生的binlog文件外的所有文件拷贝到备份目录中 for file in `cat $binFile`;do baseFile=$(basename $file) nextNum=$(($nextNum + 1)) if [ $nextNum -eq $counter ];then break else cp $binlog_path/$baseFile $backup_bin fi done #(4)备份完成后,释放锁 mysql -u${username} -e "unlock tables;" 2>/dev/null #(5)将拷贝的文件打包,并删除之前拷贝的binlog日志 cd $backup_bin && tar zcvf mysql_binlog_$(date +%F).tar.gz mysql-bin* && find $backup_bin -type f -name "mysql-bin*"|xargs rm -f #(6)通过rsync远程备份到备份服务器上面 rsync -az --no-o --no-g $backup_bin rsync_backup@$backup_host::backup/ --password-file=/etc/rsync.password}#只保留服务器最新一次的数据host_rm_file() { find $backup_dir -type f -name "*.sql.gz" -mtime +15|xargs rm -f find $backup_bin -type f -name "*.tar.gz" -mtime +15|xargs rm -f}#定期清除远程服务器上1个月以前的历史数据backup_rm_file() { ssh -p 2224 root@172.20.62.224 'find /home/users/backup/172.20.62.117/mysql -type f -name "*.sql.gz"' -mtime +30|xargs rm -f ssh -p 2224 root@172.20.62.224 'find /home/users/backup/172.20.62.117/mysql_binlog -type f -name "*.sql.gz"' -mtime +30|xargs rm -f}if [ $now_date -eq 14 -o $now_date -eq 28 ];then mysql_dumpfiincre_backuphost_rm_filebackup_rm_file
第八题 监控502
#!/bin/bashwhile true:do LOG=`tail -300 /iflytek/nginx/logs/access.log |grep " 502 "|wc -l` if [ -z $LOG ];then exit 1 fi if [ $LOG -ge 100 ];then /iflytek/php/sbin/php-fpm restart php_fmp_num=$(pgrep -l php-fpm|wc -l) if [ $php_fmp_num -eq 0 ];then echo "服务未启动,请查看" exit 2 fi fi sleep 10done
第九题 输出小于6的单词
#!/bin/bashfor n in Bash also interprets a number of multi-charactor options.;do m=`echo $n|wc -L` if [ $m -lt 6 ];then echo $n fidone
第十题 批量删除用户
#!/bin/bash[ -f /etc/init.d/functions ] && . /etc/init.d/functionsfor user in oldboy{01..10}do id $user &> /dev/null if [ $? -ne 0 ];then useradd $user password=`mkpasswd -l 8` echo "$password"|passwd --stdin $user echo "$user $password" >>/tmp/password.txt action "$user 创建" /bin/trueelse action "$user 创建" /bin/false fidone