目的是保存最新的 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 是对的