목록에서 여러 화면 세션을 재개하고 닫는 방법
-
18-09-2019 - |
문제
저는 Ubuntu 9.04 사용자입니다. 다음과 같은 화면 세션 목록이 주어지면 :
9076.pts-30.moe (09/27/2009 11:30:08 PM) (Attached)
8778.pts-24.moe (09/27/2009 11:29:46 PM) (Detached)
8674.pts-0.moe (09/27/2009 11:29:25 PM) (Attached)
22649.pts-28.moe (09/27/2009 11:51:46 AM) (Detached)
22543.pts-24.moe (09/27/2009 11:50:56 AM) (Detached)
22228.pts-16.moe (09/27/2009 11:49:59 AM) (Detached)
시간 기준에 따라 여러 화면을 어떻게 마감합니까? 예를 들어, 모든 화면은 오후 12시 이전에 시작되었습니다. 나는 일반적으로 다음을 입력 할 것입니다.
screen -dr 22649.pts-28.moe
exit
...
그리고 각각을 수동으로 닫지 만 이것은 지루합니다. 미리 감사드립니다.
해결책
-X 매개 변수를 사용하여 화면에 명령을 보낼 수 있습니다. 따라서 "screen -s 22649.pts -28.moe -x quit"으로 명령 줄에서 화면을 닫을 수 있습니다.
시간별로 화면을 선택하려면 시간을 비교하려면 스크립트를 실행해야한다고 생각합니다.
개인적으로 Python에서 os.popen () 및 time.strptime ()을 사용합니다.
다른 팁
분리 된 모든 화면을 죽이는 방법은 다음과 같습니다.
screen -ls | grep Detached | awk -F" " '{print $1}' | xargs -I{} screen -X -S {} kill
모든 화면을 강제로 죽이고 싶다면 변경하십시오. grep Detached
위로 grep tached
. 최소한 모든 타인을 위해 일합니다!
시간 기준의 경우 다음과 같이 시작할 수 있습니다.
screen -ls | grep Detached | awk -F " " '{print $2,$3,$4","$1}'
이것은 다음과 같은 것을 인쇄합니다.
(01/03/2012 02:10:42 AM),4504.test2
(01/03/2012 02:10:12 AM),4445.test1
(01/03/2012 02:02:58 AM),4333.test0
첫 번째 그룹이 타임 스탬프이고 쉼표로 분리 된 곳은 pid.name입니다.
따라서 사용/파이프를 사용할 수 있습니다 awk
(또는 awk -F"," '{print $1}'
타임 스탬프를 정확히 괄호 안에서만 추출하려면 괄호 안에 시간을 구문 분석합니다. screen -ls
항상 가장 빠른 화면을 마지막으로 나열합니다!
나는 시간 기준 필터링을 직접 필터링하는 방법을 알아 내지 않았다. 내가 할 수 있다면 미래에 이것을 편집 할 것이다 .. 행운을 빕니다.
도트 앞의 숫자 (22649
당신의 예에서) 화면 프로세스의 PID가 있습니다. 그냥 죽여 (kill 22649
)