私は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つの別々のサブプロセスを開始します。そのうちの2つ、つまりRedmineサーバーとそのエージェントはバックグラウンドで動作します(中断したり何も変更する必要はありません)。他の2つの関数は別々の端末を開き、ローカルRailsサーバーを起動し、必要に応じて停止または再起動できるようにプロキシします。