명명된 세션

명명된 세션

화면에서 명령을 실행하고 분리하는 것은 매우 쉽습니다.

screen -S test -d -m echo "output of command that runs forever"

그러나 로깅을 위해 모든 출력을 파일로 파이프하고 싶습니다. 화면에서 다음을 실행하고 분리하려면 어떻게 해야 합니까?

echo "output of command that runs forever" &> output.log

편집하다:

명확히 하기 위해 간단히 화면을 시작하고 명령을 실행하려면 이 스크립트가 필요하며 분리는 옵션이 아닙니다.

답변1

추가 bash(또는 실제 셸) 호출로 명령을 래핑하고 그곳으로 리디렉션할 수 있습니다.

$ screen -dm bash -c 'echo hello > ./out'
$ cat ./out
hello

에서 man screen:

-d -m "분리" 모드의 시작 화면입니다. 그러면 새 세션이 생성되지만 연결되지는 않습니다. 이는 시스템 시작 스크립트에 유용합니다.

명명된 세션

screen -ls백그라운드 작업의 이름을 명확하게 지정하고 필요한 경우 다음을 추가하는 것이 적절할 수 있습니다 .

$ screen -S mysession -dm sleep 20
$ screen -ls
8431.mysession  (10/04/2021 12:47:58 PM)    (Detached)

# attach
$ screen -r mysession

매개변수 전달 방법

그러나 매개변수화는 번거로울 수 있습니다. bash전달 된 매개변수는 $0-- 참고 ignore_me_arg:

# note the outer-most quotes to be single -- we don't want them to
# be expanded on the caller's side, but on the callee's one

$ screen -dm bash -c 'echo $1 > ./out' ignore_me_arg hello
$ cat ./out
hello

마지막 예로, 어떤 작업을 수행하고 (이와 같이 ) super_script모든 인수를 인쇄하는 프로그램이 있다고 가정해 보겠습니다 . 내부에서 호출하고 , 리디렉션하고, 다른 매개변수 세트를 사용하여 모든 작업을 수행하고 싶습니다. 그러면 이렇게 해야 합니다:stdoutechoscreen

$ screen -dm bash -c 'super_script "$@"  > ./out.1' arg0 arg1
$ screen -dm bash -c 'super_script "$@"  > ./out.2' arg0 arg1 arg2
... wait for screen's to finish
$ cat out.1
arg1
$ cat out.2
arg1
arg2

답변2

screen-dms 작업 공간; screen-S 작업 공간-X 물건 $'ps aux > 출력-x\n'

먼저 -d 스위치를 사용하여 별도의 세션을 생성합니다. 이를 세션 작업 공간이라고 합니다. 그런 다음 -X를 사용하여 동일한 세션에 명령을 보냅니다. $''를 사용하지만 큰따옴표를 사용할 수도 있지만 \n 대신 M을 제어해야 합니다. 마음에 들지 않아서 보통 위에서 설명한 방법을 사용하세요.

이 코드가 실행되면 프로세스 목록과 함께 출력 -x를 찾을 수 있습니다. 그렇게 하면 다음과 같습니다.

스크린-ls

세션이 분리된 것을 볼 수 있습니다.

스크립트를 실행하고 싶다고 말씀하셨기 때문입니다. 분리된 세션(작업 공간을 사용 중)에 대한 스크립트 검색을 수행하고, 존재하는 경우 "screen -dmS sessionName"을 실행할 때마다 새 세션을 생성하는 대신 기존 세션에 명령을 보내도록 할 수 있습니다. "(예: 아래:

    #!/bin/bash
    if ! ( screen -ls | grep workspace > /dev/null); then
       screen -dmS workspace;
    fi
    screen -S workspace -X stuff $'ps aux > output-x\n'

답변3

당신은 사용할 수 있습니다 disown또는nohup

용법: SSH 세션을 닫은 후 WGET 다운로드 진행 상황을 모니터링하는 방법

관련 정보