![複数のコマンドを起動する画面付きシェルスクリプト](https://rvso.com/image/885990/%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E7%94%BB%E9%9D%A2%E4%BB%98%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.png)
スクリーンを介して 2 つの Minecraft サーバーを起動する簡単なスクリプトを作成しました。問題なく実行できますが、問題は、最初のコマンドにヒットしてその行が正常に実行されるものの、その後、作成したスクリーンに入り、2 番目の行を起動せずにサーバーに移動することです。両方のコマンドを強制的に起動するにはどうすればよいでしょうか。
スクリプトは次のとおりです。
#!/bin/bash
#Launches minecraft servers
#Plugin Test Server
screen -S PluginTest java -Xms1024M -Xmx1024M -XX:MaxPermSize=128M -jar /home/kalenpw/TestWorld/spigot-1.10.jar
#Khalidor Server
screen -S Khalidor java -Xms8192M -Xmx9216M -XX:MaxPermSize=128M -jar /home/kalenpw/KhalidorServer/spigot-1.10.jar
最初の PluginTest は正常に実行されますが、Khalidor の 2 行目は実行されません。
答え1
最初のコマンドの末尾に「&」を追加すると、2 番目のコマンドが実行できるようになります。したがって、最初のコマンドを次のように変更します。
screen -S PluginTest java -Xms1024M -Xmx1024M -XX:MaxPermSize=128M -jar /home/kalenpw/TestWorld/spigot-1.10.jar &
'&' により、コマンドはバックグラウンドで実行されます。2 番目のコマンドの最後にも 1 つ追加すると、スクリプトの実行後にプロンプトに戻り、両方のコマンドがバックグラウンドで実行されます。'jobs' コマンドを実行すると、これらを確認できます。