프로세스 대체에 sudo를 사용할 수 있나요?

프로세스 대체에 sudo를 사용할 수 있나요?

: 으로 디스크 공간을 계산하고 싶지만 일부 디렉토리에 액세스 du해야 합니다 .sudo

$perl -ane '$i+=($F[0] =~ s/^(\d+).*/$1/r); print "$i\n"' <(sudo du /home)

이것은 만든다:

[sudo] password for user1: 
sudo: unable to read user1: Input/output error

프로세스 교체에서 sudo를 활성화하는 방법은 무엇입니까?

답변1

먼저 빈 명령으로 실행하거나 sudo -v인증 토큰을 설정한 다음 비밀번호를 묻지 않고도 후속 실행이 작동해야 합니다. 시스템에 sudo가 어떻게 설정되어 있는지에 따라 다르지만 기본 인증 기간은 15분입니다.

$ sudo -v
[sudo] password for iv: 
$ cat <(sudo du -d 1)
28636  ./foo
...

또는 프로세스 대체 대신 파이프를 사용하십시오.

$ sudo du -d 1 | cat
[sudo] password for iv: 
28636  ./foo
...

Perl 스크립트는 별 의미가 없는 것 같습니다. du하위 디렉터리가 있는 디렉터리를 포함하여 모든 디렉터리를 나열하고 모든 하위 트리 자체의 크기를 계산합니다. 따라서 표시되는 숫자만 추가하면 각 깊이 수준에 대해 모든 디렉터리를 한 번씩 계산할 수 있습니다. 예를 들어, 다음은 100kB 파일입니다 a/b/c.

$ du a
104     a/b/c
108     a/b
112     a

또한 du -s주어진 디렉토리의 전체 크기만 표시되며, 적어도 GNU du는 표시되는 하위 디렉토리의 수준 수를 갖 -d거나 제한합니다.--max-depth=N

관련 정보