Najlepszą metodą jest rozpoczęcie procesu w terminalowym multiplekserze. Alternatywnie możesz sprawić, że proces nie odbierze sygnału HUP.
Zacisk multiplekser zapewnia „wirtualnych” terminale, które działają niezależnie od „prawdziwego” terminala (właściwie wszystkie terminale są dziś „wirtualne”, ale to inny temat na inny dzień). Wirtualny terminal będzie działał, nawet jeśli twój prawdziwy terminal jest zamknięty sesją ssh.
Wszystkie procesy uruchomione z wirtualnego terminala będą działały z tym wirtualnym terminalem. Po ponownym połączeniu z serwerem możesz ponownie połączyć się z wirtualnym terminalem i wszystko będzie tak, jakby nic się nie wydarzyło, oprócz upływu czasu.
Dwa popularne multipleksery terminalowe to screen i tmux .
Ekran ma stromą krzywą uczenia się. Oto dobry samouczek ze schematami wyjaśniającymi koncepcję: http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
Sygnał HUP (lub SIGHUP) jest wysyłany przez terminal do wszystkich jego procesów potomnych, gdy terminal jest zamknięty. Powszechnym działaniem po otrzymaniu SIGHUP jest zakończenie. Tak więc, gdy twoja sesja ssh zostanie rozłączona, wszystkie twoje procesy zakończą się. Aby tego uniknąć, możesz sprawić, że twoje procesy nie będą otrzymywać SIGHUP.
Dwie proste metody to nohup
i disown
.
Aby uzyskać więcej informacji o tym, jak nohup
i jak disown
działa, przeczytaj to pytanie i odpowiedź: https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
Uwaga: chociaż procesy będą nadal działać, nie możesz już z nimi współdziałać, ponieważ nie są one już podłączone do żadnego terminala. Ta metoda jest przydatna głównie w przypadku długotrwałych procesów wsadowych, które po uruchomieniu nie wymagają już żadnych działań ze strony użytkownika.
screen
daje o wiele więcej opcji, ale jeśli używasz,authorized_keys
aby umożliwić ludziom zdalne uruchamianie skryptu za pomocąssh
, tanohup
opcja jest przyjemnym prostym sposobem na uruchomienie przez skrypt procesów trwających dłużej niżssh
sesja, przy której je uruchomiono. .