GNU/Linux >> Linux Esercitazione >  >> Linux

Avviare un processo su un Tty diverso?

Dopo circa un'ora di ricerca su Google, non riesco a crederci nessuno ha mai fatto questa domanda prima...

Quindi ho uno script in esecuzione su TTY1. Come faccio a fare in modo che lo script avvii un programma arbitrario su TTY2?

  • Ho trovato tty , che ti dice su quale TTY ti trovi attualmente.
  • Ho trovato writevt , che scrive una singola riga di testo su un TTY diverso.
  • Ho trovato chvt , che cambia quale TTY è attualmente visualizzato.

Non voglio visualizzare TTY2. Voglio solo che lo script principale continui a essere eseguito normalmente, ma se passo manualmente a TTY2 posso interagire con il secondo programma.

Risposta accettata:

setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'

Finché nient'altro utilizza l'altro TTY (/dev/tty2 in questo esempio), dovrebbe funzionare. Questo include un getty processo che potrebbe essere in attesa dell'accesso di qualcuno; avere più di un processo che legge il suo input da un TTY sarà portare a risultati inaspettati.

setsid si occupa di avviare il comando in una nuova sessione.

Nota che command dovrà occuparsi di impostare il stty impostazioni corrette, ad es. attiva "modalità cucinata" e onlcr in modo che l'output di una nuova riga aggiunga un ritorno a capo, ecc.


Linux
  1. Ora di inizio del processo con fuso orario?

  2. Whereis restituisce un percorso diverso a quale?

  3. Come determinare quale processo sta scrivendo su disco in Linux

  4. Cos'è un processo ininterrotto?

  5. Java ProcessBuilder:il processo risultante si blocca

Come identificare un processo che non ha Pid?

Come ottenere il Tty in cui è in esecuzione Bash?

Come avviare un processo nel proprio gruppo di processi?

Quale processo sta mangiando ptys nel mio server Linux?

Trova quale processo sta modificando un file

Determina in quali gruppi si trova un processo in esecuzione?