PuTTY lub OTHER - Kontynuuj wykonywanie polecenia nawet po wyjściu z PuTTY [duplikat]


13

Mam kilka poleceń, które muszę uruchomić. Te polecenia muszą być uruchamiane nawet po wyjściu z interfejsu. Kiedy mam dostęp do GUI Linuksa, wykonuję coś takiego:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

Każda pomoc będzie mile widziana.



Czy jest jakiś powód, dla którego nie korzystasz z tych usług jako demonów?
SevenSidedDie

Czy polecenia mają być usługami, które powinny działać prawie na 100% bez przerwy „na zawsze”, czy też długo działającym zadaniem przetwarzania, które powinno zakończyć się po pewnym czasie? Wszystkie odpowiedzi będą „działać” w obu przypadkach, ale właściwa rekomendacja będzie inna.
Peteris,

Jakiej konkretnej dystrybucji systemu Linux używasz? Przekonałem się, że uruchamianie set -m;sprawia, że ​​moje skrypty nadal działają po wylogowaniu z CentOS i RHEL.
ArtOfWarfare

Odpowiedzi:


33

Próbować

nohup Background_ScriptX &

nohup zapewnia, że ​​proces nie zostanie zakończony, gdy terminal zostanie zamknięty. Symbol & wypycha proces na drugi plan.

Mam nadzieję, że to było pomocne.


nohup zdecydowanie spełnia swoje zadanie
Pitto

Cieszę się, że mogę pomóc.
Eamonn Travers

15
screen ma jedną wyraźną przewagę nad nohupem : nohup nie pozwala ci wrócić do uruchomionego polecenia (np. następnego ranka, aby przeczytać jego standardowe wyjście, a następnie zdecydować się go zabić itp.). ekran pozwala zrobić dokładnie to.
Andreas F

1
nohup wysyła dane wyjściowe do pliku, w którym można je przetworzyć.
Brian Knoblauch,

Dla tych, którzy są nowicjuszami nohup, jest to w zasadzie „brak zawieszenia” - w przypadku nohup HUPsygnał hangup ( ) jest ignorowany.
Dan7119,

20

Jeśli chcesz odczytać wynik później, możesz użyć screen:

screen -d -m my_command

To daje odłączony terminal, do którego możesz podłączyć później ( screen -r), aby odczytać wyjście stdout / stderr.


2
+1. Po pierwsze, jeśli zamkniesz terminal (np. Kit), a następnie otworzysz go ponownie i ponownie przyłączysz do screen ( screen -r), będziesz mieć także wszystkie dane wyjściowe wyprodukowane przez program, a inaczej „przegapisz”. Dodatkowo ekran może robić tak wiele niesamowitych rzeczy, jak podzielone ekrany itp.! :)
Alberto Santini,

6

Inną opcją, jeśli nohuppolecenie nie jest dostępne, jest użycie polecenia disown .

Najpierw możesz wyświetlić zadania w tle, uruchamiając je jobsw terminalu. Możesz uzyskać numer zadania stamtąd.

Teraz wystarczy uruchomić, disown %[job number]a proces zostanie odłączony od bieżącego terminala i pozostanie przy życiu po wylogowaniu.

Uwaga dodatkowa: Upewnij się, że zadajesz prawidłowe pytanie. Jeśli korzystasz z rzeczywistych usług zgodnie ze wskazówkami w swojej próbce, możesz zastanowić się, jak utworzyć demona w wybranym systemie operacyjnym. Ma to na celu upewnienie się, że proces nadal działa po ponownym uruchomieniu i uczynienie go bardziej spójnym z innymi usługami.

Mam nadzieję że to pomoże.


3

Ponieważ screenzostało wspomniane: istnieją inne multipleksery zaciskowe tam. Bardzo mi się podoba tmux, patrz np. To inne pytanie superużytkownika, tmux vs screen dla porównania.


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.