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.