如何制作 crontab 管家脚本以删除 redhat 7 目录中超过 60 天的文件

How to make crontab housekeep script to remove files older than 60days in a directory in redhat 7

我有以下目录要管理:

/interface/P23/FTP/MTSI/arc

/interface/P23/FTP/iMind360/arc

/interface/P23/FTP/ServiceNow/arc

谁能帮我展示一些脚本来删除早于enter code here 60 天的文件?

我想只保留新文件并管理这些目录中的旧文件。

诚然,让未经测试的 Bash 通过并不是我的强项,但应该是这样的:

secs_to_wait=5184000
root_dirs=(
    /interface/P23/FTP/MTSI/arc
    /interface/P23/FTP/iMind360/arc
    /interface/P23/FTP/ServiceNow/arc
)
for root_dir in $root_dirs; do
    for i in $(ls $root_dir); do
       # seconds since last modified
       mod_time=$(stat --format "%X" $i)
       if [ $mod_time -ge $secs_to_wait ]; then
           rm -f $i
       fi
    fi
fi

现在,您可以 运行 将其作为一项 cronjob,但您可以随时随心所欲。另一种解决方案是使用像 inotifywait 这样的文件系统监视器来为您找出所有这些血淋淋的细节。您所要做的就是弄清楚如何将您的年龄要求指定为 inotify 事件,它将在守护进程中处理其余的事情。我将把它作为练习留给 reader ;)

Blockquote

您可以使用下面的查找命令

find <Path> -mtime +<NumberOfDay> -exec rm {} \;

-mtime,用于指定文件存在的天数。

-exec,允许你传入一个命令,比如rm。这 {} \;最后需要结束命令。