화면에서 스크립트 실행

화면에서 스크립트 실행

분리된 화면에서 bash 스크립트를 실행하고 싶습니다. 스크립트는 프로그램을 몇 번 호출하는데, 각 호출은 기다리는 데 너무 오랜 시간이 걸립니다. 내 첫 번째 생각은 단순히 화면을 연 다음 스크립트를 호출하는 것이었지만 ctrl-a d스크립트가 실행되는 동안 (을)로 분리할 수 없는 것 같습니다 . 그래서 좀 조사를 하다가 이런 걸 발견했어요지침Shebang을 다음으로 바꾸십시오.

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

하지만 그것도 작동하지 않습니다(옵션이 인식되지 않습니다). 어떤 제안이 있으십니까?

PS 아마도 지금 내 목적에 맞을 것 같다는 생각이 들지만 screen -dmS name ./script.sh, 이것을 스크립트에 통합하는 방법이 여전히 궁금합니다. 감사합니다.

답변1

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

여러 파일이나 인용문을 사용하지 않고 화면 내에서 스크립트를 실행하려면 아직 화면 내부가 아닌 경우 화면을 호출하는 쉘 스크립트로 스크립트를 만들 수 있습니다.

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

답변2

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

  • 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

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

답변3

이것은 약간 오래되었지만 이 작업을 수행하기 위해 찾을 수 있는 몇 안 되는 스레드 중 하나입니다. 우분투 14를 사용하여 분리 모드에서 이것을 실행하는 유일한 방법은 고민한 후입니다.

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

출시는 현재 Java 명령과 서버 버전을 포함하는 위의 두 번째 부분입니다. 나는 바닐라를 운영한다.

관련 정보