转载自:http://blog.csdn.net/shawnhu007/article/details/50971084

最近在一hadoop测试集群运行一个spark streaming程序,然后使用nohup ./execute.sh & 执行让程序后台运行,才几天日志就上G了,如果有问题想要查看日志,显然打开文件是一件很麻烦的事,于是我想办法通过减小文件大小:

1、nohup命令解释:

a、语法:nohup [command] [args] [&]

b、说明:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部,如果不指定重定向,则日志默认输出到当前目录下nohup.out文件中,

一般提交如 :nohup ./execute.sh &  这样日志或输出当前运行目下.nohup.out中

重定向: nohup ./execute.sh >  /home/xxx/log.log 2>&1 & :这样日志会重定向到指定目录下

2 、切分nohup.out,同时不让它无限增长

我这里用的一般提交命令:nohup ./execute.sh &,这样在当前目录就有nohup.out文件了,这时候可以想办法定时将nohup.out切分成,多个小文件,但同时又要使nohup.out不会无限增长下去(一般情况下是程序不能中断的):

a、每天(根据需要设置时间),定时切分前一天的日志,(比如每天大概1g,那么可以么次切分100m左右),

b、切分完后将nohup.out文件情况,保证新的输出日志会不停的继续输出到nohup.out

以上在shell中

current_date=`date -d "-1 day" "+%Y%m%d"`

split  -b 65535000 -d -a 4  nohup.out  ./log/log_${current_date}_   这里使用split命令,将nouhup文件按指定大小切分(65535000b 大概60多M吧,可以自定义大小 ),并分成指定格式(-d -a 4以4位数字形式为后缀以从0000开始,具体可以百度split命令用法),最终输出格式为log_20160610_0001

cat /dev/null > nohup.out  (该命令会瞬间清空nohup.out文件,后续会继续写该文件),将日志定向到/dev/null中

使用重定向输出一样可以这样,只不过换成重定向的文件名即可

将这些命令定义在一个shell文件每天定时运行即可,这样每天日志会被分成若干份,排查也方便,而且如果日志积压过大的话。可以定时删除历史的日志,保留近几天即可

整体代码如下:


  1. #!/bin/sh
  2. #################启动日志切割服务#################
  3. this_path=$(cd `dirname $0`;pwd)
  4. cd $this_path
  5. echo $this_path
  6. current_date=`date -d "-1 day" "+%Y%m%d"`
  7. echo $current_date
  8. split -b 65535000 -d -a 4 /home/.../nohup.out   /home/.../log/log_${current_date}_
  9. cat /dev/null > nohup.out

Linux下nohup日志输出过大问题解决方案的更多相关文章

  1. linux下nohup日志切割方案

    1.nohup命令解释: a.语法:nohup [command] [args] [&] b.说明:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂 ...

  2. Linux下重要日志文件及查看方式

    http://os.51cto.com/art/201108/282184_all.htm   1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...

  3. linux下syslog-ng日志集中管理服务部署记录

    syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...

  4. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  5. Linux下重要日志及查看方式

    1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息,如图1所示: 图1 /var/log/boot. ...

  6. linux下的日志压缩脚本

    linux下的日志压缩脚本: #!/bin/bash #第一步:先定义项目列表如下: projects="project-a project-b project-c project-d&qu ...

  7. Linux下rsyslog日志收集服务环境部署记录

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  8. Linux下Rsyslog日志远程集中式管理

    Rsyslog简介 Rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计.rsyslog能够接受从各种各样的来源,将其输入,输出的结果到 ...

  9. 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

    本文摘自:(http://blog.csdn.net/stevencn76/article/details/6246162) 分类: Java技术专区2011-03-13 12:25 5017人阅读  ...

随机推荐

  1. 多进程于多线程的区别,cpu密集型适合用什么

    多线程:在单个程序中同事运行多少个线程完成不同的工作,成为线程. 线程共享内存空间,进程的内存是独立的, 同一个进程的线程间可以直接交流: 两个进程想通信,必须通过一个中间代理来实现, 一个线程可以控 ...

  2. Semaphore计数信号量

    ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semp = new Semaphore(5); for ...

  3. Python之路PythonThread,第二篇,进程2

    python3   进程2 僵尸进程处理方法: 3,创建二级子进程处理 4,在父进程中使用信号处理的方法忽略子进程发来的信号: signal(SIGCHLD,DIG,IGN) # 创建二级子进场解决僵 ...

  4. Mariadb使用xtrabackup工具备份数据脚本

    #!/bin/bash#这个脚本用来备份SQL文件: sql_home="/home/mysql"sql_bak_log="$sql_home/xtrabackup.lo ...

  5. tumblr热度

  6. [LeetCode&Python] Problem 371. Sum of Two Integers

    Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...

  7. Gym - 101480 CERC 15:部分题目题解(队内第N次训练)

    -------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...

  8. 结对第2次作业——WordCount进阶需求

    作业题目链接 队友链接 Fork的同名仓库的Github项目地址 具体分工 玮哥负责命令参数判断.单词权重统计,我只负责词组词频统计(emmmm). PSP表格 预估耗时(分钟) 实际耗时(分钟) P ...

  9. Learning by doing——小黄杉获得感想

    突然想起来前一个月答应了栋哥要写一篇博客的,后来一直忙于复习就忘了. 不过答应了的事就要完成嘛. 获得感言 首先就是非常高兴的了,这也是对我的能力的一种肯定 这次的获得原因是期中考最快满分,emmm侧 ...

  10. Blender 画正四面体

    正四面体打开“添加网格”菜单(Shift + A),然后选择“锥形”.将“顶点数”设置为3,将“半径1”保留为默认值1.000,将“半径2”设置为0.000.现在,将深度设置为 {根号2,约等于1.4 ...