我试图删除日志目录中的所有文件,并在CentOS 6.5上使用默认的bash shell
[lei@ids7gueywjZ /]$ sudo ls -al /var/log/jenkins/
total 1541512
drwxr-x--- 2 jenkins jenkins 4096 Jul 22 09:52 .
drwxr-xr-x. 10 root root 4096 Jul 14 21:27 ..
-rw-r--r-- 1 jenkins jenkins 31483 Jul 22 17:07 jenkins.log
-rw-r--r-- 1 jenkins jenkins 1073606656 Jul 18 03:16 jenkins.log-20150718
-rw-r--r-- 1 jenkins jenkins 504815011 Jul 19 03:30 jenkins.log-20150719.gz
[lei@ids7gueywjZ /]$ sudo rm -r /var/log/jenkins/*
rm: cannot remove `/var/log/jenkins/*': No such file or directory
我不明白为什么rm -r /var/log/jenkins/*
不起作用?我缺少一些默认的shell配置吗?
答案 0 :(得分:12)
通配符扩展由shell完成,而不是由rm
完成。
并且shell没有sudo
权限,只有rm
的权限。
因为shell没有阅读/var/log/jenkins
的权限,所以没有扩展,rm
尝试删除文件(不是通配符){{1 } - - 不存在。
要解决此问题,您需要一个 shell ,/var/log/jenkins/*
权限执行sudo
:
rm
答案 1 :(得分:0)
目录/var/log/jenkins
没有“其他”权限。即使您运行sudo rm -r /var/log/jenkins/*
,shell扩展也会由您的用户完成。您应该删除整个目标(suro rm -r /var/log/jenkinks
),或者以适当的用户身份执行所有操作(我建议su
使用jenkins
用户)。