Problème screen

Bonjour all,

Ca concerne un problème avec un screen pour un serveur dédié Counter-Strike Source.

j’utilise Debian etch 32 bits.
Noyau : Linux debian 2.6.18-5-686 #1 SMP Sat Dec 1 22:58:58 UTC 2007 i686 GNU/Linux

Screen a été installé avec succès, si je fait screen -ls :

[quote]There is a screen on 2732.pts-2.debian (attached)
1 Socket in /var/run/screen/S-root.[/quote]

j’utilise pc virtual 2007 et si je veut lancer par la commande :

J’obtiens ce message d’erreur dans le log :

si j’exécute cette commande :

Le serveur dédié Counter-Strike Source démarre correctement.

Les fichiers ont eu tout les droits.

Je suis encore novice dans le monde de Linux bien que j’ai appris beaucoup de chose ces dernières semaines. ^ :wink:

Merci à vous

Personne ne peut m’aider ?

ou c’est suite à ce que j’utilise un pc virtuel que j’ai cette erreur.

Je recherche depuis hier et je ne trouve pas la solution miracle…

En fait tu donnes peu de renseignements, ce que je vois n’est pas une erreur juste une information. Quels sont les symptomes exactement?

bah je débute donc dite moi ce que vous voulez…

Les symptomes :

me donne l’erreur :

Le serveur crash à peine que je lance la commande.

Si je lance :

Le serveur démarre correctement.

Je ne peut pas te dire plus :s

  1. Le screen fonctionne-t-il après le crash ou est-ce lui qui s’est crashé?
  2. N’y a-t-il pas un problème de droit pour l’utilisateur serveurcss dans le répertoire où il est éxécuté?

Le screen ne fonctionne pas vu qu’il est censé démarrer l’application donc je pense que c’est lui qui se crash.

Pour l’utilisateur “serveur” => chown serveur * et chmod -R 755 *

Salut,

Quand tu tape ‘screen’ en console il se passe quoi ?

Pour info screen est une commande a part entière et ne dépend pas de l’utilisation d’un serveur CS, il est utilisé pour bien d’autre chose.

Voila ce que j’ai :
http://img505.imageshack.us/img505/1127/screensl1.jpg

Donc quand tu appuie sur ‘Enter’ ou ‘Espace’ tu as bien une nouvelle console ( des infos sur screen )

As tu vérifier que “libthread_db.so” est bien présente ?

Pour expliquer un peu ta commande:

le “su -” tu peux déjà l’oublier si tu lance la commande en root ( bien que cela serais mieux en user )

“serveur -c” doit être un script peux tu nous donner son contenu ?

“screen -dms” veut juste dire je lance la commande ‘Screen’ et la session s’appelle serveurcss, mais aprioris c’est pas screen le problème.

Le reste est propre a CS

Essaye de remplacer les “;” de ta commande par des “&&” le && exécute la commande suivante si la commande précédente c’est déroulé avec succès.

Si tu te connecte en root, que tu te déplace dans le bon répertoire et que tu lance ce qu’il y a ci-dessus ça marche non ?

rien ne ce passe et rien ne s’affiche. J’ai le terminal simplement.

oui elle est bien présente.

start_serveurcss.sh (chmod -R 755 fichier.sh) placer dans /home/serveur/

echo "---------------------------------------------------------------------" echo "Lancement du serveur : Debut de la sequence" echo "---------------------------------------------------------------------" su - serveur -c "cd /home/serveur/serveurcss/steam/; screen -dmS serveurcss ./srcds_run -game cstrike -console -port 27015 -tickrate 100 -autoupdate -debug -nocrashdialog" echo "---------------------------------------------------------------------" echo "Lancement du serveur : Fin de la sequence" echo "---------------------------------------------------------------------"

dans etc/init.d => serveurcss.sh (chmod -R 755 fichier.sh) :

[code]#!/bin/sh
#############################################

Script de lancement des serveur

#############################################

usage() {
echo "---------------------------------------------------------------------"
echo "Usage: (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}

if [ -z $1 ]; then
usage
fi

srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su - serveur -c "cd /home/serveur/serveurcss/steam/; screen -dmS serveurcss ./srcds_run -game cstrike -console -port 27015 -tickrate 100 -autoupdate -debug -nocrashdialog"
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su - serveur -c "screen -dr serveurcss -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
*)
usage
esac

exit 0[/code]

ensuite crontab -e :

[code]# /etc/crontab: system-wide crontab

