nohup으로 실행되는 프로그램 목록을 얻는 방법


81

SSH 연결로 CentOS (Linux 배포판)를 실행하는 서버에 액세스하고 있습니다. 항상 로그인 상태를 유지할 수는 없기 때문에 "nohup [command] &"를 사용하여 프로그램을 실행합니다.

nohup을 사용하여 시작한 모든 프로그램 목록을 얻는 방법을 찾을 수 없습니다. "작업"은 로그 아웃하기 전에 만 작동합니다. 그 후 다시 로그인하면 jobs 명령은 아무것도 표시하지 않지만 로그 파일에서 내 프로그램이 여전히 실행중인 것을 볼 수 있습니다.

"nohup"을 사용하기 시작한 모든 프로그램의 목록을 얻을 수있는 방법이 있습니까?


질문에 도움이되는 훌륭한 기사를 찾았습니다 : cyberciti.biz/faq/… . 가장 중요한 것은 ps 명령, 특히 stat 열의 출력을 해석 할 수 있다면 도움이됩니다. 그렇게하지 않으면, NOW 기사 ;-) 읽어 가서
jumping_monkey

답변:


115

나는 시작하면 $ nohup storm dev-zookeper,

방법 항목 : 사용 jobs,

prayagupd@prayagupd:/home/vmfest# jobs -l
[1]+ 11129 Running                 nohup ~/bin/storm/bin/storm dev-zookeeper &

METHOD2 : 명령 사용 ps.

$ 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] 

?=> nohup실행중인 프로그램이있는 TTY 열 .

기술

  • TTY 열 = 프로세스와 관련된 터미널
  • STAT 컬럼 = 프로세스 상태
    • S = 중단 가능한 절전 (이벤트가 완료되기를 기다리는 중)
    • l = 다중 스레드입니다 (NPTL pthread처럼 CLONE_THREAD 사용).

참고

$ man ps # 검색 /PROCESS STATE CODES


5
방법 2는로 시작된 프로그램을 나열하지 않습니다nohup . 완전히 다른 TTY에 연결되지 않은 프로세스를 나열합니다.nohup 는 닫힐 때까지 상위 TTY에 연결된 상태 유지됩니다. TTY에 연결되지 않은 프로세스는 반드시 nohup. 그 방법이 개 목록은,이다 사이에 다른 프로세스 의 일부 프로그램이 실행 nohup.
Arcturus B

4
작업이 나를 위해 작동하지 않고 동일한 ssh 세션에서만 작동합니다. 연결을 끊었다가 다시 연결하면 이전에 나열된 실행중인 nohup 프로세스가 더 이상 나열되지 않습니다
Mojimi

29

대신 nohup, 당신은 사용해야합니다 screen. 동일한 결과를 얻습니다. 명령이 "분리"로 실행됩니다. 그러나 화면 세션을 재개하고 "숨겨진"터미널로 돌아가서 해당 터미널 내부의 최근 진행 상황을 볼 수 있습니다.

screen많은 옵션이 있습니다. 가장 자주 사용합니다.

첫 번째 화면 세션을 시작하거나 가장 최근에 분리 된 세션을 인계하려면 :

screen -Rd 

현재 세션에서 분리하려면 : Ctrl+ACtrl+D

여러 화면을 시작할 수도 있습니다-문서를 읽어보세요.


6
나에게 좋은 대안 인 것 같습니다. 또한 "ps auwx"를 사용하여 PID를 찾을 수 있다는 것도 알아 냈습니다
Nils De Winter

7
질문에 "nohup"을 사용하기 시작한 모든 프로그램 목록을 얻을 수있는 방법이 있습니까? , 그러나이 답변은 질문을 약간만 다루지 않습니다. 왜 허용됩니까?
Luke Joshua Park

3
2013 년에는 도움이 된 유일한 답변 이었기 때문입니다.
닐스 드 겨울

21

표준 출력이있는 경우 "nohup.out"으로 리디렉션하여이 파일을 사용하는 사람을 확인하십시오.

lsof | grep nohup.out

1
그것은 현명한 방법입니다. 그러나 제 경우에는 결과가 반환되지 않습니다. nohup 명령이 여전히 실행 중이고 nohup.out 파일을 사용하고 있다고 확신하지만.
Julius Š.

1
모든 TTY에서 괜찮지 만 각 노후에 대해 이중 프로세스를 보여주세요!
Nabi KAZ

@ NabiK.AZ from man lsof: "일반적으로 스레드와 작업은 호출자의 파일을 상속하지만 일부를 닫고 다른 파일을 열 수 있으므로 lsof는 항상 스레드 및 작업의 모든 열린 파일을보고합니다." 나는 그 남자에서 nohup에 대한 정보를 찾을 수 없었지만 그것은 하나가 아닌 두 개의 스레드를 사용하는 것 같습니다.
Yaroslav Nikitenko 19

6

로 시작된 명령 목록을 정확하게 가져올 수는 없지만 명령 nohup을 사용하여 다른 프로세스와 함께 볼 수 있습니다 ps x. 로 시작되는 명령 nohup은 TTY 열에 물음표가 있습니다.


3
"ps x"는 도움이되지 않았지만 "ps auxw"는 도움이된다는 것을 알았습니다.
Nils De Winter

5

top 명령을 사용할 수도 있으며 사용자 ID는 실행중인 작업과 시간을 표시합니다.

$ top

(실행중인 모든 작업이 표시됨)

$ top -U [user ID]

(사용자 ID에 특정한 작업이 표시됩니다.)


또한, 이것에 대해 좋은 점은 당신이 일을보고 알 수 있도록이 완료 될 때 콘솔에 남아 있다는 것입니다
rgilligan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.