La commande « shard »
Cette page présente les commandes de base pour lancer et arrêter les services du jeu via la ligne commande, ainsi que la manière de saisir des « commandes » pour chaque service
Lancement et arrêt des services de jeu via la ligne de commandes
Attention, suite à une nouvelle architecture actuellement déployée (8/11/2015), il faut utiliser pour l'instant :
- . serverpaths.sh (attention au “.” dans la ligne de commande)
- cd ${CONF_PATH}/
- ${RYZOM_PATH}/share/ryzom/tools/script/linux/shard start
Des détails seront apportés quand tout sera en place et fonctionnel. — Yann K 2015/11/08 23:07
1) se connecter au serveur de jeu via ssh
$ ssh khanat@ninm.net -p 2222
2) Lancement des services du jeu
$ shard start
Une fois lancé, on peut fermer brutalement la connexion (ex : perte de la connexion ssh) ou revenir au shell de manière plus propre avec la combinaison de touches « CTRL-A d » (voir explication plus loin).
Sur la ligne de commande shell vous pouvez revenir à l'écran des services à tout moment via la commande :
$ shard join
Cela se fait aussi si vous venez de vous connecter sur le serveur de jeu et que les services sont déjà lancés. La commande « shard join » permet alors de rejoindre la fenêtre des services du jeu.
3) Pour arrêter les services de jeu en ligne de commande :
$ shard stop
Note : il existe une méthode plus propre pour arrêter ou relancer les services en ce qui concerne les joueurs. Elle est décrite plus loin dans cette page et ajoute en fait les étapes suivantes : (1) fermer le shard interdisant toute nouvelle connexion, (2) envoie d'un message général aux joueurs en ligne avant de lancer le véritable arrêt des services (lien vers la section de la page.)
la commande « shard » et le programme //screen//
la commande shard est en fait un petit script situé ici :
code/ryzom/tools/scripts/linux
Ce script lance « screen » puis exécute chaque service du jeu dans une fenêtre dédiée de screen. Revenons donc sur cet utilitaire. Screen (http://www.gnu.org/software/screen/) permet :
- De multiplexer plusieurs écrans dans un « terminal ». Des combinaisons de touches permettent alors de basculer d'un écran à l'autre voir de diviser l'écran du terminal en plusieurs fenêtres.
- De détacher la session du terminal. De fait, si vous fermez votre terminal, les applications lancées dans chaque fenêtre screen ne sont pas tuées mais continuent à fonctionner et vous pouvez relancer screen pour accéder à nouveaux à ces fenêtres. Pratique pour les connexions distantes qui peuvent tomber.
- On peut se connecter à la session de plusieurs endroits à la fois. C'est notamment utile pour partager un shell entre plusieurs utilisateurs, idéal pour aider un utilisateur distant.
Concernant les services du jeu. Vous pouvez les lancer via la commande :
$ shard start
Ou rejoindre la session screen si vous venez de vous connecter sur le serveur et que les services sont déjà lancés via :
$ shard join
Si quelqu'un est déjà en train de regarder via screen, vous pouvez faire :
$ shard share
Vous obtenez un écran de l'image ci-dessous : la dernière ligne du terminal liste les fenêtres identifiées par leur nom et numéro : 0 pour celle dénommée « aes », 1 pour « bm_master », etc.
Vous pouvez passer d'un écran à l'autre via les raccourcis claviers « CTRL-a n » (suivant) et « CTRL-a p » (précédent).
Les combinaisons de touches « CTRL-a 0 », « CTRL-a 1 » etc, permettent d'accéder directement à la fenêtre portant le numéro saisi.
Vous pouvez afficher la liste des tous les écrans via la combinaison de touches « CTRL-a “ ». La capture d'écran ci-dessous montre justement la liste des 16 fenêtres des services du jeu après exécution de la commande « shard start ».
Pour remonter dans les logs d'un écran :
- « CTRL-a Esc » puis flèche vers le haut/bas pour naviguer
Pour finir cette introduction rapide de screen voici deux combinaisons de touches importantes :
- « CTRL-a ? » : afficher l'aide sur screen et donc les raccourcis clavier.
- « CTRL-a d » : quitter screen et revenir au shell sachant qu'il est possible de se reconnecter à la session à tout moment via la commande « shard join » comme indiqué précédemment.
Pour aller plus loin avec screen :
- Un tuto rapide et bien fait pour découvrir en français screen : http://studio.jacksay.com/tutoriaux/systeme-linux/l-utilitaire-bash-screen
- La documentation en français d'Ubuntu sur le sujet, très complète : http://doc.ubuntu-fr.org/screen
Lancement des services : osculation du processus
Auscultation de la commande « shard »
La commande « shard » est un script shell situé dans le dossier : code/ryzom/tools/scripts/linux On y trouve d'autres scripts utilisés par cette commande
Son code montre (l'affichage de l'aide) qu'elle attend l'un des cinq paramètres suivants :
- start pour le lancement des services du jeu.
- stop pour l'arrêt des services.
- join pour rejoindre une session en cours
- share pour rejoindre la session screen en cours en mode « partagé » ( permet à plusieurs personnes connectés de lieux différents d'entrer descommandes?)
- state pour afficher des informations sur les services
[ au passage à l'inverse des autres options, la commande shard state doit être exécutée dans le dossier « code/ryzom/server » pour fonctionner : un bug à corriger ou est-ce voulu pour gérer plusieurs shards en même temps ?]
Il existe un sixième paramètre caché : « batchstart ». Le code montre qu'elle appelle fait la même chose que le paramètre « start », mais lance chaque service en passant deux paramètres supplémentaires au programme screen : « -d -m »
Extrait du man de screen :
"-d -m" Start screen in "detached" mode. This creates a new session but doesn't attach to it. This is useful for system startup scripts.
(c'est donc un équivalent d'un « shard start », suivi de « CTRL-a d » pour se détacher de la session, paramètre utile pour lancer les services en mode sans interaction humaine, comme pour les scripts de démarrage du serveur.
« shard start »
La première chose que fait le script, c'est se positionner dans le dossier « code/ryzom/server ». Ce dossier est celui où tout se passe lors de l'exécution des services du jeu.
Il contient les fichiers de configuration de chaque service. Comment pour le client ryzom, on note deux versions de chaque fichier de configuration : « nomservice_default.cfg » qui doit contenir les options standards, et « nomservice.cfg » pour celle à éditer :
admin_executor_service.cfg admin_executor_service_default.cfg admin_service.cfg admin_service_default.cfg ai_service.cfg ai_service_default.cfg backup_service.cfg backup_service_default.cfg backup_service_interface.cfg dynamic_scenario_service.cfg dynamic_scenario_service_default.cfg entities_game_service.cfg entities_game_service_default.cfg frontend_service.cfg frontend_service_default.cfg gpm_service.cfg gpm_service_default.cfg input_output_service.cfg input_output_service_default.cfg logger_service.cfg logger_service_default.cfg mail_forum_service.cfg mail_forum_service_default.cfg mirror_service.cfg mirror_service_default.cfg monitor_service.cfg monitor_service_default.cfg naming_service.cfg naming_service_default.cfg session_browser_server.cfg session_browser_server_default.cfg shard_unifier_service.cfg shard_unifier_service_default.cfg tick_service.cfg tick_service_default.cfg welcome_service.cfg welcome_service_default.cfg
sql.cfg common.cfg used_continents.cfg
TO BE CONTINUED….
Administrer le jeu via les commandes des services
Il estpossible de gérer chaque service du jeu via des commandes à saisir. Prenons l'exemple du service « gpms » (Global Position Manager Service). Ce service connaît la position de chaque entité (avatar, mobs, etc…) et traite les collisions.
Nous allons sélectionner la fenêtre du service dans screen. Si vous n'avez pas encore rejoint la session screen taper la commande « shard join ».
1) « CTRL-A ” » pour afficher la liste des fenêtres.
2) Sélectionner avec les flèches la ligne “gpms” puis appuyez sur entrer.
A présent vous êtes sur l'écran du service. Comme pour chaque service, vous pouvez saisir taper « help » puis appuyer sur la touche « Entrée ».
3) Le service affiche alors la liste des thèmes de commandes
help INF b731c6d0 127.0.1.1/GPMS-133 : Executing command : 'help' INF b731c6d0 127.0.1.1/GPMS-133 : Help commands: INF b731c6d0 127.0.1.1/GPMS-133 : - help all INF b731c6d0 127.0.1.1/GPMS-133 : - help aes INF b731c6d0 127.0.1.1/GPMS-133 : - help commands INF b731c6d0 127.0.1.1/GPMS-133 : - help cpu INF b731c6d0 127.0.1.1/GPMS-133 : - help egs INF b731c6d0 127.0.1.1/GPMS-133 : - help gpms INF b731c6d0 127.0.1.1/GPMS-133 : - help mirror INF b731c6d0 127.0.1.1/GPMS-133 : - help ms INF b731c6d0 127.0.1.1/GPMS-133 : - help nel INF b731c6d0 127.0.1.1/GPMS-133 : - help net INF b731c6d0 127.0.1.1/GPMS-133 : - help r2vision INF b731c6d0 127.0.1.1/GPMS-133 : - help tick INF b731c6d0 127.0.1.1/GPMS-133 : - help variables INF b731c6d0 127.0.1.1/GPMS-133 : - help <wildcard> INF b731c6d0 127.0.1.1/GPMS-133 : - help <command name>
4) Il est possible d'afficher les commandes d'un thème précis. Exemple : « help egs ». Il est aussi possible d'utiliser les jokers pour lister les commandes. Dans l'exemple ci-dessous nous affichons toutes les commandes débutant par la lettre « t » :
help t* INF b731c6d0 127.0.1.1/GPMS-133 : Executing command : 'help t*' INF b731c6d0 127.0.1.1/GPMS-133 : Displaying commands, variables and objects matching wildcard: 't*' INF b731c6d0 127.0.1.1/GPMS-133 : Global commands and variables : INF b731c6d0 127.0.1.1/GPMS-133 : 0 teleportEntity : teleport an entity INF b731c6d0 127.0.1.1/GPMS-133 : 1 test_vision : INF b731c6d0 127.0.1.1/GPMS-133 : 2 trackEntity : get track of an entity position
5) Pour finir il est alors possible de détailler la syntaxe d'une commande précise :
help teleportEntity INF b731c6d0 127.0.1.1/GPMS-133 : Executing command : 'help teleportEntity' INF b731c6d0 127.0.1.1/GPMS-133 : teleport an entity INF b731c6d0 127.0.1.1/GPMS-133 : usage: teleportEntity entity Id, newPos X (meters), newPos Y, newPos Z, cell
A faire ici : Lister tous les services avec un lien vers une page par service détaillant les commandes disponibles. ( nom de la page fr:commandes_nomservice ).
Lien vers le tour d'horizon du serveur