Je lance des serveurs de jeux Call of Duty avec écran.
J'ai un 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
et il est lié à cette
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
Maintenant, chaque fois que je lance start.sh
, cela me donne:
Cannot exec 'quit': No such file in directory
Je suis donc allé voir si mon script d’arrêt avait mal agi, mais je ne vois pas ce qui ne va pas. J'ai ce script exact sur une autre machine, mais sur cette nouvelle machine, cela ne fonctionnera tout simplement pas.
stop.sh
ressemble à:
#!/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
et est lié au script:
cd /home/$user/$game/$verision/$server
screen -S $port -X quit
Maintenant, tout ce que je mets derrière -X
dira Cannot exec 'blabla'
.
Y'a t'il un moyen d'arranger cela?
Votre script d'arrêt ne définit pas le port (vérifiez le script de démarrage, celui-ci le fait et celui-ci est manquant). Ainsi, lorsque vous exécutez la commande screen -S $port -X quit
, il semble que ($ port n'est pas défini, il en résulte une chaîne vide):
screen -S -X quit
Screen interprète cela comme "définissez le nom de session sur -X, puis exécutez la commande quit
à l'intérieur d'un shell".
Si vous aviez le port, cela ressemblerait à:
screen -S 28970 -X quit
cela signifie "envoyer l'action d'écran quit
à la session nommée 28970", ce que vous souhaitez réellement.
Donc, pour résoudre ce problème, assurez-vous simplement que votre script stop.sh
a bien port
défini.
En savoir plus sur les paramètres de ligne de commande de l'écran:
https://www.gnu.org/software/screen/manual/screen.html#Invoking-Screen