Se um programa tem um arquivo aberto quando você o exclui, o kernel apenas o marca como apagado, mas não libera o espaço do disco, para evitar quebrar o programa (não é possível saber se o arquivo é importante para o programa). função do programa). Quando o programa fecha o arquivo, o espaço do disco é liberado. Quando isso acontece, você verá o "(excluído)" quando você olha para /proc/<pid>/fd
para o processo que tem o arquivo aberto.
Portanto, este é o kernel sendo útil para não remover um arquivo que a transmissão usa.
Se você não quiser compartilhar um arquivo usando transmissão, você deve removê-lo da transmissão, até onde eu saiba, a transmissão tem a opção de excluir os arquivos como parte da interrupção para compartilhá-lo.
Você pode restaurar o arquivo copiando-o de /proc/<pid>/fd/
, pois é um link para o arquivo (apenas um que só existe enquanto o processo estiver aberto).
root@mypc:~# pgrep transmission
1470
root@mypc:~# cd /proc/1470/fd
root@mypc:/proc/1470/fd# ls -l | grep deleted
lr-x------ 1 user user 64 Dec 8 02:55 56 -> /mnt/download/my.file (deleted)
root@mypc:/proc/1470/fd# cp 56 /mnt/download/myrestored.file