Eu faço muito trabalho em um cluster SGE rodando o CentOS 7, e recentemente tive problemas com trabalhos morrendo aleatoriamente, mas aparentemente com alguns processos ainda em execução que me impedem de limpar para começar de novo. Quando tento excluir os arquivos necessários, recebo uma mensagem "não há arquivo ou diretório", mas o arquivo é exibido em ls
. Pesquisas em fóruns me disseram que isso pode ser devido a caracteres não imprimíveis no nome, mas não consigo criar um arquivo com o mesmo nome usando touch
ou removê-lo com rm -i
e nada aparece com ls -b
ou ls -Q
. Por exemplo:
[ark19@blade04 testing]$ rm file_bad.csv
rm: cannot remove ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ rm -f file_bad.csv
[ark19@blade04 testing]$ ls file*
file1.csv file2.csv file_bad.csv
[ark19@blade04 testing]$ ls -l file*
-rwx——— 1 ark19 root 88552 Dec 26 18:31 file1.csv
-rwx——— 1 ark19 root 87149 Dec 26 18:32 file2.csv
-rwx——— 1 ark19 root 183588 Dec 27 19:45 file_bad.csv
[ark19@blade04 testing]$ ls -b file*
file1.csv file2.csv file_bad.csv
[ark19@blade04 testing]$ ls -Q file*
"file1.csv" "file2.csv" "file_bad.csv"
[ark19@blade04 testing]$ touch file_bad.csv
touch: cannot touch ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ rm -i -- file_bad.csv
rm: cannot remove ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ ls file*
file1.csv file2.csv file_bad.csv
Como tal, estou bastante certo de que o problema é que o arquivo incorreto está sendo mantido por algum processo, e quando o criei com os administradores do cluster, a única solução que eles criaram foi dar-lhes o nome do arquivo poderia apagá-lo. Isso tem acontecido com muita freqüência para que isso seja uma solução sustentável, então eu queria perguntar aqui se há algo mais que eu possa fazer para resolver o problema sozinho, como de alguma forma forçar excluir o arquivo e fechar todos os processos que estão entrando no caminho?
Na maioria das vezes não sei em qual nó do cluster o processo suspeito está sendo executado e não sei como, de alguma forma, verificar todos eles para localizar e eliminar o processo apropriado ... Se eu executar o lsof
comando do nó que eu estou logado, nunca aparece nada.
Qualquer sugestão é muito apreciada, obrigado!