Não se esqueça da possibilidade de o servidor estar inacessível após o comando rm não ter nada a ver com isso. Pode ser uma coincidência!
O mais provável é que o diretório de trabalho atual não tenha sido o que você pensou, quando o comando foi emitido.
Você estava zangado ao fazer isso?
Isso é o que acontece ao emitir o comando rm -rf * :
- O shell resolve os padrões de curinga (
*neste caso) para todos os arquivos (incluindo diretórios, links simbólicos e arquivos especiais de dispositivo) que correspondam ao padrão de globbing usado, neste caso tudo não começando com.Normalmente , estes são classificados "alfabeticamente" pelo shell. - O shell então bifurca um novo processo e
exec()s a primeira versão dermencontrada em seu$PATH, com-rfcomo o primeiro argumento e os arquivos correspondentes, um por um como os argumentos consecutivos .
Se o rm que foi invocado for o comando rm padrão, ele primeiro analisa os argumentos, um por um, tratando todos os argumentos (incluindo os resultantes da globalização shell) que começam com - como opções até chega-se a um argumento que não começa com - (exceto para comandos usando GNU getopt() que aceitam opções após não-opções), ou um que é exatamente -- . Tudo depois disso é considerado nomes de arquivos.
Em outras palavras, se você tivesse um arquivo chamado (por exemplo) --no-preserve-root no diretório atual, isso seria interpretado como uma opção para rm , não como um nome de arquivo para remover!
Tenha cuidado com os curingas (e com a nomeação de arquivos). Se você tiver um arquivo chamado -r no diretório atual, o comando ls * listaria os outros arquivos na ordem inversa e não mostraria o arquivo '-r'.
Em outras palavras, se você tivesse um arquivo chamado --no-preserve-root , isso seria passado como uma opção para rm , não como um nome de arquivo.
Use rm -rf -- * para evitar que isso aconteça e remova os arquivos que começam com - . Ou simplesmente use nomes de caminho absolutos ou relativos para fazer com que os nomes de arquivos comecem com algo diferente de - , como em: rm ./--flagfile ou rm /abs/path/to/--flagfile .
Existe também um sinal -i para rm que faz com que seja solicitado ("interativamente") antes de remover qualquer coisa.