ncurses 라이브러리를 사용하는 원격 서버에서 원격 애플리케이션(ConnectionManager라는 이름)을 실행하고 이를 내 로컬 컴퓨터에서 시작해야 합니다.
ConnectionManager는 ncurses를 사용하고 다른 프로세스(자체)를 분기하고 들어오는 tcp/ip 연결을 기다리는 프로그램입니다.
우수한:
Distributor ID: ScientificSL
Description: Scientific Linux SL release 5.5 (Boron)
Release: 5.5
Codename: Boron
(Like Centos5.5)
나는 다음 스크립트를 사용합니다.
#!/bin/bash
INFORMIXDIR=/opt/informix
INFORMIXSERVER=server1_on
ONCONFIG=onconfig.eda
PATH=$PATH:$INFORMIXDIR/bin
export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH
echo $INFORMIXSERVER
echo $ONCONFIG
echo "Launch ConnectionManager"
export DISPLAY=:0.0 && xterm -e 'sudo -E /opt/informix/server /ConnectionManager'
모두 작동합니다.
이전 스크립트가 작동하지 않습니다
Distributor ID: Scientific
Description: Scientific Linux release 6.4 (Carbon)
Release: 6.4
Codename: Carbon
ConnectionManager는 IP 연결을 허용하지 않습니다.
ConnectionManager 프로그램을 로컬 컴퓨터에서 시작할 때 원격 컴퓨터에서도 실행하고 싶습니다.
뭐가 문제 야?
나는 열심히 노력했다 screen -d -m ./ConnectionManager
. 애플리케이션이 실행되지만 원격 컴퓨터에서는 볼 수 없습니다. xterm 창에서 ConnectionManager를 봐야 합니다.
sudo가 ConnectionManager tcp/ip 연결을 차단할 수 있습니까?
업데이트: 이 명령을 사용하면 sudo './ConnectionManager' 즉시 다음 메시지가 나타납니다. [1]+ 중지됨 sudo './ConnectionManager'
코드를 확인했는데 문제는 int setpgrp(void)
ConnectionManager의 지시문입니다.
왜?
답변1
@MichaelKjörling이 의견에서 제안한 대로 ConnectionManager
터미널 멀티플렉서(예: 또는 )에서 또는 스크립트를 실행할 수 있습니다.screen
tmux
예제 명령을 사용하면 거의 다 왔습니다.
$ screen -d -m ./ConnectionManager
이 명령을 실행하면 터미널에서 분리되므로 ConnectionManager
부팅 후 출력이 표시되지 않습니다. 다음 명령을 사용하여 이 특정 화면 세션에 다시 연결할 수 있습니다.
$ screen -r
Control연결을 끊으려면 + A+ 키 조합을 사용하세요 D. 나는 니모닉 "주의" + "연결 끊김"을 항상 기억합니다.
이 스크립트를 사용해야 하는 경우 screen
세션에서도 실행할 수 있도록 약간 수정하면 됩니다.
#!/bin/bash
INFORMIXDIR=/opt/informix
INFORMIXSERVER=server1_on
ONCONFIG=onconfig.eda
PATH=$PATH:$INFORMIXDIR/bin
export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH
echo $INFORMIXSERVER
echo $ONCONFIG
echo "Launch ConnectionManager"
sudo -E /opt/informix/server/ConnectionManager
ConnectionManager
그런 다음 스크린 세션에서처럼 이 스크립트를 실행할 수 있습니다 .
$ screen -d -m yourscript.bash
그리고 위에서 언급한 것과 동일한 연결, 연결 끊기 방법을 사용하십시오. 화면의 경우 여러 화면 "세션"이 있는 경우 다음 명령을 사용하여 나열할 수 있습니다.
$ screen -ls
그런 다음 목록에서 하나를 선택하여 연결합니다.
$ screen -r <name>
예를 들어:
$ screen -ls
There are screens on:
1506.bp (Detached)
32090.dl (Detached)
2 Sockets in /var/run/screen/S-root.
$ screen -r 32090.dl