PuTTY o ALTRO - Continua a eseguire il comando anche dopo essere uscito da PuTTY [duplicato]


13

Ho un paio di comandi che devo eseguire. Questi comandi devono essere eseguiti continuamente anche dopo che esco dalla mia interfaccia. Quando ho accesso alla GUI di Linux, eseguo qualcosa del tipo:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

Qualsiasi aiuto sarà molto apprezzato.



C'è qualche motivo per cui non esegui questi servizi come demoni?
SevenSidedDie

I comandi sono pensati per essere servizi che dovrebbero essere eseguiti quasi sempre al 100% di uptime o un'attività di elaborazione di lunga durata che dovrebbe terminare dopo qualche tempo? Tutte le risposte "funzioneranno" per entrambi i casi, ma la raccomandazione corretta sarà diversa.
Peteris,

Quale specifica distribuzione di Linux stai usando? Ho scoperto che l'esecuzione set -m;fa sì che i miei script continuino a funzionare dopo che mi sono disconnesso da CentOS e RHEL.
ArtOfWarfare il

Risposte:


33

Provare

nohup Background_ScriptX &

nohup garantisce che un processo non venga terminato alla chiusura di un terminale. Il simbolo & spinge il processo in background.

Spero sia stato utile.


nohup fa sicuramente il lavoro
Pitto

Felice di essere di aiuto.
Eamonn Travers,

15
Lo schermo ha un chiaro vantaggio rispetto a nohup : nohup non consente di tornare a un comando in esecuzione (ad es. il mattino dopo per leggere il suo stdout, quindi scegliere di ucciderlo, ecc.). schermo ti permette di fare esattamente questo.
Andreas F,

1
nohup invia l'output a un file dove può essere elaborato.
Brian Knoblauch,

Per coloro che non conoscono nohup, è praticamente "no hangup" - con nohup, il HUPsegnale hangup ( ) viene ignorato.
Dan7119,

20

Se desideri leggere l'output in un secondo momento, puoi utilizzare screen:

screen -d -m my_command

Questo ti dà un terminale distaccato a cui puoi connetterti in seguito ( screen -r) per leggere l'output stdout / stderr.


2
+1. Per uno, se chiudi il tuo terminale (es. Stucco) e poi lo riapri e ricolleghi allo schermo ( screen -r) avrai anche tutto l'output prodotto dal tuo programma e altrimenti ti saresti "perso". Inoltre, lo schermo può fare tante cose incredibili, come schermi divisi, ecc.! :)
Alberto Santini,

6

Un'altra opzione se il nohupcomando non è disponibile è l'uso del comando disown .

Per prima cosa puoi visualizzare le tue attività in background eseguendo jobsnel terminale. È possibile ottenere il numero di lavoro da lì.

Ora esegui disown %[job number]e il processo verrà staccato dal terminale corrente e rimarrà attivo quando ti disconnetti.

Nota a margine: assicurati di porre la domanda corretta. Se stai eseguendo servizi reali come suggerisci nel tuo esempio, potresti voler esaminare come creare un demone nel sistema operativo che preferisci. Questo per assicurarsi che il processo sia ancora in esecuzione dopo un riavvio e renderlo più coerente con altri servizi.

Spero che sia di aiuto.


3

Da allora screenè stato menzionato: ci sono altri multiplexer terminali là fuori. Mi piace tmuxmolto, vedi ad esempio questa altra domanda da superutente, tmux vs screen per un confronto.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.