• 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
    
  • 相关阅读:
    oracle2
    oracle1
    oracle1
    Java复习2.程序内存管理
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/manastudent/p/15791092.html
Copyright © 2020-2023  润新知