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.
linux
command-line
putty
process
gnu-screen
użytkownik3331952
źródło
źródło
set -m;
sprawia, że moje skrypty nadal działają po wylogowaniu z CentOS i RHEL.Odpowiedzi:
Próbować
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.
źródło
nohup
, jest to w zasadzie „brak zawieszenia” - w przypadku nohupHUP
sygnał hangup ( ) jest ignorowany.Jeśli chcesz odczytać wynik później, możesz użyć
screen
:To daje odłączony terminal, do którego możesz podłączyć później (
screen -r
), aby odczytać wyjście stdout / stderr.źródło
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.! :)Inną opcją, jeśli
nohup
polecenie nie jest dostępne, jest użycie polecenia disown .Najpierw możesz wyświetlić zadania w tle, uruchamiając je
jobs
w 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.
źródło
Ponieważ
screen
zostało wspomniane: istnieją inne multipleksery zaciskowe tam. Bardzo mi się podobatmux
, patrz np. To inne pytanie superużytkownika, tmux vs screen dla porównania.źródło
Możesz także spróbować:
setsid
Setsid działa również z programami działającymi w tle i pozwala im działać po rozłączeniu sesji terminal / ssh.Użyj tego w ten sposób:
Manpage: http://man7.org/linux/man-pages/man2/setsid.2.html
źródło