Bash- find-权限被拒绝了?

时间:2017-12-12 09:43:10

标签: bash

我试图通过mtime命令获取超过3天的文件(通过修改日期find)(我希望将来执行rm命令,无关紧要原因:D)。 问题是我不是root用户,当然还有文件的混合。 它看起来就像简单的脚本,当发生第一个许可被拒绝的消息时,它会卡住。

#!/bin/sh
find /tmp* -type f -mtime +3 -group jenkins -print
# -exec rm {} \;

输出只是错误消息(由root用户拥有) find: ‘/tmp/systemd-private-dbe33161924b4616a037608d052f48d0-httpd.service-sFr4Wd’: Permission denied

注意 - find命令中应该出现许多文件:

    ll /tmp | less
    ....
    drwxr-xr-x 2 jenkins jenkins 4096 Dec 11 02:33 02a47e28-4254-45d4-b69d-ed33b9ef3bad
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  6 15:10 03a1acc7-3040-430a-b5c3-9ce646407b93
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 12:27 062eb875-3216-4b2a-bae2-66106b66b0cd
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  9 06:51 0a6f8afc-0976-441b-980b-d0502f3903b1
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 13:07 1512475627515-0
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 13:07 1512475627836-0
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 13:07 1512475629807-0
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 13:07 1512475629829-0
    drwxr-xr-x 2 jenkins jenkins 4096 Dec  5 13:07 1512475629843-0
    .....
    -rw-rw-r-- 1 root    root     301 Dec  5 14:37 informix_disc.log
    -rw-rw-r-- 1 root    root     714 Dec  5 14:37 oracle_disc.log
    -rw-rw-r-- 1 root    root     602 Dec  5 14:37 sybase_disc.log
    drwx------ 3 root    root    4096 Nov 20 13:47 systemd-private-dbe33161924b4616a037608d052f48d0-httpd.service-sFr4Wd
    drwxr-xr-x 2 root    root    4096 Oct 30 09:39 vmware-config0
    drwxr-xr-x 2 root    root    4096 Nov 17 08:51 vmware-config1
...

我试图避免以下权限被拒绝:

 1. 2>/dev/null OR 2>&- (add on the end, error output to null redirect)
 2. find -type d ! -readable -prune -o ...  (exclude not readable folders)
 3. find /tmp* -type f -mtime +3 -group jenkins -print 2>&1 | grep -v "Permission denied" (should be same as above)
 4. find -user jenkins, as well as -user $(whoami)
 5. -perm -u+rwx

当我尝试将错误输出重定向到/ dev / null时,命令输出为空

请,

  • 我做错了什么,或者在第一次许可被拒绝的消息后,gots被卡住的原因是什么?
  • 有没有更好的简单方法如何做我想要的?
  • 以任何方式忽略不允许使用的文件夹并使其正常工作?

由于

1 个答案:

答案 0 :(得分:0)

哦,问题可能在逻辑查找文件中,我已经发出了两个命令(分别查找目录和文件)

#!/bin/sh
find /tmp -user $(whoami) -type d -mtime +3 -exec rm -rf {} \;
find /tmp -user $(whoami) -type f -mtime +3 -exec rm -f {} \;

看起来效果很好,仍然会出现权限被拒绝的消息,但是命令正在运行。