Sto lavorando per automatizzare una routine di manutenzione che prevede l'avvio e l'arresto di uno script in esecuzione in una sessione dello schermo. Il mio approccio è quello di uccidere la sessione dello schermo, quindi riavviarlo ed eseguire il comando dall'interno di uno script usando le abilità sia per creare uno schermo che passare un comando senza bisogno di collegarlo allo schermo.
Tuttavia, ho delle difficoltà con questo. Posso creare lo schermo correttamente senza collegarlo usando screen -d -m -S screen_name
. Tuttavia, se eseguo un comando basato su:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
con l'eco -ne '\ 015' che viene racchiuso da backtick anziché da virgolette singole. Serve a simulare l'utente premendo il tasto Invio mentre i comandi che utilizzo si spostano in una directory ed eseguono uno script situato lì. Questo comando funziona, ma solo se lo schermo è stato collegato una volta creato. Mentre sto cercando di automatizzare il processo di creazione dello schermo ed esecuzione dei comandi al suo interno, vorrei evitare di dover allegare e staccare uno script. Proverò il suggerimento di creare uno script di shell contenente i comandi che devo eseguire all'interno dello schermo e modificarli in base ai miei risultati.
C'è un modo per creare uno schermo ed eseguire un comando all'interno dello schermo in un solo comando o senza doverlo collegare allo schermo dopo averlo creato ma prima dell'esecuzione del comando?
Grazie in anticipo.
** Aggiornamento - dopo aver provato il suggerimento di posizionare i comandi che devo eseguire all'interno di uno script della shell sono stato in grado di creare con successo uno schermo ed eseguire i comandi all'interno dello schermo, ma sto ottenendo il comportamento che quando lo script smette di funzionare anche lo schermo si chiude. Questo non dovrebbe essere un problema poiché lo script è uno script di registrazione che dovrebbe fermarsi solo con la conoscenza dell'amministratore di sistema o tramite lo script che sto cercando di sviluppare, tuttavia sarebbe preferibile avere la configurazione dello schermo in modo tale che lo schermo non scompare se lo script viene interrotto. È possibile raggiungere questo comportamento? **
.screenrc
che contiene la riga zombie kr
, che manterrà aperta una finestra finita e che è possibile premere k
per chiudere il winodw o r
eseguire nuovamente il comando nella finestra. Ho questo per il mio .screenrc predefinito.