O comando dado é o filho da tela, então quando ele sai, a janela está morta.
Você pode contornar isso iniciando um shell e, em seguida, empurrando a entrada para a janela para executar o comando, mas isso apenas altera o problema para que você fique com um prompt de shell persistente e o servidor não reiniciar.
Realmente, você quer executar um comando keep-alive, que então executa o servidor que você está interessado. Há muitas ferramentas lá fora, mas o mais simples é escrever algo com shell (a menos que você queira o poder total das ferramentas dedicadas.
#!/bin/sh
while [ ! -f /home/servicename/shutdown-flagfile ]; do
echo "Starting server [$(date)]"
server-binary-name "$@"
sleep 1
done
A linha 2 permite sair do loop criando um arquivo especial (com "touch"), o server-binary-name é o programa que realmente roda, "$ @" é passar pelas opções que o wrapper foi chamado com, e sleep 1 é para que, se o servidor estiver morrendo na inicialização, você não mastigue toda a CPU repetidamente, reiniciando-o milhares de vezes por segundo, de modo que seja difícil entrar e ver o que está acontecendo. A linha de eco permite que você veja quando o último servidor teve que ser reiniciado.