화면에서 스크립트 실행


25

분리 된 화면에서 bash 스크립트를 실행하고 싶습니다. 스크립트는 프로그램을 몇 번 호출하는데, 각 프로그램을 기다리는 데 시간이 너무 오래 걸립니다. 첫 번째 생각은 단순히 화면을 열고 스크립트를 호출하는 것이었지만 ctrl-a d스크립트가 실행되는 동안 분리 할 수없는 것 같습니다 . 그래서 나는 약간의 연구를하고 shebang을 다음과 같이 바꾸라는 지시 를 찾았습니다 .

#!/usr/bin/screen -d -m -S screenName /bin/bash

그러나 그것은 작동하지 않습니다 (옵션은 인식되지 않습니다). 어떤 제안?

추신 : 지금 screen -dmS name ./script.sh은 아마도 내 목적으로 작동 하는 것이지만 지금 은 이것을 스크립트에 통합하는 방법에 대해 궁금합니다. 고맙습니다.

답변:


28

shebang 라인은 일부 유닉스 변형에서는 작동하지만 Linux에서는 작동하지 않을 수 있습니다. Linux의 shebang 라인은 제한되어 있습니다. 하나의 옵션 만 사용할 수 있습니다. 전체 문자열 -d -m -S screenName /bin/bashscreen다른 단어로 전달되는 대신 단일 옵션 으로 전달됩니다.

화면 내에서 스크립트를 실행하고 여러 파일이나 따옴표로 엉망으로 만들지 않으려면 스크립트를 셸 스크립트로 만들어 화면 내부가 아닌 경우 화면을 호출합니다.

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff

잘 작동합니다. "$0"여기에 무엇입니까?
Fabich

4
@Lordofdark 스크립트 이름입니다. 스크립트를 발동 screen가 호출하는 /bin/bash스크립트를 다시 호출합니다.
Gilles 'SO- 악한 중지

16

화면 매뉴얼 페이지에 따르면 :

  • screen -d -m 분리 모드에서 시작 화면. 새 세션이 생성되지만 연결되지는 않습니다. 시스템 시작 스크립트에 유용합니다.
  • -S sessionname 새 세션의 이름을 sessionname으로 설정하십시오.

그래서 내가 명령을 실행할 때 당신은 제공했습니다 : screen -dmS name ./script.sh

Screen은 name이라는 창을 시작하고 해당 script.sh를 자동으로 실행합니다. 상태를 확인하기 위해 다시 들어가려면 간단히 입력하십시오.screen -r test

Ubuntu 14.04에서는 명령이 약간 다릅니다. 시험:

screen -d -m -S test

이제 스크립트를 실행하려면 구성 파일로 이동해야합니다.

sudo vim /etc/screenrc

일단 아래로 스크롤하면 아래로 스크롤됩니다.

# Example of automatically running some programs in windows on screen startup.
#
#   The following will open top in the first window, an ssh session to monkey
#   in the next window, and then open mutt and tail in windows 8 and 9
#   respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

실행할 스크립트 이름을 추가해야하는 섹션으로, 화면에서 필요한 모든 작업을 수행 할 수 있습니다.


어떻게 든 그 명령 ( screen -dmS ...)이 실제로 작동하더라도 작동하지 않습니다. 나는 그것을 실행 한 다음 screen -ls소켓을 찾을 수 없습니다. 생각?
bongbang

어떤 배포판을 사용하고 있습니까?
ryekayo

NAME = "Ubuntu"VERSION = "14.04.1 LTS, Trusty Tahr"라고 생각합니다. 가상 머신입니다.
bongbang

그냥 작업을 떠나 병이
나도

@ 봉방-어떤 버전의 화면이 있습니까?
slm

3

이것은 조금 오래되었지만이 작업을 수행 할 수있는 몇 가지 스레드 중 하나입니다. 우분투 14를 사용하여 분리 모드로 실행하는 유일한 방법은

screen -d -m -t nameofwindow sh nameoflaunch.sh

발사는 현재 자바 명령과 서버 버전을 포함하는 위의 두 번째 부분입니다. 나는 바닐라를 달린다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.