Unlike any other crontab you don’t have to run the `crontab’

command to install the new version when you edit this file

and files in /etc/cron.d. These files also have username fields,

that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
00 7 * * * root /home/serveur/serveurcss/stop_serveurcss.sh
01 7 * * * root /home/serveur/serveurcss/start_serveurcss.sh

*/1 * * * * root /usr/local/rtm/bin/rtm 28 >/dev/null 2>/dev/null[/code]

puis CTRL + X et O puis Entrée pour enregistrez la modification.

[quote]Si tu te connecte en root, que tu te déplace dans le bon répertoire et que tu lance ce qu’il y a ci-dessus ça marche non ?[/quote] non ça ne fonctionne pas et si je remplace “;” par “$$”, ça me dit :

bash: line 0: cd /home/serveur/serveurcss/steam/3150: Aucun fichier ou répertoire de ce type.

rien ne ce passe et rien ne s’affiche. J’ai le terminal simplement.[/quote]

Toi t’as lu le lien que je t’ai filé

start_serveurcss.sh (chmod -R 755 fichier.sh) placer dans /home/serveur/

echo "---------------------------------------------------------------------" echo "Lancement du serveur : Debut de la sequence" echo "---------------------------------------------------------------------" su - serveur -c "cd /home/serveur/serveurcss/steam/; screen -dmS serveurcss ./srcds_run -game cstrike -console -port 27015 -tickrate 100 -autoupdate -debug -nocrashdialog" echo "---------------------------------------------------------------------" echo "Lancement du serveur : Fin de la sequence" echo "---------------------------------------------------------------------"[/quote]
Ça ressemble drôlement à la ligne de commande en tant que tel, puis c’est pas la commande si ? :unamused:

non ça ne fonctionne pas et si je remplace “;” par “$$”, ça me dit :
bash: line 0: cd /home/serveur/serveurcss/steam/3150: Aucun fichier ou répertoire de ce type.[/quote]

Ben voila le chemin doit pas être bon.
Pour la commande “serveur -c” c’est un alias des script que tu m’a fournis ? Car faudrais savoir ce que cela fait :slightly_smiling:
Je ne vois pas son intérêt si avec ceci “./srcds_run -game cstrike -console -port 27015 -tickrate 100 -autoupdate -debug -nocrashdialog” ton serveur se lance

T’as essayer la dernière commande que je t’ai donné ? celle-ci:

En tout cas j’ai déjà monter des serveur CS 1.6, ben ça avait l’air beaucoup mieux et moins brouillons en tous cas pour les scripts. Car ici je remarque que plusieurs script lance la même commande, ca me semble pas normal d’autant plus que chaque serveur a le même nom.

Ce serait

plutôt ta commande. Essaye comme cela.

Ludo: sa commande lance la commande entre “” (c’est le -c) (le screen qui m’a l’air correct) en tant qu’utilisateur «serveur» dans le même environnement que si il avait fait un login (le «-» que je suggère de remplacer par «-l»). Le problème de la libthread est curieux. Tu peux essayer de vérifier les droits sur les répertoires ou éventuellement la commande suivante:
$ LD_ASSUME_KERNEL=2.4.1 su -l -c "<ta commande screen» serveur

non j’ai imprimé la page et je lirais quand je pourrais.

Ta commande ne fonctionne pas, elle me renvoi la même erreur.
Voici l’erreur complète :

[quote]Ben voila le chemin doit pas être bon.[/quote] si le chemin est correct.

serveur => utilisateur lançant la commande et -c, aucune idée c’est un script qu’on m’a fournis et le site ou on me l’a donnée est mort depuis quelques jours.

L’intérêt de tout ça est que si le serveur plante, il est relancé automatiquement.

edit : étant passer sous un modem en USB, je cherche à avoir internet et je pourrais mieux vous répondre depuis le pc virtuel vu qu’avant, j’était en ethernet, malheureusement ma box à lacher…
@+

[quote=“fran.b”]Ce serait

plutôt ta commande. Essaye comme cela.

Ludo: sa commande lance la commande entre “” (c’est le -c) (le screen qui m’a l’air correct) en tant qu’utilisateur «serveur» dans le même environnement que si il avait fait un login (le «-» que je suggère de remplacer par «-l»). Le problème de la libthread est curieux. Tu peux essayer de vérifier les droits sur les répertoires ou éventuellement la commande suivante:
$ LD_ASSUME_KERNEL=2.4.1 su -l -c "<ta commande screen» serveur[/quote]

Je n’avais pas vu ta réponse mais je vais essayé dès que j’aurais réussi à mettre internet sur la machine virtuel ^^ :wink:

Hooo oui mille excuses en fait su - serveur -c “la commande que je veux lancer avec cet utilisateur” est d’un bloc… Sorry cela ne pas pas sauté au yeux ^^

L’utilisateur ‘serveur’ sait lancer screen ?

C’est peut être aussi un problème de variable path, l’utilisateur ‘serveur’ (quel bête nom :stuck_out_tongue: ) ne sait peut être pas ou est screen, même si il possède les droits pour le lancer, car je pense que le tiret veux dire "utilisé les variable d’environnement de

à vérifier avec:

ps: je le maitrise maintenant le “su - user” (paf 2x fois placé dans le post :stuck_out_tongue: )

Si je fait :

su - serveur $PATH comme ceci, j’obtiens l’erreur suivante :

echo $PATH aurait été mieux, mais ça a permios de voir que le PATH est correct. Ça a donné quoi le LD_KERNEL?

donc :

su - serveur echo $PATH /bin/echo: /bin/echo: cannot execute binary file

avec la commande LD_ASSUME_KERNEL=2.4.1 su -l -c “cd /home/serveur/serveurcss/steam; screen -dmS serveurcss ./srcds_run -game cstrike +maxplayers 14 +map de_dust2 -port 27015 -tickrate 100 -autoupdate -debug -nocrashdialog” ne me donne pas d’erreur mais le serveur ne se lance pas.

edit :
Voici ce que j’ai exactement.

dans /etc/init.d => serveurcss.sh :

[code]#!/bin/sh
#############################################

Script de lancement des serveur

#############################################

usage() {
echo "---------------------------------------------------------------------"
echo "Usage: (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}

if [ -z $1 ]; then
usage
fi

srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su - serveur -c "cd /home/serveur/serveurcss/steam; screen -dmS serveurcss ./srcds_run -game cstrike -console -tickrate 100 +maxplayers 14 +map de_dust2 -port 27015 -autoupdate -debug -nocrashdialog"
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su serveur -c "screen -dr serveurcss -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo “---------------------------------------------------------------------”
}

case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
*)
usage
esac

exit 0[/code]

ensuite j’ai fait => update-rc.d serveurcss.sh defaults 99

Maintenant dans /home/serveur/, j’ai placer deux fichiers :

start_serveur_css.sh et stop_serveurcss.sh dont voici leur contenu.

start_serveur_css.sh

echo "---------------------------------------------------------------------" echo "Lancement du serveur : Debut de la sequence" echo "---------------------------------------------------------------------" su - serveur -c "cd /home/serveur/serveurcss/steam; screen -dmS serveurcss ./srcds_run -game cstrike -console -tickrate 100 +maxplayers 14 +map de_dust2 -port 27015 -autoupdate -debug -nocrashdialog" echo "---------------------------------------------------------------------" echo "Lancement du serveur : Fin de la sequence" echo "---------------------------------------------------------------------"

stop_serveurcss.sh :

echo "---------------------------------------------------------------------" echo "Arret du serveur : Debut de la sequence" echo "---------------------------------------------------------------------" su - serveur -c "screen -dr serveur -X quit" echo "---------------------------------------------------------------------" echo "Arret du serveur : Fin de la sequence" echo "---------------------------------------------------------------------"

Les deux fichiers ont un chmod de 755.

Puis dans crontab, j’ai ajouter ceci :

[quote]# /etc/crontab: system-wide crontab

Unlike any other crontab you don’t have to run the `crontab’

command to install the new version when you edit this file

and files in /etc/cron.d. These files also have username fields,

that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
29 7 * * 1-6 root /home/serveur/stop_serveurcss.sh
30 7 * * 1-6 root /home/serveur/start_serveurcss.sh

*/1 * * * * root /usr/local/rtm/bin/rtm 28 >/dev/null 2>/dev/null[/quote]

Les lignes en bleus correspondent à ce que j’ai ajouter.

Mon serveur est installé dans home/serveur/serveurcss/steam

Donc si je fait un screen -ls, j’obtiens ceci :

[quote]There are screen on :
2687.serveurcss (Detached)
2713.serveurcss (Detached)
2738.serveurcss (Detached)
2790.pts-1.debian (Detached)

4 Sockets in /var/run/screen/S-root[/quote]

Voici l’erreur complète présent dans le fichier debug.log :
http://img444.imageshack.us/my.php?image=screendo6.jpg

vas comprendre pourquoi il cherche srcds_i686 maintenant vu qu’avant il cherchait srcds_run…