Kontynuuj działanie programu po zamknięciu konsoli, po uruchomieniu programu [duplikat]

8

Możliwa duplikat:
Jak całkowicie odłączyć proces od terminalu?

Mam program działający w konsoli Unix na zdalnym komputerze z systemem Unix. (Głupio) nie uruchomiłem go nohup &, a teraz muszę zamknąć konsolę lokalną.

Czy jest jakiś sposób, aby nadal działał zdalnie po zamknięciu lokalnej konsoli?

Thrawn
źródło

Odpowiedzi:

12

Jeśli masz powłokę bash, możesz ich użyć disown. Ctrl-Z, aby zawiesić proces, a następnie disown -hsprawić, aby nie otrzymywał SIGHUP.

Douglas Leeder
źródło
Genialne rozwiązanie. Udało się :-)
Thrawn
3
Po prostu ciekawe: skoro proces jest zawieszony, czy nie należy tego ostatecznie przestrzegać, bgczy coś w tym rodzaju? Czy też też to disown -hwznawia?
Arjan
Czy to zadziała, jeśli proces działa w środku screen? xtermZamiast tego chciałbym kontynuować proces w moim regularnym .
głosy
Kiedy IIRC się odrzucił, nie będzie podłączony do żadnego terminalu
Douglas Leeder
5

W nohup -p <pid>systemie Solaris 9 można użyć do przerwania uruchomionego procesu. Oto interesujące wyjaśnienie wdrożenia. Nie wiem, czy zostało to zaimplementowane w jakichkolwiek innych Uniksach.

coneslayer
źródło
nohup: niepoprawna opcja - p Nie działa na Gentoo, Ubuntu ani Fedorze (uniksach, na których wypróbowałem to), ale mimo to dziękuję :-) Dobrze wiedzieć, że Solaris ma to.
Thrawn
2

Ctrl-Z, aby zawiesić proces, a następnie bgspowodować, że program przejdzie w tło i będzie działał do momentu zakończenia.

Matrix Mole
źródło
Problem polega na tym, że jeśli zamknę konsolę, również procesy w tle zatrzymają się. Potrzebuję czegoś, co odłączy proces od konsoli, tak jak robi to nohup, ale po rozpoczęciu procesu :-)
Thrawn
I nie sądzę, żeby „nohup bg &” zadziałało :-(
Thrawn
1
Wypróbowałem to na jednym z moich systemów i działało dobrze, gdy się wylogowałem (tylko du / >> tempjako program testowy), ale rozumiem, że jestem niezdecydowany, jeśli nie chcesz stracić programu lub jego wyników.
Matrix Mole
2

Jeśli możesz sobie pozwolić na zatrzymanie programu i zrestartowanie go przed wylogowaniem, zatrzymaj go i uruchom ponownie za pomocą ekranu , który jest koniecznością dla każdego, kto używa zdalnych połączeń z hostami unix.

maniak
źródło
1
Myślę, że głównym problemem jest to, że chciałby nie zatrzymać programu.
Gnoupi
1
Tak, chciałbym, aby program nie został zatrzymany :-)
Thrawn
Gorąco polecam screen do wykorzystania w przyszłości w takiej sytuacji (prawie zawsze mam sesję screen uruchomioną na każdym systemie, na którym mam kilka).
Matrix Mole
1
Kilka lat później zdałem sobie sprawę, że jestem głupcem, że nie używam screena :-)
Thrawn