![Скрипт оболочки с экраном, запускающим несколько команд](https://rvso.com/image/885990/%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%20%D1%81%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BE%D0%BC%2C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%8E%D1%89%D0%B8%D0%BC%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4.png)
Я написал простой скрипт для запуска двух серверов Minecraft через screen. Я могу запустить его нормально, но проблема в том, что он попадает на первую команду и отлично выполняет эту строку, но затем попадает на созданный им экран и переходит на сервер, даже не запустив вторую строку. Как заставить его запустить обе команды?
Вот сценарий:
#!/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 не запускается.
решение1
Если вы добавите '&' в конец первой команды, это позволит запустить вторую команду. Поэтому измените первую команду на:
screen -S PluginTest java -Xms1024M -Xmx1024M -XX:MaxPermSize=128M -jar /home/kalenpw/TestWorld/spigot-1.10.jar &
'&' заставляет команду выполняться в фоновом режиме. Если вы добавите один в конец второй команды, вы вернетесь к приглашению после запуска вашего скрипта, и обе ваши команды будут выполняться в фоновом режиме. Вы сможете увидеть их, выполнив команду 'jobs'.