定時任務
應用每天都會產生日志,需要定期清理,如何把這個過程自動化呢。
找到需要刪除的日志文件 find命令
find [path] [expression]
path:目錄地址。
expression:
-options:指定find命令常用選項。
-name:按照文件名查找。
-perm:根據文件權限查找。
-user:按照文件屬性來查找文件。
-group:按照文件屬主來查找文件。
-mtime:-n文件更改時間距現在n天以內,+n文件更改時間距現在n天以前。
-newer:file1!file2,查找更改時間比文件file1新但比file2舊的文件。
-type:b 塊設備文件,d 目錄,c 字符設備文件,p 管道文件,l 符號鏈接文件,f 普通文件。
-size n:查找文件長度為n塊(一塊-312字節)的文件,c表示文件長度以字節計算。
-print:將匹配文件輸出到標準輸出。
-exec:對匹配文件執行shell命令,格式(command {} \;)。
-ok:和exec作用相同,執行每個命令前,給出提示,由用戶確定是否執行。
示例:
find ./ -size 0 exec rm {} \; # 刪除文件大小為0的文件
find ./ -type f -mtime +5 -exec rm {} \; # 刪除更改時間在5日之前的文件
find ./ -name '*.log' -mtime +5 -ok rm {} \; # 在當前目錄中查找所有以.log結尾文件,更改時間在5日以上的文件,并刪除它們,刪除前給出提示。
find與exec一起使用,如果找到的文件過多某些系統會出現溢出錯誤;所以可以結合xargs使用,其每次獲取一部分文件而不是全部。
find ./ size 0 | xargs rm -rf
刪除較早日志腳本:
delete_log.sh
#!/bin/sh
find /opt/web/tomcat9/creditaudit -type f -name '*.log' -mtime +30 | xargs rm -rf
定時執行 crontab
查看當前用戶定時任務:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
特殊符號:
特殊符號:
*:代表所有可能的值。
,:隔開值指定一個范圍,“1,2,3”。
-:表示整數范圍,"1-3"。
/:表示時間間隔頻率,"0-23/2"表示每2個小時執行一次;"*/10"表示每10分鐘執行一次。
常用命令:
crontab -e # 編輯某個用戶的crontab,默認編輯當前用戶。
crontab -l # 顯示用戶crontab文件內容。
crontab -r # 刪除某個用戶的crontab文件。
crontab -i # 在刪除用戶crontab文件時給出確認提示。
執行:
crontab -e
add:
10 0 * * * /opt/web/delete_log.sh >/dev/null 2>&1
SnippetsLab
這是一款很棒的做筆記軟件,類似有道筆記,特別適合保存代碼。
特點:
- 支持直接拷貝代碼,針對不同代碼Java/Python/...語法高亮。
- 支持Markdown語法。
- 支持搜索。
缺點:目前僅僅支持Mac平臺。
三級目錄
支持多種編程語言