springboot項(xiàng)目使用nohup將日志指定輸出文件過(guò)大問(wèn)題及解決辦法
springboot項(xiàng)目使用nohup將日志指定輸出文件過(guò)大解決辦法
假設(shè)目前有一個(gè)start.sh文件,內(nèi)容為以下:
#!/bin/sh
jarname='app-gmt'
pid=`ps aux | grep $jarname | grep -v grep | grep java | awk '{print $2}'`
if [ "$pid" == "" ]
then
echo $jarname"進(jìn)程不存在, 直接啟動(dòng)"$jarname"系統(tǒng)"
else
echo "準(zhǔn)備殺掉"$jarnamed"進(jìn)程: "$pid
kill -9 $pid
fi
nohup java -jar $jarname.jar --spring.profiles.active=online -server -Xms512m -Xmx1024m -Xss256k >> ./run.log 2>&1 &
echo "start success!!!"注意看 nohup … >> ./run.log 2>&1 & 這一行,這里是將該進(jìn)程的日志全部輸出到指定的文件里,應(yīng)該有不少人是這么做的。
那么這樣做會(huì)出現(xiàn)一種情況,就是run.log會(huì)越來(lái)越大,直到爆炸。
該怎么解決呢?
一共分為兩個(gè)步驟:
1.先創(chuàng)建一個(gè)清理日志文件的腳本 1.直接清除方式 2.保留部分方式 2.再創(chuàng)建一個(gè)定時(shí)任務(wù)(比如凌晨五點(diǎn)執(zhí)行一次腳本)
下面對(duì)這兩部進(jìn)行細(xì)說(shuō):
第一點(diǎn):這點(diǎn)其實(shí)是要看個(gè)人的具體需求的,比如清除的條件,可以是文件達(dá)到多大進(jìn)行處理,處理時(shí)有的會(huì)保留一部分,有的會(huì)全清掉。
1.先說(shuō)直接清除方式:
先創(chuàng)建一個(gè)腳本文件,內(nèi)容如下:
#!/bin/bash
# 設(shè)置文件路徑
FILE_PATH="/home/program/app/run.log"
# 設(shè)置文件大小閾值,單位為字節(jié)
THRESHOLD_SIZE=$((100 * 1024 * 1024))
# 獲取文件大小
FILE_SIZE=$(du -b "$FILE_PATH" | cut -f1)
# 檢查文件是否超過(guò)閾值
if [ $FILE_SIZE -gt $THRESHOLD_SIZE ]; then
# 文件超過(guò)閾值,清空文件內(nèi)容
echo -n > "$FILE_PATH"
echo "File has been cleaned up."
else
echo "File size is within threshold."
fi如果日志文件達(dá)到了100M,就清空文件內(nèi)容。
記得把FILE_PATH改為你自己的日志文件路徑
然后加入到定時(shí)任務(wù):
crontab -e
內(nèi)容如下:
0 5 * * * /data/log_clean/clean_app_log_file.sh
記得把路徑替換成你自己的文件路徑
2.保留部分方式
還是創(chuàng)建一個(gè)腳本文件:
log=`tail -n 10000 nohup.out`; echo "$log" > /home/program/app/run.log
記得把路徑換成你自己的日志文件路徑
然后創(chuàng)建定時(shí)任務(wù),跟直接清除方式一樣。
到此這篇關(guān)于springboot項(xiàng)目使用nohup將日志指定輸出文件過(guò)大解決辦法的文章就介紹到這了,更多相關(guān)springboot nohup文件過(guò)大內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java list與set中contains()方法效率案例詳解
這篇文章主要介紹了Java list與set中contains()方法效率案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Java實(shí)現(xiàn)簡(jiǎn)易的洗牌和發(fā)牌功能
本文主要介紹了Java實(shí)現(xiàn)簡(jiǎn)易的洗牌和發(fā)牌功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
如何解決Project SDK is not defined問(wèn)題
這篇文章主要介紹了如何解決Project SDK is not defined問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
springboot設(shè)置多環(huán)境配置文件
本文介紹了在Spring Boot項(xiàng)目中配置多個(gè)環(huán)境(如dev、test、prod)的方法,可以通過(guò)創(chuàng)建多個(gè)`.yml`文件來(lái)實(shí)現(xiàn),每個(gè)文件對(duì)應(yīng)一個(gè)環(huán)境,并在`application.yml`中指定激活的配置文件,感興趣的朋友跟隨小編一起看看吧2025-12-12
SpringBoot項(xiàng)目中使用OkHttp獲取IP地址的示例代碼
OkHttp?是一個(gè)由?Square?開發(fā)的高效、現(xiàn)代的?HTTP?客戶端庫(kù),用于?Android?和?Java?應(yīng)用程序,它支持?HTTP/2?和?SPDY?等現(xiàn)代網(wǎng)絡(luò)協(xié)議,并提供了多種功能和優(yōu)化,本文給大家介紹了SpringBoot項(xiàng)目中如何獲取IP地址,需要的朋友可以參考下2024-08-08
Java超詳細(xì)講解接口的實(shí)現(xiàn)與用法
Java接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為2022-04-04
關(guān)于HashMap 并發(fā)時(shí)會(huì)引起死循環(huán)的問(wèn)題解析
JDK1.8之前采用頭插,即在鏈表結(jié)構(gòu)上每次都把數(shù)據(jù)放在鏈表頭部。JDK1.8采用尾插方法,很多朋友在學(xué)習(xí)Java并發(fā)容器和框架時(shí),看到為什么要使用ConcurrentHashMap時(shí)不知道究其原因,今天小編通過(guò)本文給大家介紹下HashMap 并發(fā)死循環(huán)問(wèn)題,一起看看吧2021-05-05
SpringBoot集成FastDFS依賴實(shí)現(xiàn)文件上傳的示例
這篇文章主要介紹了SpringBoot集成FastDFS依賴實(shí)現(xiàn)文件上傳,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Java中的緩沖區(qū)(Buffer)及其作用是什么詳解
緩沖區(qū)用于提升I/O效率,Java提供字符流、字節(jié)流及ByteBuffer類型,擁有capacity、position等屬性,這篇文章主要介紹了Java中的緩沖區(qū)(Buffer)及其作用是什么的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-05-05
springboot實(shí)現(xiàn)配置多環(huán)境yml方式
在SpringBoot項(xiàng)目中,通過(guò)創(chuàng)建不同的YAML配置文件來(lái)實(shí)現(xiàn)多環(huán)境配置是一種常見且有效的方法,這些配置文件包括application.yml、application-dev.yml、application-prod.yml等,分別對(duì)應(yīng)不同的開發(fā)環(huán)境,如開發(fā)環(huán)境、生產(chǎn)環(huán)境2024-11-11

