Zdalne wykonanie asynchroniczne z SSH

1

Mam skrypt na mini serwerze Mac, który powoli pobiera plik z wieloma gigabajtami. Chciałbym uruchomić ten skrypt przez SSH z innego serwera (linux) za pomocą ssh mac-server 'nohup /path/to/script arguments' ale natychmiast zabij połączenie SSH, gdy tylko wiem, że skrypt został pomyślnie uruchomiony. Po uruchomieniu połączenie SSH nie służy żadnemu użytecznemu celowi, systematycznie zawodzi gdzieś podczas pobierania i blokuje wykonanie na serwerze linux.

Nie mogę tak po prostu zrobić ssh -f lub ssh & ponieważ potrzebuję polecenia, aby nie powiodło się na serwerze linux, jeśli skrypt nie uruchamia się (lub jeśli mac nie jest osiągalny).

instanceof me
źródło
Zamieszczono więcej szczegółów i przykładowy kod reprodukcji w usłudze ServerFault: serverfault.com/questions/524738/…
instanceof me

Odpowiedzi:

1

To pytanie było szczegółowe i odpowiedzi w usłudze ServerFault .

Podsumowując, znaleziono 2 rozwiązania:

  1. Posługiwać się nohup uruchomić zadanie asynchroniczne + zamknąć deskryptory plików:

    exec 0>&- # close stdin
    exec 0<&- 
    exec 1>&- # close stdout
    exec 1<&- 
    exec 2>&- # close stderr 
    exec 2<&- 
    
  2. Posługiwać się screen -d -m uruchomić zadanie asynchroniczne. Następnie można to sprawdzić (za pomocą screen -ls ) lub ponownie dołączone w późniejszym czasie.

instanceof me
źródło
jak zamknąć ekran wewnętrzny, jeśli korzystam z drugiego rozwiązania?
upton