로그인한 사용자의 작업 디렉터리를 가져옵니다.

로그인한 사용자의 작업 디렉터리를 가져옵니다.

w로그인한 모든 사용자를 나열합니다. 로그인한 사용자의 작업 디렉토리를 얻을 수 있는 방법이 있습니까?

답변1

현재 작업 디렉터리는 사용자 속성이 아닌 프로세스별 속성입니다.

$pidLinux에서는 예를 들어 / 명령이나 // glob 한정자를 사용하여 readlink()실행하여 프로세스의 현재 작업 디렉터리 ID를 얻을 수 있습니다. 수퍼유저가 아닌 이상 이는 자신의 프로세스에서만 작동합니다(현재 작업 디렉터리는 프로세스에서 현재 액세스하는 다른 파일과 마찬가지로 잠재적으로 민감한 정보입니다)./proc/$pid/cwdreadlinkrealpath:a:A:Pzsh

$ ps
  PID TTY          TIME CMD
 9467 pts/1    00:00:00 zsh
14074 pts/1    00:00:00 ps
$ readlink /proc/9467/cwd
/usr/local
$ printf '%s\n' /proc/9467/cwd(:P)
/usr/local

보다 편리하게 다음을 사용할 수 있습니다 lsof.

$ lsof -ap 9467 -d cwd
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh     9467 chazelas  cwd    DIR  253,0     4096 786604 /usr/local

그런 다음 -u user이를 대신 결합하여 -p pid해당 사용자로 실행되는 모든 프로세스의 cwd를 얻을 수 있습니다.

sudo lsof -au user -d cwd

FreeBSD와 같은 일부 시스템에서는 sudo이 정보에 대한 액세스가 제한되지 않으므로 이는 필요하지 않습니다(수퍼유저 권한으로 명령 실행).

관련 정보