nohup.out日志文件太大了,且一直增長,命令查看日志受阻
目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、南寧網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
①切割大文件變成多個(gè)小文件
②每天定時(shí)保存前一天的日志,重新記錄當(dāng)天日志
1.利用split命令切割
①按文件大小切割大文件:
切割文件:將ohup.out文件每500M切割一個(gè)文件放到/home/nginx/logs/newlog/目錄下
②按文件行數(shù)切割大文件:
查詢文件行數(shù):
wc -l b.log
2038711 b.log
按50W行切割一個(gè)文件:
split -l 500000 -d -a 4 /home/nginx/logs/b.log /home/nginx/logs/newlog/
2.定時(shí)備份前一天日志,重新記錄當(dāng)天日志splitlog.sh
3.定時(shí)執(zhí)行
查看定時(shí)任務(wù):
crontab -l
編輯定時(shí)任務(wù):
crontab -e
重啟定時(shí)任務(wù):
刪除10天以前的日志文件,此日期為文件本身的時(shí)間,非日志內(nèi)容時(shí)間
linxu下的sh命令相當(dāng)于是shell命令語言的解釋器。下面由我為大家整理了linux的sh命令的詳細(xì)解釋的相關(guān)知識(shí),希望對(duì)大家有幫助!
一、Linux中的sh命令的詳細(xì)解釋
sh命令是shell命令語言解釋器,執(zhí)行命令從標(biāo)準(zhǔn)輸入讀取或從一個(gè)文件中讀取。通過用戶輸入命令,和內(nèi)核進(jìn)行溝通!Bourne Again Shell (即bash)是自由軟件基金會(huì)(GNU)開發(fā)的一個(gè)Shell,它是Linux系統(tǒng)中一個(gè)默認(rèn)的Shell。Bash不但與Bourne Shell兼容,還繼承了C Shell、Korn Shell等優(yōu)點(diǎn)。
語法
bash [options] [file]
選項(xiàng)
-c string:命令從-c后的字符串讀取。
-i:實(shí)現(xiàn)腳本交互。
-n:進(jìn)行shell腳本的語法檢查。
-x:實(shí)現(xiàn)shell腳本逐條語句的跟蹤。
二、Linux中的sh命令的具體例子
使用-x選項(xiàng)跟蹤腳本調(diào)試shell腳本,能打印出所執(zhí)行的每一行命令以及當(dāng)前狀態(tài):
[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
+ DEFINE=30
+ cat /var/log/secure
+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
++ cat /root/satools/black.txt
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.16=1427
++ awk -F= '{print $1}' + IP=121.42.0.16
++ echo 121.42.0.16=1427
++ awk -F= '{print $2}'
+ NUM=1427
+ '[' 1427 -gt 30 ']'
+ grep 121.42.0.16 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.16
+ echo vsftpd:121.42.0.16
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.72=276
++ awk -F= '{print $1}'
+ IP=121.42.0.72
++ awk -F= '{print $2}'
++ echo 121.42.0.72=276
+ NUM=276 + '[' 276 -gt 30 ']'
+ grep 121.42.0.72 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.72
+ echo vsftpd:121.42.0.72
三、Linux中對(duì).sh文件的操作命令
1、創(chuàng)建test.sh文件
touch test.sh
2、編輯sh文件
vi test.sh
3、保存退出
敲擊esc, 然后輸入 :wq ,回車退出
4、添加可執(zhí)行權(quán)限,當(dāng)然默認(rèn)就是可執(zhí)行的。
chmod +x test.sh
5、運(yùn)行文件
(1)./test.sh
(2)sh test.sh
6、刪除文件
rm test.sh
sh或是執(zhí)行腳本,或是切換到sh這個(gè)bash里,默認(rèn)的shell是bash,你可以試試tcsh啊,csh啊,ksh,zsh什么的,看看別的shell是什么樣子的。當(dāng)然,linux中sh是鏈接到bash上的,所以sh與bash在功能上是沒有區(qū)別的。
還有就是在執(zhí)行腳本的時(shí)候是用sh + 腳本名的方式來執(zhí)行,其實(shí),大部分的時(shí)候,簡(jiǎn)單腳本只要權(quán)限設(shè)置正確,可以直接執(zhí)行,不需要sh命令的
基本思路
接收參數(shù)n和文件名
head命令 去文件n行內(nèi)容 輸出為file1
wc計(jì)算文件行數(shù) 減去 n
使用tail 取減去n的行數(shù) 輸出到file2
當(dāng)然也可以使用sed命令實(shí)現(xiàn)
linux shell腳本按日期 切割pm2日志 (解決定時(shí)任務(wù)pm2命令無法執(zhí)行問題,原因:沒有環(huán)境變量)
首先在輸入命令echo $PATH 拿到當(dāng)前系統(tǒng)環(huán)境變量
然后在/root/.pm2目錄新建cutlog.sh文件(注意:第一句一定要有,設(shè)置當(dāng)前shell腳本里面的環(huán)境變量,沒有的話pm2命令會(huì)無法執(zhí)行)
PATH=/root/.nvm/versions/node/v6.10.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
CURPATH=/root/.pm2
OUTPATH=/home/cutLogsDate
mkdir -p $OUTPATH
INPUTPATH=$CURPATH/logs
reloadProcessLogs(){
logFilesGame="${INPUTPATH}/$1"
yesterday=`date -d last-day '+%Y%m%d_'$2`
logOfLastDay=$OUTPATH/$yesterday.log
mv $logFilesGame $logOfLastDay
touch $logFilesGame
echo "切割$1成功"
}
reloadProcessLogs 'game-out-0.log' 'game_out'
pm2 reloadLogs設(shè)置定時(shí)任務(wù)
輸入crontab -e命令編輯
0 3 * * * sh /root/.pm2/cutlog.sh