Shell沒基礎,可是須要實現nginx日誌每日切割的效果,在網上找了一些照搬都沒怎麼成功,最後本身試驗出來的纔是真正能用的不是嘛
參考文章:https://www.cnblogs.com/kaitu...html
1.在某目錄下建立須要定時執行的腳本linux
# cd /etc/nginx/mylogs
2.建立腳本名爲cut-log.sh的腳本nginx
# vim cut-log.sh
3.保存下面的腳本到文件中()vim
#!/bin/bash ## 零點執行該腳本 ## Nginx 日誌文件所在的目錄 LOGS_PATH=/home/abc/logs ##nginx.pid所在目錄 pid_path="/var/run/nginx.pid" ## 獲取昨天的 yyyy-MM-dd YESTERDAY=$(date -d last-day +%Y%m%d) ## 執行mv操做 mv ${LOGS_PATH}/abc.access.log ${LOGS_PATH}/abc.access.log_${YESTERDAY}.log ## 向 Nginx 主進程發送 USR1 信號。USR1 信號是從新打開日誌文件 #kill -USR1 $(cat /var/run/nginx.pid) kill -USR1 `cat ${pid_path}`
4.保存退出,容許Shell執行它(可在命令窗口模式下觀察文件是否變色成可執行文件)bash
# chmod 755 cut-log.sh
5.使用 crontab -e 新增一個定時任務,在其中增長執行這個腳本:線程
# 0 0 * * * /etc/nginx/mylogs/cut-log.sh
到這基本上配置完畢了,linux系統的cron守護線程會在對應的時間執行任務。保存成功退出,會提示crontab: installing new crontab
使用crontab命令有可能報Centos crontab command not found的錯誤,這時須要安裝相應的軟件包:日誌
# yum install vixie-cron