Você faz isso com a opção -k para nc .
-k Forces nc to stay listening for another connection after its cur- rent connection is completed. It is an error to use this option without the -l option. When used together with the -u option, the server socket is not connected and it can receive UDP data- grams from multiple hosts.
Exemplo:
$ rm -f /tmp/socket # unlink the socket if it already exists
$ nc -vklU /tmp/socket # the server
Connection from mack received!
yes
Connection from mack received!
yes
...
É recomendado para unlink() o socket após o uso - mas, na verdade, a maioria dos programas verifica se ele existe e o remove antes de chamar bind() nele; se o caminho do soquete existir no sistema de arquivos e você tentar bind() , você receberá um erro EADDRINUSE mesmo quando nenhum programa estiver usando-o de alguma forma.
Uma forma de evitar toda essa bagunça no linux é usar " abstract ", mas eles não parecem ser suportados por netcat .