Linux使用crontab實(shí)現(xiàn)定時(shí)拆分日志與清理過(guò)期文件
簡(jiǎn)介
在Linux中可以使用crontab
來(lái)定時(shí)執(zhí)行腳本。crontab
是一個(gè)用于管理定時(shí)任務(wù)的工具,可以讓在特定的時(shí)間間隔內(nèi)自動(dòng)運(yùn)行腳本或命令。
需求: 在Linux中每分鐘寫入一條信息到指定文件中,使用cron
來(lái)定期執(zhí)行一個(gè)寫入命令或腳本
在Linux中,定時(shí)執(zhí)行腳本具有多種作用和用途,包括但不限于以下幾個(gè)方面:
自動(dòng)化任務(wù)
:定時(shí)執(zhí)行腳本可用于自動(dòng)化重復(fù)性的任務(wù)。例如,定時(shí)備份數(shù)據(jù)、定時(shí)清理臨時(shí)文件、定時(shí)運(yùn)行系統(tǒng)維護(hù)任務(wù)等。通過(guò)將這些任務(wù)腳本定期執(zhí)行,可以減輕管理員的工作負(fù)擔(dān),并確保任務(wù)按計(jì)劃執(zhí)行,提高系統(tǒng)的可靠性和穩(wěn)定性。
監(jiān)控和報(bào)告
:定時(shí)執(zhí)行腳本可用于監(jiān)控系統(tǒng)狀態(tài)、資源使用情況和日志文件,并生成相應(yīng)的報(bào)告。例如,定時(shí)檢查服務(wù)器的CPU使用率、磁盤空間占用情況、網(wǎng)絡(luò)連接狀態(tài)等,并將報(bào)告發(fā)送給管理員或其他相關(guān)人員。這樣可以幫助及時(shí)發(fā)現(xiàn)問題并采取適當(dāng)?shù)拇胧?/p>
數(shù)據(jù)處理和分析
:定時(shí)執(zhí)行腳本可用于處理和分析數(shù)據(jù)。例如,定期從外部數(shù)據(jù)源獲取數(shù)據(jù),并將其導(dǎo)入到數(shù)據(jù)庫(kù)中進(jìn)行進(jìn)一步處理和分析。這對(duì)于數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)分析等任務(wù)非常有用。
定時(shí)提醒和通知
:定時(shí)執(zhí)行腳本可用于生成提醒和通知。例如,定時(shí)發(fā)送電子郵件或短信提醒,以及生成日程安排或事件提醒。這對(duì)于個(gè)人、團(tuán)隊(duì)或組織來(lái)管理任務(wù)、安排會(huì)議或發(fā)送重要通知非常有幫助。
自定義批處理任務(wù)
:定時(shí)執(zhí)行腳本可用于運(yùn)行自定義的批處理任務(wù)。根據(jù)特定的需求和工作流程,你可以編寫腳本來(lái)執(zhí)行一系列操作,如文件處理、數(shù)據(jù)轉(zhuǎn)換、編譯構(gòu)建等。通過(guò)定時(shí)運(yùn)行這些腳本,可以簡(jiǎn)化復(fù)雜的工作流程并提高工作效率。
總之,定時(shí)執(zhí)行腳本在Linux系統(tǒng)中具有廣泛的應(yīng)用。通過(guò)利用定時(shí)任務(wù),可以實(shí)現(xiàn)自動(dòng)化、監(jiān)控、報(bào)告、數(shù)據(jù)處理
等各種任務(wù),從而提高系統(tǒng)的可靠性、效率和管理效果
一、準(zhǔn)備工作
1.1 創(chuàng)建寫入腳本
注意:首先,在home目錄下創(chuàng)建一個(gè)名為testscript.sh的腳本文件,并添加以下內(nèi)容:
#!/bin/bash echo "This is a log message $(date)" > /home/out.log
在這個(gè)示例中,腳本會(huì)將一條帶有當(dāng)前日期和時(shí)間的日志消息附加到指定的日志文件中。確保將/home/out.log
替換為實(shí)際的日志文件路徑。
保存并關(guān)閉文件。
1.2 設(shè)置執(zhí)行權(quán)限
注意:在執(zhí)行腳本之前,確保為其設(shè)置執(zhí)行權(quán)限。在終端中運(yùn)行以下命令:
chmod 755 /home/testscript.sh
1.3 添加定時(shí)任務(wù)
crontab
表的每一行代表一個(gè)定時(shí)任務(wù),定時(shí)任務(wù)語(yǔ)法格式如下:
* * * * * command 第一個(gè)*表示分鐘數(shù)(0-59) 第二個(gè)*表示小時(shí)數(shù)(0-23) 第三個(gè)*表示一個(gè)月中的第幾天(1-31) 第四個(gè)*表示月份(1-12) 第五個(gè)*表示一周中的第幾天(0-7,0和7都表示星期日) command是要執(zhí)行的命令或腳本
例如,要在每天的凌晨12點(diǎn)執(zhí)行腳本,添加以下行到cron
表中:
我們可以在 Crontab
的命令中添加重定向符號(hào) ">>" 將輸出重定向到指定的文件中。例如:
crontab -l # 查看當(dāng)前是否存在任務(wù) crontab -e # 編輯 指定執(zhí)行哪個(gè)腳本以及執(zhí)行時(shí)間 # 每日凌晨執(zhí)行腳本 0 0 * * * /home/testscript.sh >> /home/testscript.log 2>&1
1.4 配置生效
service crond reload //重新載入配置 前提是crond已經(jīng)啟動(dòng)
二、Tomcat日志 按每天分割
2.1 創(chuàng)建一個(gè) sh文件
創(chuàng)建腳本
#創(chuàng)建腳本 vim auto-deal-log.sh
腳本內(nèi)容:
#! /bin/bash echo "date is `date +%Y-%m-%d,%H:%M:%S`" echo "tomcat-sca日志分割" sca_log_path=/home/admin/sca/tomcat-sca/logs cp $sca_log_path/catalina.out $sca_log_path/catalina.`date +%Y-%m-%d`.log # 清空tomcat默認(rèn)日志輸出文件 echo "" > $sca_log_path/catalina.out echo "nginx日志分割" nginx_log_path=/home/admin/mid/nginx/logs cp $nginx_log_path/access.log $nginx_log_path/access.`date +%Y-%m-%d`.log cp $nginx_log_path/error.log $nginx_log_path/error.`date +%Y-%m-%d`.log echo "" > $nginx_log_path/access.log echo "" > $nginx_log_path/error.log # 查找并清理不需要的文件 echo "清理tomcat*,保留30天" find /home/admin/sca/tomcat*/logs/ -mtime +30 -name "*" -exec rm -rf {} \; echo "清理batch日志,保留30天" find /home/admin/sca/log/batch/ -mtime +30 -name "*" -exec rm -rf {} \; echo "清理xxl-job日志,保留7天" find /home/admin/sca/log/xxl-job/ -mtime +7 -name "*" -exec rm -rf {} \; echo "清理auto-split-deal-log日志,保留7天" find /home/admin/sca/log/auto-split-deal-log/ -mtime +7 -name "*" -exec rm -rf {} \; echo "清理視頻文件,保留5天" find /home/admin/sca/ccrecord/ -mtime +5 -name "*.wev" -exec rm -rf {} \; echo "日志分割及清理完畢"
2.2 設(shè)置執(zhí)行權(quán)限
chmod +x auto-deal-log.sh
2.3 設(shè)置crontab指令,指定每日定時(shí)任務(wù)
# 每日凌晨執(zhí)行分割日志腳本 0 0 * * * /opt/sh/auto-deal-log.sh >> /path/to/auto-deal-log.log 2>&1
2.4 配置生效
service crond reload //重新載入配置 前提是crond已經(jīng)啟動(dòng)
到此這篇關(guān)于Linux使用crontab實(shí)現(xiàn)定時(shí)拆分日志與清理過(guò)期文件的文章就介紹到這了,更多相關(guān)Linux crontab命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux驅(qū)動(dòng)開發(fā)中常用函數(shù)copy_from_user open read write詳解
本文解說(shuō)了inux驅(qū)動(dòng)開發(fā)函數(shù)copy_from_user ,open ,read write幾個(gè)常用函數(shù),現(xiàn)在一起來(lái)學(xué)習(xí)他們的使用過(guò)程吧2021-08-08Xshell遠(yuǎn)程連接linux詳細(xì)步驟(小白必備)
本文主要介紹了Xshell遠(yuǎn)程連接linux詳細(xì)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Linux系統(tǒng)配置網(wǎng)絡(luò)詳細(xì)介紹
大家好,本篇文章主要講的是Linux系統(tǒng)配置網(wǎng)絡(luò)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01Linux環(huán)境下python2.7.6升級(jí)python3.5.2
本篇文章主要介紹了centos7下python2.7.5升級(jí)到3.5.2,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04OneinStack一鍵安裝PHP/JAVA/HHVM和超詳細(xì)的VPS手動(dòng)安裝LNMP的方法
OneinStack一鍵工具提供多個(gè)Tomcat版本(Tomcat-8,Tomcat-7) 和多個(gè)JDK版本(JDK-1.8,JDK-1.7,JDK-1.6),支持CentOS 6、7下HHVM安裝。如果還有為無(wú)法成功配置好Java或者HHVM環(huán)境而煩惱的話,OneinStack就可以助你一臂之力2017-07-07centos下yum搭建安裝linux+apache+mysql+php環(huán)境的方法
這篇文章主要介紹了centos下yum搭建安裝linux+apache+mysql+php環(huán)境的方法,本文分步驟給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10smarty實(shí)現(xiàn)PHP靜態(tài)化的兩種方法分享
用smarty實(shí)現(xiàn)純靜態(tài)化的文件發(fā)布有兩種方法,也就是純HTML文件生成的方法,包括以下兩種方法,需要的朋友可以參考下2012-02-02