Eseguire un'applicazione come servizio

Supponiamo di avere un'applicazione Java che vogliamo in esecuzione in background come servizio, evitando che termini alla chiusura del terminale da cui è stata lanciata.
Una possibile soluzione a questo problema consiste nell'utilizzare il comando nohup, che esegue un altro comando facendogli proseguire la sua esecuzione anche quando il terminale che lo ha lanciato viene disconnesso.
Possiamo scrivere quindi un eseguibile SH col seguente contenuto:

nohup java -classpath pack1.jar:pack2.jar myPck.JavaApp param1 param2 2>&1 > /dev/null &

Spieghiamo brevemente il contenuto del file. Il comando nohup in questo caso esegue il comando java (che nell'esempio prende come parametri alcune librerie da aggiungere nel classpath, il nome con package dell'applicazione Java e dei parametri per l'applicazione) e ridirige l'output nel file virtuale /dev/null,  la cui caratteristica è quella di scartare senza memorizzare tutti i dati che gli vengono scritti. Il parametro 2>&1 ridirige sia lo standard output che lo standard error del comando precedente nel file virtuale.