A ferramenta mais útil é lsof . Ele mostra quais arquivos são usados por quais processos. Se /media/KINGSTON
for um ponto de montagem (o nome do dispositivo também funcionaria), o comando a seguir mostra todos os arquivos que estão em uso nesse ponto de montagem:
lsof /media/KINGSTON
Se você executar este comando como um usuário comum, ele mostrará apenas seus próprios processos¹. Execute sudo lsof /media/KINGSTON
para ver os processos de todos os usuários.
A saída de se lsof
parece com isso:
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
A COMMAND
coluna mostra o nome do programa executável e a PID
coluna mostra o ID do processo. A NAME
coluna mostra o nome do arquivo; você pode ver (deleted)
se o arquivo foi excluído enquanto aberto (quando um arquivo é excluído, ele não tem mais um nome, mas ainda existe até o último processo de uso fechar o arquivo). USER
deve ser auto-explicativo. As outras colunas não importam aqui, exceto talvez FD
, o que mostra como o arquivo é usado pelo processo:
cwd
: diretório de trabalho atual
txt
: o programa executável²
mem
: um arquivo mapeado na memória (aqui, pense nele como um arquivo aberto)
- um número: um arquivo aberto real; uma letra subsequente indica o modo de abertura, como
r
para leitura e w
escrita
Não há uma maneira mecânica de localizar a janela em que um arquivo está aberto (isso não é tecnicamente significativo: se um processo tiver várias janelas, um arquivo não está particularmente associado a uma janela ou a outra), nem mesmo a uma maneira simples de identificar a janela de um processo (e é claro que um processo não precisa ter nenhuma janela). Mas geralmente o nome do comando e o nome do arquivo são suficientes para localizar o agressor e fechar o arquivo corretamente.
Se você não conseguir fechar o arquivo e apenas quiser finalizar tudo, poderá encerrar o processo com kill 31421
(onde 31421
está o ID do processo) ou kill -HUP 31421
("desligue"). Se matar simples não faz o truque, matar com extremo preconceito: kill -KILL 31421
.
Existe uma GUI para lsof, glsof , mas ainda não está pronta para o horário nobre e ainda não está empacotada para o Ubuntu.
¹ O
Lsof pode listar algumas informações sobre os processos de outros usuários, mas não detecta o ponto de montagem, portanto não os listará se você especificar um ponto de montagem.
² O
código executável é freqüentemente chamado de texto nas discussões de formatos executáveis.