GNU/Linux >> Znalost Linux >  >> Linux

Zabránit obrazovce Gnu v ukončení relace, jakmile skončí spuštěný skript?

Snažím se přinutit obrazovku GNU, aby vytvořila „virtuální“ terminál, aniž by se k němu připojila, provedla uvnitř skript a NEUKONČOVALA relaci, jakmile skript skončí.

Vyzkoušel jsem mnoho kombinací, včetně:

screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh

nebo

screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh

a žádný z nich nefungoval. Buď dostanu relaci bez spuštěného skriptu, skript se spustí, ale relace je po dokončení ukončena, nebo se mi zobrazuje chyba „Nebyla nalezena žádná relace obrazovky“.

V zásadě se snažím spustit posluchač UDP napsaný v PHP a zajistit, aby fungoval v nekonečné smyčce (nepřerušujte poslech). Ano – mohl bych spustit PHP skript s & na konci vynucení PHP CLI běžet jako démon. Problém je v tom, že používám kus nevyžádané pošty nazývaný server (QNAP – nikdy, nikdy si tuto nevyžádanou poštu nekupujte!), který to zřejmě ignoruje. Jakmile odhlásím relaci SSH, skripty se zastaví.

Takže screen se zdá být jedinou možností. Ale nechápu, proč to ukončí relaci, jakmile skončí spuštěný příkaz nebo skript?

UPRAVIT :Zkoušel jsem také příklad nalezený na internetu:

screen -dmS name
screen -S name -p windowname -X stuff 'mc
'

Žádný nedostatek! Po připojení k němu (screen -R name ) Vidím, že Midnight Commander NEBYL popraven. Ačkoli autor příkladu řekl, bude.

Přijatá odpověď:

Chcete-li po dokončení skriptu udržet obrazovku zaneprázdněnou, ponechejte v okně něco trvalého spuštěného. Nejjednodušší volbou pro to „něco“ je pravděpodobně interaktivní shell. Zde je jeden způsob, jak to udělat (za předpokladu, že bash jako volba interaktivního shellu):

screen -dmS session_name sh -c '/share/Sys/autorun/start_udp_listeners.sh; exec bash'
  • -dm :spustí obrazovku v odděleném režimu
  • -S :nastaví název relace pro obrazovku pro snazší pozdější vyhledání
  • sh -c '...' :místo jednoduchého spuštění skriptu, který se ukončí, použijte sh -c spustit více příkazů
  • exec bash :po ukončení skriptu sh shora se přepne na interaktivní shell (bash ), který by nikdy neměl opustit, dokud ho něco externího neukončí. Tím zůstane screen otevřít tak dlouho, dokud bash instance je naživu.

Linux
  1. Gnu Screen:Vytisknout samostatnou relaci Stdout?

  2. Snímek obrazovky X From Tty?

  3. Zabránit Sigintu v dosahování dětských procesů?

  1. Zabijte relaci oddělené obrazovky

  2. Jak zabráním Ubuntu v uspání monitoru?

  3. Přejmenovat relaci obrazovky

  1. Jak odemknout obrazovku ze skriptu v KDE Plasma 5?

  2. Zabránit konzoli v vyčištění obrazovky?

  3. Jak nakonfigurovat D-Bus a SSH X-Forwarding, aby se zabránilo zavěšení SSH při ukončení?