Você pode fechar um soquete no sh assim como qualquer outro arquivo: exec 42>&-
onde 42 é o descritor de arquivo. O que você não pode fazer (exceto em alguns shells que fornecem uma extensão para ele) é abrir um socket. Mas é claro que isso fecha o socket no shell, não em outro processo.
Fechar um soquete em um processo em execução interromperia seu comportamento de uma maneira que o autor do programa não deveria esperar - é como entrar e modificar uma parte da memória. Ainda assim, isso pode ser feito conectando-se ao processo com um depurador e fazendo com que ele execute uma chamada de API de fechamento de soquete (que seria a chamada de sistema close
ou shutdown
no unix).