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?

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.


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.


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.


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.


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
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.