ssh + screen: jak to zrobić?


0

Próbuję uruchomić oprogramowanie przez ssh:

Potrafię :

ssh -t user@xx.xx.xx.xx 
screen -S datanode -d -m ~/hadoop/bin/hdfs datanode

Ale

ssh -t user@xx.xx.xx.xx screen -S datanode -d -m ~/hadoop/bin/hdfs datanode

Nie działa

Wypróbowałem kilka opcji z cytatami:

ssh -t user@xx.xx.xx.xx screen '-S datanode -d -m ~/hadoop/bin/hdfs datanode'

lub

ssh -t user@xx.xx.xx.xx screen -S datanode -d -m '~/hadoop/bin/hdfs datanode'

lub

ssh -t user@xx.xx.xx.xx screen ' -S datanode -d -m ~/hadoop/bin/hdfs datanode'

ale nie mogę znaleźć właściwego :-(



Nie wierzę, że przestrzenie mają z tym coś wspólnego. Podstawowym problemem jest poinformowanie ssh, aby poszedł w tło, a po drugie, upewnienie się, że ~nie jest ono rozwijane lokalnie. Powiązane pytanie: superuser.com/questions/1171397/…
crimson-egret

Odpowiedzi:


0

Lepiej pogrupować opcje razem

ssh -t username@host "screen -dmS 'NAMEofSCREEN' command"

Następnie możesz ponownie podłączyć

screen -r NAMEofSCREEN

Pamiętaj tylko, że po commandwyjściu nie będzie to ekran, który można ponownie podłączyć . Na przykład:

ssh -t username@host "screen -dmS 'NAMEofSCREEN' echo | wall"

Otrzymasz wallwiadomość ...

Broadcast message from user@host (pts/15) (Tue Jan 16 12:04:07 2018):

.. ale ekran zostanie natychmiast zamknięty po pomyślnym uruchomieniu polecenia


„lepiej zgrupować opcje razem”? Powiedziałbym, że jest to kwestia opinii i całkowicie nieistotna dla problemu PO.
szkarłatny-czapla

Przepraszamy, ale „-dmS” jest rodzajem standardowego ciągu opcji dla ekranu. Dzięki temu jest bardziej czytelny, po co korzystać z dodatkowej przestrzeni? Oczywiście nie jest to konieczne.
Robert Riedl

Masz rację, że dodatkowa przestrzeń nie jest potrzebna i prawdopodobnie łatwiejsza do odczytania, jeśli jesteś przyzwyczajony do patrzenia -dmS NAME, ale nadal nie odpowiada na problem podniesiony przez pytającego.
crimson-egret

Zaktualizuję odpowiedź
Robert Riedl

0

Widzę dwa (potencjalne) problemy z twoją inkantacją

ssh -t remote screen -S datanode -d -m ~/hadoop/bin/hdfs datanode
  1. Klient / local shell (jeden wykonanie ssh) to jeden rozszerza ~i zastąpienie wartości $HOME, która może być różna od zdalnego serwera. Zaproponuj użycie ścieżki względnej (np. ./hadoop/bin/hdfs) Lub ścieżki w pełni kwalifikowanej lub zacytowanie polecenia zdalnego pojedynczymi cudzysłowami (np. „~ / Hadoop / bin / hdfs datanode”), aby zapobiec ekspansji na kliencie.
  2. Ponieważ screenpolecenie uruchamia odłączoną instancję, ale nadal jest procesem potomnym powłoki uruchomionej przez ssh, jest przerywane po wyjściu powłoki zdalnej.

Co więcej, ponieważ screen tworzy własne tty, nie potrzebujesz takiej -topcji ssh.

Spróbuj zamiast tego użyć -fpolecenia, sshaby przejść w tło tuż przed wykonaniem polecenia. to znaczy:

ssh -f remote screen -S datanode -d -m ./hadoop/bin/hdfs datanode

Równie ważna alternatywa przy użyciu nohup:

ssh remote nohup screen -S datanode -d -m ./hadoop/bin/hdfs datanode
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.