Próbuję zmusić ekran GNU do utworzenia „wirtualnego” terminala, bez dołączania się do niego, wykonywania skryptu wewnątrz i NIE kończenia sesji po zakończeniu skryptu.
Próbowałem wielu kombinacji, w tym:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
lub
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
i żaden z nich nie działał. Dostaję sesję bez wykonania skryptu, skrypt jest wykonywany, ale sesja zostaje zakończona po zakończeniu lub pojawia się błąd „Nie znaleziono sesji ekranowej”.
W zasadzie staram się uruchomić program nasłuchujący UDP napisany w PHP i sprawić, by działał w nieskończonej pętli (nie przerywaj nasłuchiwania). Tak - na końcu mogłem uruchomić skrypt PHP &
, zmuszając CLI PHP do działania jako demon. Problem polega na tym, że używam kawałka śmieci zwanego serwerem (QNAP - nigdy, nigdy nie kupuj tego śmieci!), Co wydaje się ignorować. Skoro tylko wyloguję się z sesji SSH, skrypty przestają działać.
Więc screen
wydaje się być jedynym rozwiązaniem. Ale nie rozumiem, dlaczego kończy sesję po zakończeniu wykonania polecenia lub skryptu?
EDYCJA : Próbowałem też znaleźć przykład w Internecie:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Nie brakuje! Po dołączeniu do niego ( screen -R name
) widzę, że dowódca północy NIE ZOSTAŁ stracony. Chociaż przykładowy autor powiedział, że tak będzie.
screen
zamknięciu? BTW: Nadal nie mam pojęcia o tym! Jeśli zadzwonię screen -dmS name
, tworzę odłączone okno, które również nie ma już nic do roboty. Ale to nie jest automatycznie zamykane! Ale gdy chcę wykonać coś na tym odłączonym ekranie, kończy się po wykonaniu. Czemu? Nie widzę tu logiki. Czy okno może nic nie robić, ale nie może robić okna, a następnie nic nie robić?
&
końcem), z powodu błędnego serwera (QNAP), są one przerywane po zakończeniu sesji (powiedziano mi, że nie powinny działać na normalnym Linuksie, jeśli są wykonywane z &
). Więc nie zamierzam nic robić po start_udp_listeners.sh
zakończeniu, tylko jak zapobiec zakończeniu sesji. Dopóki tak nie jest, moi słuchacze PHP działają dobrze.
screen
tworzysz tylko jedno okno, aby uruchomić jedno polecenie. Kiedy polecenie kończy się, okno zamyka się iscreen
nie ma już nic do zrobienia, więc wychodzi.