清除 /var/spool/abrt/ 的正确方法是什么

yae*_*ael 5 rhel directory find rm abrt

我们希望自动化从/var/spool/abrt/.

我们有 RHEL 机器 - 版本 7.x。

已知的方法是执行以下操作

# systemctl stop abrtd
# systemctl stop abrt-oops
Run Code Online (Sandbox Code Playgroud)

我们可以使用以下 rm 命令删除所有这些目录和文件:

# abrt-cli rm /var/spool/abrt/*
Run Code Online (Sandbox Code Playgroud)

然后启动服务

# systemctl start abrtd
# systemctl start abrt-oops
Run Code Online (Sandbox Code Playgroud)

我们希望将删除过程简化如下——它将删除超过 10 天的目录 /var/spool/abrt/

find /var/spool/abrt/  -type d -ctime +10  -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

清除/var/spool/abrt/目录是一个不错的选择吗?

Pau*_*omé 5

这是我的建议:

1)创建shell脚本/home/yael/purgeabrt.sh

$ cat purgeabrt.sh

#!/bin/bash
set -e
function cleanup()
{
    systemctl start abrtd
    systemctl start abrt-oops
}

trap cleanup EXIT

systemctl stop abrtd
systemctl stop abrt-oops
find /var/spool/abrt/ -type d -ctime +10 -exec abrt-cli rm {} \;
cleanup
Run Code Online (Sandbox Code Playgroud)

2)以root身份运行脚本:

sudo crontab -e
Run Code Online (Sandbox Code Playgroud)

添加行:

*/5 * * * * bash /home/yael/purgeabrt.sh
Run Code Online (Sandbox Code Playgroud)

为了cron每 5 分钟执行一次作业。

编辑:

set -e如果命令以非零状态退出,将终止脚本的执行。

trap cleanup EXIT将捕获可能抛出到脚本的信号并执行清理代码。

注意:脚本最后一行中的调用cleanup可能是不必要的(多余的),但可以提高代码的可读性。