Linux General Automatic Log cleanup Script 1. this article is a simplified script for automatic system deployment. The main function is to clear logs from all directories. based on the given log directory, the deletion time is combined with crontab to clean up the log. After the cleaning is complete, generate a monthly cleanup log in/var/log/deltelog/. 3. because the script uses mtime (last modification time) to delete expired backups, shell tips are not restricted by file names. find-type f-print outputs the searched files based on line breaks or spaces, and different responses are made under different sh, if you do not perform the delete change operation with xargs, it will be affected. Therefore, you need to add-print0 to use null as the boundary symbol, only dare to marry xargs-o to format the input and use the find statement following the minimum result set principle. The find expression is left to right, make sure that the filter symbol on the far left can filter the maximum data. You can add it to the crontab shell as needed. Script #! /Bin/sh ########################### delete log blog.duplicatedcode.com # in_day_num: like 1 2 is delete 2day ago logs # in_log_path like tomcat log home ########################## # in_log_path =$ {1} in_day_num =$ {2} tmp_delete_log =/var/log/deletelog/"'date + % Y % M '. log "deleteLog () {inner_num =$ {1} # find log echo "['date']> start delete logs ---" >>>$ tmp_delete_log find $ {in_log_path}-type f-mtime ${inner_num}-print0 | xargs-0 rm-rf echo "['date']> end delete logs ---" >>> $ tmp_delete_log} init () {mkdir-p/var/log/deletelog/} main () {init if [-z $ {in_log_path}]; then echo "['date']> error log_path not init ---"> $ tmp_delete_log return fi inner_day_num = + 7 if [[-n $ {in_day_num}] & [[$ {in_day_num}-ge 1]; then $ {inner_day_num }=$ {in_day_num} fi deleteLog $ {inner_day_num} main