In uno script è possibile sapere se viene eseguito dalla schermata GNU?


10

Abbiamo un lungo processo in esecuzione su un server remoto che viene avviato manualmente di volta in volta. Sfortunatamente le connessioni Internet muoiono, i kernel si fanno prendere dal panico e tutta una serie di altre sfide possono essere affrontate dalla sessione ssh utilizzata per connettersi e iniziare il lavoro.

Lo schermo sembra un modo perfetto per garantire che il processo non venga interrotto. Tuttavia, fare affidamento su una persona per ricordare sempre di avviare lo schermo e quindi eseguire lo script per avviare il processo è un problema in attesa di accadere. C'è un modo dallo script che posso controllare per vedere se lo script viene chiamato dallo schermo? In tal caso, il processo continuerà altrimenti lo script verrà chiuso con un messaggio che indica all'utente di eseguire prima la schermata.


Risposte:


11

C'è una variabile d'ambiente per questo. Se viene eseguito all'interno dello schermo, $TERMsarà screen. È così semplice; basta fare un if su di esso. Per esempio,

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

echo barra quando sullo schermo; altrimenti


2
Potrebbe anche essere screen-256colorse l'utente ha configurato il supporto 256 colori.
mgorven

o screen-bce su sistemi con byobu installato. echo $ TERM screen-
bce

7

Mentre lavori con lo schermo, perché non eseguire lo script con 'nohup'? Questo assicurerà anche che continui a funzionare se ti disconnetti.

Viene emesso in modo predefinito su un file, quindi è possibile utilizzare altri strumenti per monitorare l'output dello script, se lo si desidera.


1
Mentre l'esecuzione con nohup otterrebbe lo stesso risultato assicurando che il processo continui a funzionare, non avrei ancora lo stesso problema di qualcuno che potrebbe dimenticare di eseguire lo script senza nohup? O c'è un modo in uno script per assicurarsi che 'nohup' sia stato usato o devo creare uno script wrapper che chiama il mio script originale con nohup?
cclark,

Si. Mentre adoro i miei padawan (amministratori di sistema minori) come amo i miei figli, spesso dimenticano quel tipo di cose. Quindi tutto viene racchiuso in modo che non debbano ricordare quali cose digitare per precedere gli importanti comandi.
Magellan,
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.