我正在尝试运行一个在每个核心转储上调用的清理脚本。我首先将核心文件的内容写入另一个文件,然后尝试对最旧的十个文件进行清理。
但是,xargs rm
当通过 core_dump 调用脚本时,该命令不起作用。当我单独运行脚本时,rm 可以工作。
/proc/sys/kernel/core_pattern:
|core_cleanup.sh /tmp/cores/core.%t
清理.sh 文件
#!/bin/sh
cat > "$1"
ls -tr /tmp/cores/ | head -10 | xargs rm
如果我执行以下操作来删除文件,它就会起作用。但我只需要删除最旧的 x 文件。
#!/bin/sh
cat > "$1"
rm /tmp/cores
有人可以透露一些信息吗?
答案1
ls -tr /tmp/cores
不列出文件的完整路径,而仅列出它们的基本名称。
尝试ls -tr /tmp/cores/* | ...
一下。
但您不需要所有这些 - 因为所有文件名都是这种形式core.%t
(%t
= unix 转储时间),您可以简单地依靠 glob 来对它们进行排序。另外,在只添加一个文件后删除 10 个文件是没有意义的——经过一系列步骤后,目录中将不再有任何文件。
#! /bin/sh
cat > "$1"
# remove the oldest file if there are more than 100
cleanup(){ test "$#" -gt 100 && rm "$1" }
cleanup /tmp/cores/*