背景,java项目,一般在运行JAVA程序时需要用到nohup命令来实现后台启动日志,默认保存在当前目露nohup.out文件。但是有些程序输出nohup文件会出现过大的情况。

在此解决如下:

1,在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 > 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

2,添加定时任务

crontab -e

0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null #添加定时任务:每周第一天的1点执行一次

注:

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、split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

选项

-b:值为每一输出档案的大小,单位为 byte。

-C:每一输出档中,单行的最大 byte 数。

-d:使用数字作为后缀。同时也可以使用-a length来指定后缀的长度:

-l:值为每一输出档的列数大小。

例如:

生成一个100k的文件,然后用split切分(格式datafile201703230000)。

# dd if=/dev/zero bs=100k count=1 of=date.file

# split -b 10k -d -a 4 ./date.file ./logs/nohup$(date +\%Y\%m\%d)log

# cd logs/ ;ls

nohup20170323log0002 nohup20170323log0006

nohup20170323log0003 nohup20170323log0007

nohup20170323log0000 nohup20170323log0004

nohup20170323log0001 nohup20170323log0005

linux中nohup 与 & 的区别

Linux/Unix下,通常只有守护进程可在脱离终端的情况下能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出.当终端退出后,由该终端启动的后台程序自动退出. 若想命令在后台 ...

Linux中nohup和&的用法和区别

在Linux执行任务时,如果键入Ctrl+C退出进行其他任务或者关闭当前session 当前任务就会终止 要想不让进程停止或者让进程在后台运行,就需要一些命令,nohup和&就是一种非常好的方 ...

linux中WDCP的日志彻底删除技巧

apache或nginx都有开关默认日志,一个是正常访问日志,一个是错误的日志,目录在 /www/wdlinux/nginx-1.0.15/logs /www/wdlinux/httpd-2.2.22 ...

Linux中根据访问日志统计访问量最高的前N个IP

前段时间面试中被问到如上问题,日常不怎么注意积累,以此谨记. 访问IP 页面[nxuser@im440-zh test]$ vi log 135.252.172.181 page1 136.252.1 ...

linux中日志介绍

linux日志 linux日志大多是以明文存储,一般存储在/var/log目录中,linux系统中主要有三个日志子系统:连接时间日志,进程统计日志,错误日志. 连接时间日志 连接时间日志是有多个程序执 ...

linux系统中如何查看日志(转)

cat tail -f 日 志 文 件 说    明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安 ...

linux系统中如何查看日志 (常用命令2)

cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...

linux系统中如何查看日志 (常用命令)

cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...

(转)linux中项目部署和日志查看

1 查找进程 ps -ef | grep java   查看所有关于java的进程 root     17540     1  0  2009 ?        01:42:27 /usr/java/ ...

随机推荐

swfupload 参数说明

一.配置参数对象中的常用属性及说明 属性 类型 默认值 描述 upload_url String   处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当 ...

DWZ(JUI) 教程 左侧栏默认是关闭状态的问题

DWZ(JUI) 教程 左侧栏默认是关闭状态的问题,初始化是全屏状态,只需简单处理就可以了 $(function(){ DWZ.init("dwz.frag.xml", { log ...

应用之星在线app开发平台,菜鸟也会做应用

看着各类应用平台玲琅满目的应用,你是否幻想过,如果里面能有一款我开发的应用是件多NB的事,平凡的你肯定会说,我又不会设计又不会代码,怎么可能?现在告诉你,这不是幻想,即使你不会设计也不会代码,一样可以 ...

使用Gulp实现前端构建自动化

使用Gulp实现前端构建自动化 安装 一.安装NodeJs Gulp的安装依赖于NodeJs的npm安装管理器 安装包下载地址 关于npm命令: 1. npm install ...

flink1.7自定义source实现

flink读取source data 数据的来源是flink程序从中读取输入的地方.我们可以使用StreamExecutionEnvironment.addSource(sourceFunction) ...

[转帖]Docker save and load镜像保存

Docker save and load镜像保存 docker save 和 load 以及 imp ...

[daily][samba] smbclient使用

用的也不是太明白,反正凑合用吧. 在用之前,只得到了两个信息,1:ip 192.168.30.9.    2:可以免密登录. 1.  用这个命令看一看,主要是找到这个目录:Anonymous ┬─[t ...

level1 - unit 1 - 句子结构

preface 学习英语做为一种爱好,就是希望有一天能够和老外流畅沟通,目前来看,日常沟通还是没有问题的和我的外教. 知识日积月累,现在就把以前学习的(从初中到现在)知识总结下.每天一更,更到单元总结 ...

HDU2222:Keywords Search——题解

http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意: 给定 n 个长度不超过 50 的由小写英文字母组成的单词,以及一篇长为 m 的文章,问有多少个 ...