답변:
터미널을여십시오 :
fuser -c /media/KINGSTON
다음과 같이 출력됩니다 :
/media/KINGSTON/: 3106c 11086
이것은이 볼륨을 사용하는 프로세스의 pid를 제공합니다. pid 끝에있는 추가 문자는 추가 정보를 제공합니다. (3106c의 c)
c-프로세스가 파일을 현재 작업 디렉토리로 사용 중
m-파일이 mmap
o 로 맵핑 됨 -프로세스가 파일을 열린 파일로 사용 중
r-파일이 프로세스의 루트 디렉토리
t-프로세스가 액세스 중 텍스트 파일로 파일
y-이 파일은 프로세스의 제어 터미널입니다.
마운트 해제하려면 pid를 죽이고 마운트 해제를 다시 시도하십시오.
sudo kill -9 3106 11086
sudo umount /media/KINGSTON
참고 :이 pid의 정확한 응용 프로그램 이름을 찾으려면이 명령을 사용할 수 있습니다
cat /proc/<pid>/cmdline
예를 들면 다음과 같습니다. cat /proc/11086/cmdline
다음과 같은 결과가 출력됩니다.
evince^@/media/KINGSTON/Ubuntu-guide.pdf^@
이것이 도움이되기를 바랍니다.
ps <pid>
/ proc에서 파일을 편집 하는 대신 명령 이름과 인수를 보는 것이 좋습니다 .
가장 유용한 도구는 lsof 입니다. 어떤 프로세스에서 어떤 파일이 사용되고 있는지 보여줍니다. 경우 /media/KINGSTON
마운트 지점입니다 (장치 이름 작업도 것), 다음 명령 프로그램이 마운트 지점에 사용중인 모든 파일 :
lsof /media/KINGSTON
이 명령을 일반 사용자로 실행하면 자신의 프로세스 만 표시됩니다 ¹. sudo lsof /media/KINGSTON
모든 사용자의 프로세스를 보려면 실행 하십시오.
의 출력은 lsof
다음과 같습니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zsh4 31421 gilles cwd DIR 8,1 4096 130498 /var/tmp
zsh4 31421 gilles txt REG 8,1 550804 821292 /bin/zsh4
zsh4 31421 gilles mem REG 8,1 55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4 31421 gilles 12r REG 8,1 175224 822276 /usr/share/zsh/functions/Completion.zwc
COMMAND
칼럼 쇼 프로그램 실행 파일의 이름과 PID
열 표시 프로세스 ID. NAME
열은 파일 이름을 보여줍니다; (deleted)
파일을 연 상태에서 파일이 삭제되었는지 확인할 수 있습니다 (파일을 삭제하면 더 이상 이름이 없지만 파일을 사용하는 마지막 프로세스가 파일을 닫을 때까지 계속 존재 함). USER
설명이 필요합니다. 다른 열은 여기를 제외하고는 중요하지 않습니다 FD
. 프로세스에서 파일이 사용되는 방식을 보여줍니다.
cwd
: 현재 작업 디렉토리txt
: 프로그램 실행 파일 ²mem
: 메모리 매핑 된 파일 (여기서는 파일을 열린 파일로 생각하십시오)r
읽기 및 w
쓰기 와 같은 열기 모드를 나타냅니다.파일이 열려있는 창을 찾을 수있는 기계적인 방법은 없습니다 (실제로는 기술적으로 의미가 없습니다. 프로세스에 여러 개의 창이있는 경우 파일이 특히 하나의 창과 연관되지 않음) 또는 간단한 식별 방법 프로세스의 창 (물론 프로세스에 창이있을 필요는 없습니다). 그러나 일반적으로 명령 이름과 파일 이름만으로 위반자를 찾고 파일을 올바르게 닫을 수 있습니다.
파일을 닫을 수없고 모든 파일을 끝내려면 kill 31421
( 31421
프로세스 ID가있는 곳 ) 또는 kill -HUP 31421
(“멈춤”)으로 프로세스 를 종료 할 수 있습니다 . 일반 살인이 속임수를 쓰지 않으면 극단적 인 편견으로 죽이십시오 kill -KILL 31421
.
lsof, glsof 용 GUI가 있지만 아직 준비가되지 않았으며 지금까지 우분투 용으로 패키지되지 않았습니다.
¹
Lsof는 다른 사용자의 프로세스에 대한 일부 정보를 나열 할 수 있지만 마운트 지점을 감지하지 않으므로 마운트 지점을 지정하면 나열되지 않습니다.
²
실행 코드는 종종 실행 형식에 대한 설명에서 텍스트라고합니다.
또한 이것은 도움이 될 수 있습니다.
lsof | grep \/media\/KINGSTON
grep "media/KINGSTON"
한편 퓨저 명령이 훨씬 향상되었습니다. 단일 명령으로 전체 작업을 수행 할 수 있습니다.
$ sudo fuser -ickv /"mountpoint"
어디에:
k
가 문제의 프로세스를 종료합니다.v
미리 표시 방법과 사용자i
확인을 요청합니다. 일부 프로세스가 저항 하는 경우 가장 완고한 프로세스를 종료하는 fuser -ickv -9
(또는보다 일반적으로 -SIGNAL
) 다시 시도하십시오 .
그러나 당신은 항상 "불멸의"과정을 찾을 것입니다 ...!
이 경우에 나는 최근에 사용법을 배웠다
$ sudo umount --lazy --force <mountpoint>
마지막 자원으로, 지금까지 저에게 도움이되었습니다.
vboxmanage
. -_-