Table des matières

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 :

  1. . serverpaths.sh (attention au “.” dans la ligne de commande)
  2. cd ${CONF_PATH}/
  3. ${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 :

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 :

Pour finir cette introduction rapide de screen voici deux combinaisons de touches importantes :

Pour aller plus loin avec 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 :

[ 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

L'interface web d'administration des services