예전에 잠시 해보고 잊고 있었는데

다시 시도..


$ tty

/dev/pts/1


$ screen

$ tty

/dev/pts/6


ctrl-a,c

$ tty

/dev/pts/7


ctrl-a,n

window change


ctrl-a,d detach

[detached from 4014.pts-1.odroid_1]

// detach 시에는 다른 창을 만들어 두었더라도 전부 같이 떨어진다.


$ ps -ef | grep -i screen

odroid    4014     1  0 11:49 ?        00:00:00 SCREEN


$ screen -r

reattach


ctrl-a,? 도움말

                       Screen key bindings, page 1 of 2.


                       Command key:  ^A   Literal ^A:  a


  break       ^B b         license     ,            removebuf   =

  clear       C            lockscreen  ^X x         reset       Z

  colon       :            log         H            screen      ^C c

  copy        ^[ [         login       L            select      '

  detach      ^D d         meta        a            silence     _

  digraph     ^V           monitor     M            split       S

  displays    *            next        ^@ ^N sp n   suspend     ^Z z

  dumptermcap .            number      N            time        ^T t

  fit         F            only        Q            title       A

  flow        ^F f         other       ^A           vbell       ^G

  focus       ^I           pow_break   B            version     v

  hardcopy    h            pow_detach  D            width       W

  help        ?            prev        ^H ^P p ^?   windows     ^W w

  history     { }          quit        \            wrap        ^R r

  info        i            readbuf     <            writebuf    >

  kill        K k          redisplay   ^L l         xoff        ^S s

  lastmsg     ^M m         remove      X            xon         ^Q q


                  [Press Space for next page; Return to end.]


                       Screen key bindings, page 2 of 2.


^]   paste .

"    windowlist -b

-    select -

0    select 0

1    select 1

2    select 2

3    select 3

4    select 4

5    select 5

6    select 6

7    select 7

8    select 8

9    select 9

I    login on

O    login off

]    paste .

|    split -v

:kB: focus prev



                        [Press Space or Return to end.]  


한개 터미널에서 screen 실행중에 다른 터미널에서 확인한 결과

$ ps -ef | grep -i screen

odroid    4014     1  0 11:49 ?        00:00:00 SCREEN

odroid   17153  1554  0 11:57 pts/1    00:00:00 screen -r 


실수로 screen 안에서 screen -r 하니 이런 에러가 뜨네

$ screen -r

There is a screen on:

        4014.pts-1.odroid_1     (22/10/16 11:49:14)     (Attached)

There is no screen to be resumed. 


두개 터미널에서 detach 하니 이렇게 뜬다.

detach한 pts 번호가 뜨니 골라서 붙이면 된다.

물론 프로세스 정보 상으로는 tty가 ?로 뜸

$ screen -r

There are several suitable screens on:

        24631.pts-12.odroid_1   (22/10/16 12:02:24)     (Detached)

        4014.pts-1.odroid_1     (22/10/16 11:49:13)     (Detached)

Type "screen [-d] -r [pid.]tty.host" to resume one of them. 


$ ps -ef | grep -i screen

odroid    4014     1  0 11:49 ?        00:00:00 SCREEN

odroid   24631     1  0 12:02 ?        00:00:00 SCREEN


머랄까.. screen 프로그램이 중재자로

자신을 통해서 여러개의 pts를 오갈수 있는 컨셉?


[링크 : https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/]

2012/07/07 - [Linux] - ssh 를 통해 프로그램 실행후 로그아웃 해도 종료되지 않게 하기

2012/07/09 - [Linux/Ubuntu] - screen 유틸의 프로세스 구조(?)


Posted by 구차니

댓글을 달아 주세요

-d -m 옵션으로 실행하면 그냥 프롬프트로 떨어진다.
즉, 실행하면서 바로 detached 시킨다.

       -d -m   Start screen in "detached" mode. This creates a new session but
               doesn't  attach  to  it.  This  is  useful  for  system startup scripts.

       -D -m   This also starts screen in "detached" mode, but doesn't fork  a
               new process. The command exits if the session terminates. 

 
Posted by 구차니

댓글을 달아 주세요

아따 제목길다 -_-
아무튼 ssh를 통해서 실행하고 백그라운드로 돌려도
ssh를 접속 종료 하면 프로세스가 죽어 버린다.
그래서 vnc 등으로 서버에 직접 접속해서 실행하는 수 밖에 없었는데
그렇다고 해서 프로세스의 PPID(Parent PID)를 변경하는 법을 찾아도 이건 아닌거 같고 -_-
아무튼, 방법을 찾아보니 아래와 같은 명령어 / 유틸리티들이 존재한다.

nohup
screen
dtach
disown

[링크 : http://www.linuxquestions.org/.../how-to-keep-program-running-after-closing-ssh-session-471820/ ]

screen을 사용하기
$ screen rtorrent
// 화면에서 ctrl - a + d
$ screen rtorrent 
 [detached from 2720.pts-1.devmini]
$ screen -RD
// 떼어놨던 rtorrent를 다시 붙임 

[링크 : http://serverfault.com/questions/311593/keeping-a-linux-process-running-after-i-logout ] 


단, 우분투 11.04 에서 테스트 할 경우
Putty로는 ctrl-a+d를 보낼수 없어서 vnc를 통해서 실행했고
screen 명령으로 detach 했을 경우, dashboard에서 띄워놓은 terminal이 실행중으로 인식하여
우클릭으로 new terminal로 터미널을 새로 띄워야 한다. 
Posted by 구차니

댓글을 달아 주세요