如何制作 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。这 {} \;最后需要结束命令。
我有以下目录要管理:
/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。这 {} \;最后需要结束命令。