Я использую игровые серверы Call of Duty с экраном.
У меня есть start.sh
:
#!/bin/bash
user=cabe
game=cod
verision=cod1.5
server=xxx.xx.xxx:28970
mod=
ip=xxx.xx.xxx
port=28970
punkbuster=1
slots=20
# Don't Change This
. /mnt/utilities/files/games/cod/1.5/files/extra/scripts/startup/cod/start_cod
, и он связан с этим
cd /home/$user/$game/$verision/$server ./stop.sh screen -A -m -d -S $port /home/$user/$game/$verision/$server/cod_lnxded +set net_ip $ip
+set net_port $port +set dedicated 2 +set sv_punkbuster $punkbuster +set sv_maxclients $slots +exec myserver.cfg +set fs_basepath /home/$user/$game/$verision/$server +set fs_homepath /home/$user/$game/$verision/$server
Теперь каждый раз, когда я бегу start.sh
, он дает мне :
Cannot exec 'quit': No such file in directory
Так что я пошел и посмотрел, не сделал ли я что-то не так в моем скрипте остановки, но я не вижу, что не так. Этот точный скрипт у меня есть на другом компьютере, но на новом он просто не сработает.
stop.sh
выглядит как:
#!/bin/bash
user=cabe
game=cod
verision=cod1.5
server=xxx.xx.xxx:28970
# Don't Change This
. /mnt/utilities/files/games/cod/1.5/files/extra/scripts/startup/cod/stop2
и связан со сценарием:
cd /home/$user/$game/$verision/$server
screen -S $port -X quit
Теперь все, что я оставлю после -X
, скажет Cannot exec 'blabla'
.
Есть ли способ это исправить?
Ваш сценарий остановки не определяет порт (проверьте сценарий запуска, что каждый делает, и это отсутствует). Таким образом, когда Вы работаете эти screen -S $port -X quit
команда, она похожа ($port не определяется так, она приводит к пустой строке):
screen -S -X quit
Экран интерпретирует это, как "определено имя сессии к-X, затем работайте эти quit
команда в оболочке".
, Если бы у Вас был порт, он был бы похож:
screen -S 28970 -X quit
это означает, "отправляют quit
экранное действие на сессию, названную 28970", который является тем, что Вы на самом деле хотите.
Поэтому для фиксации его, просто гарантируйте Ваш stop.sh
, сценарий имеет port
определенный.
Узнают больше об экранных параметрах командной строки:
https://www.gnu.org/software/screen/manual/screen.html#Invoking-Screen