Linux Mint 시작 시 bash 스크립트를 실행하고 자동으로 메이트 터미널 열기

Linux Mint 시작 시 bash 스크립트를 실행하고 자동으로 메이트 터미널 열기

나는 Linux를 처음 접했기 때문에 내가 원하는 것을 어떻게 해야 할지 모르겠습니다.

나는 my_script.sh(물론 실행 가능) 이것을 가지고 있습니다 :

#!/usr/bin/env bash
mate-terminal -e "bash -c 'cd /home/my_user/ruby_projects/my_app/';'rails s';exec $SHELL"

노트:스크립트는 터미널을 열고, 현재 디렉터리를 터미널의 지정된 디렉터리로 변경하고, 터미널을 닫지 않고 Rails 애플리케이션을 시작해야 합니다. 이러한 모든 작업은 시스템 시작 후 자동으로 수행되어야 합니다(지금은 이 스크립트를 수동으로 실행합니다). 스크립트에는 몇 가지 유사한 명령이 포함되어 있으므로 일부 터미널을 열어야 합니다.

터미널을 열면 스크립트 디렉토리로 이동하여 실행합니다 ./my_script.sh. 모든 것이 완벽하고 원하는 방식으로 정확히 작동하지만 시작할 때마다 이 작업을 수동으로 수행해야 합니다.

그래서 제어 센터 -> 응용 프로그램 시작 -> 추가 -> 쉘 스크립트 찾아보기, 이름 지정 -> 추가로 이동합니다.

그 후 시스템을 재부팅하고... :( 내가 본 것은 화면에서 몇 번의 깜박임(예: 동반 터미널의 열림 및 닫힘)뿐이었습니다. 모든 일이 너무 빨리 일어나서 볼 수 없었습니다. 표시되는 내용(단, 모든 터미널은 열려 있어야 합니다!) 물론 모든 Rails 애플리케이션도 닫혀 있습니다. 이 문제를 해결하는 방법은 무엇입니까?

업데이트: 처음에는 Rails 앱에 필요한 모든 프로세스가 시작되지 않았기 때문에 터미널이 단순히 닫혔다고 생각했습니다. 그래서 sleep 10모든 것이 제대로 시작될 때까지 기다리는 스크립트를 추가하려고 시도했지만 변경되지 않았습니다. 딱 10초 지연됐어요.

답변1

하루 종일 열심히 일한 끝에 마침내 필요했던 더 나은 것을 얻었습니다.

#!/bin/bash

# Adds RVM to needed paths to start servers with needed Ruby version
PATH=$PATH:$HOME/.rvm/bin
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

# I need this server to run in background
startLocalRedmineServer()(
cd /home/adminuser/ruby_projects/redmine/
rails server webrick -e production --port 3001
)

# I need this to be done in background also
proxyLocalRedmineServer()(
proxylocal 3001 --host=mylocalredmine
)

# This thing should open mate-terminal, run start server, so that I can see real time logs, and stay on the screen in case I need it to be restarted
startOtherLocalServer()(
mate-terminal -e "bash -c 'cd /home/adminuser/ruby_projects/project_abc/';'rails s';'exec /bin/bash'"
)

# This thing should open mate-terminal and start proxying + remain opened
proxyOther()(
mate-terminal -e "bash -c 'proxylocal 3000 --host=projectabc'; 'exec /bin/bash'"
)

startLocalRedmineServer &
proxyLocalRedmineServer &
startOtherLocalServer &
proxyOther &
wait

위 질문에 쓴 것처럼 이 스크립트는 시작을 위해 추가되었습니다. 시스템이 부팅된 후 이 스크립트는 누락된 새 경로를 추가한 다음 4개의 별도 하위 프로세스를 시작합니다. 그 중 두 개, 즉 Redmine 서버와 해당 에이전트는 백그라운드에서 작동합니다(중단하거나 아무것도 변경할 필요가 없습니다). 다른 두 함수는 별도의 터미널을 열고, 로컬 Rails 서버를 시작하고 필요한 경우 중지하거나 다시 시작할 수 있도록 프록시합니다.

관련 정보