Uzyskuję dostęp do serwera z systemem CentOS (dystrybucja Linuksa) z połączeniem SSH. Ponieważ nie zawsze mogę być zalogowany, używam „nohup [polecenie] &” do uruchamiania programów.
Nie mogłem znaleźć listy wszystkich programów, z których zacząłem używać nohup. „Jobs” działa tylko przed wylogowaniem. Po tym, jeśli ponownie się zaloguję, polecenie jobs nic nie pokazuje, ale w plikach dziennika mogę zobaczyć, że moje programy nadal działają.
Czy jest sposób, aby uzyskać listę wszystkich programów, z których zacząłem używać „nohup”?
Odpowiedzi:
Kiedy zacząłem
$ nohup storm dev-zookeper
,METODA 1: za pomocą
jobs
,prayagupd@prayagupd:/home/vmfest# jobs -l [1]+ 11129 Running nohup ~/bin/storm/bin/storm dev-zookeeper &
METODA 2: za pomocą
ps
polecenia.$ ps xw PID TTY STAT TIME COMMAND 1031 tty1 Ss+ 0:00 /sbin/getty -8 38400 tty1 10582 ? S 0:01 [kworker/0:0] 10826 ? Sl 0:18 java -server -Dstorm.options= -Dstorm.home=/root/bin/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dsto 10853 ? Ss 0:00 sshd: vmfest [priv]
Kolumna TTY z
?
=>nohup
uruchomionymi programami.Opis
Odniesienie
$ man ps
#, a następnie wyszukaj/PROCESS STATE CODES
źródło
nohup
. Zawiera listę procesów, które nie są dołączone do terminala TTY, co jest zupełnie inną rzeczą: procesy uruchomione za pomocąnohup
pozostają dołączone do swojego nadrzędnego TTY, dopóki nie zostanie zamknięty; procesy, które nie są dołączone do urządzenia TTY, niekoniecznie zostały uruchomionenohup
. Oznacza to, że metoda 2 wymienia, między innymi , niektóre programy działające znohup
.Zamiast tego
nohup
powinieneś użyćscreen
. Osiąga ten sam rezultat - Twoje polecenia działają „odłączone”. Możesz jednak wznowić sesje ekranowe i wrócić do ich „ukrytego” terminala i zobaczyć ostatni postęp w tym terminalu.screen
ma wiele opcji. Najczęściej używam tych:Aby rozpocząć pierwszą sesję ekranu lub przejąć ostatnią odłączoną:
Aby odłączyć się od bieżącej sesji: Ctrl+ACtrl+D
Możesz także uruchomić wiele ekranów - przeczytaj dokumentację.
źródło
Jeśli masz standardowe przekierowanie wyjścia do „nohup.out”, po prostu zobacz, kto używa tego pliku
źródło
man lsof
: "Ogólnie wątki i zadania dziedziczą pliki dzwoniącego, ale niektóre mogą zamykać i otwierać inne, więc lsof zawsze raportuje wszystkie otwarte pliki wątków i zadań." Nie mogłem znaleźć informacji o nohup w jego człowieku, ale wygląda na to, że używa dwóch wątków, a nie jednego.Nie można dokładnie uzyskać listy poleceń, od których rozpoczęto,
nohup
ale można je zobaczyć wraz z innymi procesami za pomocą poleceniaps x
. Polecenia rozpoczęte odnohup
będą miały znak zapytania w kolumnie TTY.źródło
Możesz także po prostu użyć górnej komendy, a Twój identyfikator użytkownika wskaże uruchomione zadania i ich czasy.
$ top
(to pokaże wszystkie uruchomione zadania)
$ top -U [user ID]
(Spowoduje to wyświetlenie zadań specyficznych dla identyfikatora użytkownika)
źródło