Quando eu faço
sudo umount /media/KINGSTON
Eu tenho
umount: /media/KINGSTON: device is busy.
Fecho todas as janelas e asseguro que todo o shell esteja apontando para outros diretórios. Como posso descobrir qual processo está impedindo a quantia?
Respostas:
abra um terminal:
Ele produzirá algo como isto:
Isso fornecerá o pid dos processos usando este volume. O caractere extra no final do pid dará algumas informações extras. (c em 3106c)
c - o processo está usando o arquivo como seu diretório de trabalho atual
m - o arquivo é mapeado com
o mmap o - o processo está usando-o como um arquivo aberto
r - o arquivo é o diretório raiz do processo
t - o processo está acessando o arquivo como um arquivo de texto
y - esse arquivo é o terminal de controle do processo
Então, para desmontar, basta matar os pids e tentar novamente o desmontar
Nota: Para encontrar o nome exato do aplicativo desses pids, você pode usar este comando
Por exemplo :
cat /proc/11086/cmdline
isso produzirá algo como abaixo.
Espero que isso ajude
fonte
ps <pid>
vez de editar arquivos em / proc para ver o nome e os argumentos do comando.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: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:A
COMMAND
coluna mostra o nome do programa executável e aPID
coluna mostra o ID do processo. ANAME
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 talvezFD
, o que mostra como o arquivo é usado pelo processo:cwd
: diretório de trabalho atualtxt
: o programa executável²mem
: um arquivo mapeado na memória (aqui, pense nele como um arquivo aberto)r
para leitura ew
escritaNã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
(onde31421
está o ID do processo) oukill -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.
fonte
Além disso, isso pode ajudar:
fonte
grep "media/KINGSTON"
Enquanto isso, o comando do fusor melhorou muito. Você pode fazer o trabalho completo com um único comando:
Onde:
k
mata o processo ofensivo,v
mostra antecipadamente o processo e seu usuárioi
pede sua confirmação.Se algum processo persistir, tente novamente com
fuser -ickv -9
(ou mais geralmente com-SIGNAL
) que mata os mais teimosos.Mas você sempre encontrará algum processo "imortal" ...!
Nestes casos, ultimamente aprendi a usar
como último recurso, que até agora funcionava para mim o tempo todo.
fonte
vboxmanage
. -_-