技术解析

帮忙看看为什么这段脚本放到 crontab 中就运行不了?
0
1975-02-23 08:58:06
idczone

目的是保存最新的 10 条记录,把多余的文件删除,在命令行中是可以运行的.但是放在 crontab 中就执行不了..

环境是 CentOS7, 麻烦能帮忙指出哪里有问题么?

* * * * * ls -rt /root/国外服务器playground/linux/ | head -n -10 | xargs rm -f

还试了

* * * * * ls -rt /root/playground/linux/ | head -n -10 | xargs -d '\n' rm -f

常见的问题是 crontab 的环境中 PATH 是很干净的,最好用绝对路径,比如 head 用 /usr/bin/head 代替。然后 ls 是个内置函数,并不是个程序,所以你可以用 /usr/bin/bash -c "ls -rt /root/playground/linux/ | /usr/bin/head -n -10 | /usr/bin/xargs -d '\n' rm -f"代替

加载一下 PATH

好像并不是这个问题...

直接把这段命令放到根目录下运行一次看能运行不

先做成 run.sh 方便调试。

要么 head -n 10

目录有权限吗

在命令 后面添加 >> /tmp/error.log 2>&1

楼主这个是删除最老的 10 个文件啊

没有指定工作目录,这样就可以了,虽然不知道楼主到底是要删除 10 个最老的,还是保留 10 个最新的。。。
* * * * * cd /root/playground/linux/ && ls -rt /root/playground/linux/ | head -n -10 | xargs rm -f

看了下楼主 head -n -10 是对的
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服