명령으로 Unix Screen 명령을 어떻게 시작합니까?
-
23-08-2019 - |
문제
에 따르면 유닉스 "화면"명령의 문서, .screenrc로 구성하여 많은 기본 화면으로 시작하여 각각 지정하는 명령을 실행할 수 있습니다.
여기 내 cofig가 있습니다.
# Default screens
screen -t "shell_0" 1
screen -t "autotest" 2 cd ~/project/contactdb ; autotest
Autotest 명령을 실행하지 않습니다. 내가 달리려고하는 그 창 autotest
시작하면 즉시 닫습니다 screen
.
나는 또한 단지 그것을 시도했다 ...
screen -t "autotest" 2 cd ~/project/contactdb
동일한 결과.
나는 또한 시도했다 ...
screen -t "autotest" 2 ls
같은 결과도 있습니다.
시작시 주어진 화면에서 명령을 실행하도록하는 비밀은 무엇입니까?
해결책
귀하의 프로그램이 실행되고 있습니다 (CD 제외). 부모 쉘없이 실행되는 것만이므로 완료 되 자마자 종료되고 완료되었습니다.
당신은 할 수 있습니다 :
screen -t "autotest" 2 bash -c 'cd ~/project/contactdb ; autotest'
두 개의 껍질을 낳지 만 인생은 아마도 계속 될 것입니다.
다른 팁
이 시도:
$ screen -S 'tailf messages' -d -m tailf /var/log/messages
그런 다음 나중에 할 수 있습니다.
$ screen -ls
1234.tailf messages
다음과 같은
$screen -r 1234
이것은 도움이 될 수 있지만 전적으로 원하는 것이 아닐 수도 있습니다.
"Zombie AZ"또는 "defzombie az"를 .screenrc의 첫 줄로 넣으십시오. "AZ"는 원하는 2 개의 키가 될 수 있습니다. 이제 화면이 닫히면 (예를 들어 명령이 완료됨) 실제로 닫히지 않습니다. 'A'를 치면 닫히면 'Z'를 누르면 해당 화면에 첨부 된 명령이 다시 시작됩니다.
나는 그것을 발견했다 화면 사용자 매뉴얼.
마치 입력 한 것처럼 문자를 화면에 "물건"할 수도 있습니다.
예를 들어 할 수있는 방법은 다음과 같습니다.
screen -t "shell_0" 1
# create the following screen in the desired dir, instead of cd-ing afterwards :)
chdir ~/project/contactdb
screen -t "autotest" 2
# (without this sometimes screens fail to start correctly for me)
sleep 5
# paste some text into screen number 2:
select 2
stuff "autotest\012"
내 모습은 다음과 같습니다. 잘 작동하는 것 같습니다. "Autotest"명령이 존재하지 않으면 괄호가 문제를 일으키거나 화면이 창을 열지 않을 수 있다고 생각합니다.
screen -t zsh 1 screen -t emacs 2 emacs -nw screen -t mutt 3 mutt monitor on screen -t mc 4 mc -s screen -t elinks 4 elinks
내가하는 방법은 다음과 같습니다.
screen -t shell_0
chdir ~/project/contactdb
screen -t autotest autotest
상기는 화면에 의해 절차 적으로 평가되는 것으로 보인다. 먼저 제목으로 새 화면을 설정합니다 shell_0
. 다른 옵션을 제공하지 않았기 때문에 현재 작업 디렉토리는 부모 쉘 또는 사용자의 홈 디렉토리의 디렉토리가 될 것입니다. 그런 다음 새 화면의 기본 디렉토리를 ~/project/contactdb
. 다음으로, 우리는 새로운 화면을 실행합니다 autotest
명령.
창 번호 (n
) 선택 사항입니다. 일반적으로 생략합니다.