Shell 命令合集
常用 shell 脚本记录
判断输入参数是否是合理参数
#!/bin/bash
port=
read -p "请输入 8184|8185: " port
echo -e '\n'
case $port in
'8184' | '8185')
echo $port;;
*)
echo "请输入 8184|8185"
exit 1;;
esac
判断目录是否存在,不存在则创建
#!/bin/bash
todate=`date +%Y%m%d`
function checkDir() {
if [ ! -d "/home/chenglong/$todate" ];then
mkdir -p /home/chenglong/$todate
fi
}
查询进程号
#!/bin/bash
processName=
pid=
function getPid() {
echo "检测状态"
pid=`ps -ef | grep -n $processName | grep -v grep | awk '{print $2}'`
if [ $pid ]
then
echo "$processName 运行pid:$pid"
else
echo "$processName 未运行"
fi
}
停止进程使用 kill -9
#!/bin/bash
pid=
function stop() {
getPid
if [ $pid ]
then
echo "开始停止程序 $pid "
kill -9 $pid
getPid
if [ $pid ]
then
echo "停止失败"
else
echo "停止成功"
fi
fi
}
备份mysql表
#!/bin/bash
# 备份 MySQL 的 shell 脚本(mysqldump版本)
# 定义变量 user(数据库用户名),passwd(数据库密码),date(备份的时间标签)
# dbname(需要备份的数据库名称,根据实际需求需要修改该变量的值,默认备份 mysql 数据库)
# crontab ‐e 添加到定时任务中
user=root
dbname=jsdoctor_preview
passwd=
date=$(date +%Y%m%d)
# 测试备份目录是否存在,不存在则自动创建该目录
[ ! -d /home/mysqlbackup ] && mkdir /home/mysqlbackup
# 使用 mysqldump 命令备份数据库
# 有时候默认的 socket 会不对,可以使用 netstat -ln | grep mysql 查看 mysql 的 socket 是什么
mysqldump --socket=/tmp/mysql.sock -u"$user" -p"$passwd" "$dbname" > /home/mysqlbackup/"$dbname"-${date}.sql
# 压缩
cd /home/mysqlbackup
tar -zcvf "$dbname"-${date}.sql.tar.gz "$dbname"-${date}.sql
rm "$dbname"-${date}.sql
# 删除7天前的备份文件
find /home/mysqlbackup/ -type f -mtime +7 -exec rm -f {} \;
统计日志中访问最多的10个IP
# access.log 为 nging 的访问日志
gawk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log
统计当前时间前一分钟的访问数
# access.log 为 nging 的访问日志
grep -c $(date -d '-1 minute' +%d/%b/%Y:%H:%M) access.log
统计访问最多的前10个页面($request)
# access.log 为 nging 的访问日志
gawk '{a[$7]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log