Prima le cose semplici/utilizzabili
Se vuoi uno script di avvio senza troppi sforzi (ad esempio gestire il processo, semplicemente farlo gestire dal sistema), puoi creare un systemd
servizio. Vedi la risposta di Greg per una descrizione dettagliata su come farlo. Successivamente puoi avviare il servizio con
systemctl start myserver
In precedenza avrei consigliato di provare xinetd
o qualcosa di simile per una maggiore granularità riguardo alla gestione delle risorse e dei permessi, ma systemd lo copre già.
Utilizzo della shell
Potresti iniziare il tuo processo in questo modo:
nohup ./myexecutable &
Il &
dice alla shell di avviare il comando in background, mantenendolo nell'elenco dei lavori. Su alcune shell, il lavoro viene interrotto se la shell madre esce usando il segnale HANGUP. Per evitare ciò, puoi lanciare il tuo comando usando il nohup
comando, che scarta il segnale HANGUP.
Tuttavia, questo non funziona se il processo chiamato riconnette il segnale HANGUP.
Per essere veramente sicuri, è necessario rimuovere il processo dall'elenco dei lavori della shell. Per due shell ben note, ciò può essere ottenuto come segue:
bash:
./myexecutable &
disown <pid>
zsh:
./myexecutable &!
Uccidi il tuo lavoro in background
Normalmente, la shell stampa il PID del processo, che poi può essere ucciso usando il kill
comando, per arrestare il server. Se la tua shell non stampa il PID, puoi ottenerlo usando
echo $!
subito dopo l'esecuzione. Questo stampa il PID del processo biforcuto.
Potresti usare Supervisord per gestire il tuo processo.