====== 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.
--- //[[user:yannk|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.
{{fr:shard-01.png}}
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// ».
{{fr:shard-02.png}}
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
INF b731c6d0 127.0.1.1/GPMS-133 : - help
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 [[fr:serveur_tour|tour d'horizon du serveur]]
===== L'interface web d'administration des services =====
{{tag>liste sysadmin shard}}