寫在開始:感謝
https://blog.csdn.net/andypan1314/article/details/74576180
和https://blog.csdn.net/weixin_38111957/article/details/81154333
給與的靈感和教程,感謝。
(前置:必須要找到你nginx服務器的pid和access.log、error.log位置)
1、目的:實現nginx按日生成access.log和error.log日志文件
2、場景:這個日志隨着時間的增長,訪問量越來越大的情況下,文件會越來越大。對於日志分析很會痛苦,這個時候寫一個定時任務,這樣豈不是完美。
3、實現思路:shell腳本+定時任務+nginx信號控制,完成日志定時切割
4、在你需要保存日志或者是其他目錄,新建一個shell腳本。一般shell腳本都是.sh來標識:
1、創建一個文件,然后使用vim編輯該文件,編輯內容如下:
touch /www/w***ux/nginx/logs/nginxsavelog_byday.sh chmod -R 755 /www/w***ux/nginx/logs/nginxsavelog_byday.sh
2、設置定時任務 輸入命令"crontab -e"來設置linux定時任務 ,寫入設置如下:
* 0 * * * /bin/sh /www/w***ux/nginx/logs/nginxsavelog_byday.sh,前面時間可以隨意更改
3、shell腳本如下:(此腳本已分別切割access.log和error.log兩個日志文件)
#!/bin/bash #安裝目錄下日志文件 base_path='/www/w***ux/nginx/logs/access.log' base_path2='/www/w***ux/nginx/logs/error.log' #需要保存的目錄位置 log_path='/www/w****ux/nginx/logs/nginx_logs_byday' #獲取月份 log_month=$(date -d yesterday +"%Y%m") #獲取當天日期 log_day=$(date -d yesterday +"%d") #在指定位置創建文件夾 mkdir -p $log_path/$log_month #將安裝目錄下的日志文件,移動到指定存儲位置 mv $base_path $log_path/$log_month/access_$log_day.log mv $base_path2 $log_path/$log_month/error_$log_day.log #再使用信號控制切割日志 kill -USR1 `cat /www/w***ux/nginx/logs/nginx.pid`
4、測試一遍:執行腳本
$ /bin/sh nginxsavelog_byday.sh
在/www/w****ux/nginx/logs/ 下面生成【nginx_logs_byday/201811/】目錄,如下:

5、測試完畢,將腳本執行命令放入定時器:(使用vim和i命令追加)
$ cd /var/spool/cron $ vi root # i 追加sh命令 5 0 * * * /www/w****ux/nginx/logs/nginxsavelog_byday.sh
6、結束,次日查看生成日志文件。
