나중에 확인할 수 있도록 화면 내에서 작업을 실행 중인 상태로 두는 경우가 많지만, 때로는 화면 내에서 어떤 명령이 실행되고 있는지 확인해야 할 때도 있습니다. 일반적으로 다음과 같은 일종의 PHP 스크립트입니다.
screen -d -m nice -n -10 php -f convertThread.php start=10000
어떤 화면에서 어떤 명령을 실행하고 있는지 기록하지 않지만 프로세스를 종료하지 않고 화면에서 실행 중인 명령을 검사하여 진행 상황을 볼 수 있기를 원합니다.
화면 도움말 페이지에 옵션이 표시되지 않습니다.
답변1
나는 최근에 이것을해야했습니다. 스택 오버플로에서 나는 어떻게 대답했는지화면에서 실행 중인 프로세스의 PID를 찾습니다.. PID가 있으면 ps
이를 사용하여 명령을 얻을 수 있습니다. 해당 답변의 내용과 귀하의 상황에 대한 추가 내용은 다음과 같습니다.
다음과 같이 스크린 세션의 PID를 얻을 수 있습니다.
$ screen -ls
There are screens on:
1934.foo_Server (01/25/15 15:26:01) (Detached)
1876.foo_Webserver (01/25/15 15:25:37) (Detached)
1814.foo_Monitor (01/25/15 15:25:13) (Detached)
3 Sockets in /var/run/screen/S-ubuntu.
foo_Monitor
스크린 세션에서 Bash에서 실행되는 프로그램의 PID를 원한다고 가정해 보겠습니다 . 스크린 세션의 PID를 사용하여 알려진 PID의 PPID(상위 PID)를 검색하여 foo_Monitor
해당 세션에서 실행 중인 세션의 PID를 가져옵니다 .bash
$ ps -el | grep 1814 | grep bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1815 1814 0 80 0 - 5520 wait pts/1 00:00:00 bash
이제 세션의 PID를 얻으십시오 bash
.
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
이제 우리가 원하는 프로세스는저것PID. 명령을 중첩하면 됩니다. 이번에는 플래그를 사용하여 -v
프로세스 grep bash
를 가져옵니다.아니요큰 타격:
$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
이 PID를 사용하여 명령을 찾을 수 있습니다(두 번째 줄 끝 참조).
$ ps u -p 23869
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ? Sl Feb02 1147:09 /usr/lib/foo
함께 넣어보세요:
$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
답변2
screen -S <your-fancy-name>
실행되는 명령에 따라 스크린 세션에 의미 있는 이름을 지정하려면 어떻게 해야 합니까 ? 이름이 나열되어 screen -ls
복구 세션에 사용됩니다 screen -r <your-fancy-name>
.
다음을 추가하도록 편집되었습니다.
지난번에 그것이 내 관심을 끌었기 때문입니다. 귀하의 필요에 맞는 기능을 추가하여 tmux
정확히 동일한 기능 세트(더 많지는 않지만)를 제공합니다 . screen
FAQ에서: "tmux는 이스케이프 시퀀스를 사용하여 심각한 해킹 없이 실행 중인 응용 프로그램에 대한 창 이름을 자동으로 바꾸는 것을 지원합니다. 기본적으로 켜져 있습니다."