开发者

解决Linux中nohup.out日志过大问题

目录
  • linux中nohup.out日志过大问题
    • 注意事项
  • 如何处理nohup.out的文件过大
    • 处理方法
  • 总结

    Linux中nohup.out日志过大问题

    编程客栈于Linux中nohup.out日志过大问题,可以通过设置定时任务来定期清理,具体操作是在nohup.out 所在目录创建一个ClearNohup.sh 脚本,通过定时任务执行该脚本让其每周清理一次,防止nohup文件过大。

    #!/bin/bash
    # Author: Ljohn
    # Last Update: 2018.02.24
    # Description: nohup.out 日志分割
     
    this_path=$(cd `dirname $0`;pwd)   #根据脚本所在路径
    current_date=`date -d "-1 day" "+%Y%m%d"`   #列出时间
    cd $this_path
    echo $this_path
    echo $current_date  
     
    do_split () {
        [ ! -d logs ] && mkdir -p logs
        split -b 10m -d -a 4 ./nohup.out   ./logs/nohup-${current_date}  #切分10兆每块至logs文件中,格式为:nohup-xxxxxxxxxx
        if [ $? -eq 0 ];then
            echo "Split is finished!"
        else
            echo "Split is Failed!"
            exit 1
        fi
    }
     
    do_del_log() {
        find ./logs -type f -ctime +7 | xargs rm -rf #清理7天前创建的日志
        cat /dev/null >http://www.devze.com; nohup.out #清空当前目录的nohup.out文件
    }
     
    if do_split ;then
        do_del_log
        echo "nohup is split Success"
    else
        echo "nohup is split Failure"
        exit 2
    fi
     
    # crontab -e 添加定时任务:每周第一天的1点执行一次
    #0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null
    

    第二步执行定时任务

     crontab -e    #添加定时任务:每周第一天的1点执行一次
    

    注意事项

    如果想通过手动执行该脚本来达到清理的目的,需要设置该脚本的权限为可执行

    如何处理nohup.out的文件过大

    linux中使用nohup的方式启动Java程序导致控制台的输出会加载到nohup.out文件里,日积月累导致文件过大占用硬盘。

    处理方法

    创建清理文件clear.sh 内容如下:

    this_path=$(cd `dirname $0`;pwd) #根据脚本所在路径
    current_date=`date -d "-1 day" "+%Y%m%d"` #列出时间
    cd $this_path
    echo $this_path
    echo $current_date
    do_split () {
            [ ! -d logs ] && mkdir -p logs
          javascript  #切分10兆每块至logs文件中,格式为:nohup-xxxxxxxxxx   ./logs/nohup-${current_date}表示当前目录的logs可以自主修改
            split -b 10m -d -a 4  nohup.out的文件位置  ./logs/nohup-${current_date} 
            
            if [ $? -eq 0 ];then
                    echo "Split is finished!"
            else
                    echo "Split is Failed!"
                    exit 1
            fi
    }
    do_del_log() {
    		#清理3天前创建的日志   ./logs表示当前目录的logs可以自主修改
            fihttp://www.devze.comnd ./logs -type f -ctime +3 | xargs rm -rf 
            cat /dev/null > nohup.out的文件位置 #清空当前目录的nohup.out文件
    }
    if do_split ;then
    do_del_log
    echo "nohup 切割成功"
    else
            echo "nohup 切割失败"
            exit 2
    fi
    

    在linux的crontab中添加任务

    sudo /etc/init.d/cron start 启动crontab
    sudo /etc/init.d/cron stop 停止crontab
    sudo /etc/init.d/cron status crontab状态
    sudo /etc/init.d/cron restart 重启crontab

    在 vi /etc/crontab中添加任务

    31 1   * * *   root    /data/clearNohup/clearPricenohup.sh &>/dev/null  #每日1点31执行 ,根据需要自行修改

    整体像这样

    解决Linux中nohup.out日志过大问题

    重启crontab即可

    可以测试一下 sh clear.sh &>/dev/null

    总结

    以上为个人经验,希望能给大python家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新运维

    运维排行榜