setiathome(1) Commandes Utilisateur Juin 2000 NOM setiathome - le programme client SETI@home SYNOPSIS cd chemin-du-répertoire-d'installation # lieu de stockage des fichiers ./set_cron_job # utilitaire optionnel sous Unix (voir ci-dessous) ./setiathome [ -help | -version | -countries | -login | [ -proxy hôte[:port] ] [ -socks_server hôte:port ] [ -socks_user nom-d'utilisateur-local ] [ -socks_passwd mot-de-passe-SOCKS ] [ -cpu numéro-de-processeur ] [ -nice niveau ] [ -nolock ] [ -verbose ] [ -email ] [ -graphics ] [ -stop_after_xfer ] [ -stop_after_process ] ] DESCRIPTION "setiathome" est la version UNIX du client SETI@home. Il télécharge les données du radio-télescope depuis un serveur connecté via Internet puis analyse les données reçues à la recherche de signaux d'origine non terrestre, et renvoie les résultats au serveur, répétant ce cycle indéfiniment. Pour de plus amples informations, veuillez consulter le site officiel - en Anglais: <URL:http://setiathome.berkeley.edu/>, - en Français: <URL:http://setiathome.free.fr/>. Votre système doit être déjà configuré pour les accès à Internet. En particulier, un serveur DNS pour Internet doit être accessible. Vous pouvez le vérifier en exécutant la commande : ping setiathome.ssl.berkeley.edu Si ce n'est pas le cas, demandez à votre administrateur réseau les paramètres de configuration du routage TCP/IP et du client DNS. La première fois que vous exécuterez "setiathome", il vous demandera d'entrer votre adresse email, votre nom (ou un pseudonyme), le code de votre pays, etc. Ces informations seront stockées dans un fichier, et plus aucune autre interaction ne sera nécessaire quand vous relancerez le programme plus tard. Une fois l'enregistrement effectué, vous pouvez exécuter setiathome en arrière-plan et rediriger ses messages vers /dev/null si vous le désirez : voyez un exemple de syntaxe dans les options ci-dessous. "setiathome" peut être arrêté et redémarré à tout moment. Il préserve l'état de ses calculs dans des fichiers, pour pouvoir plus tard les reprendre là où ils ont été interrompus. Si vous souhaitez lancer setiathome automatiquement, vous pouvez configurer une tâche "cron" sur votre système Unix. Le script fourni "set_cron_job" créera un script pour exécuter setiathome en arrière- plan, et l'ajoutera à votre crontab. Pour l'utiliser, allez dans le dossier d'installation de setiathome, et tapez "./set_cron_job" sur une ligne de commande. Pour plus d'informations sur le paramétrage des tâches "cron", consultez la page d'aide crontab(1) de votre système Unix. Sous Windows 95/98/98/SE/ME, il est possible d'exécuter setiathome en tant que Service lancé au démarrage, en inscrivant le fichier .REG suivant dans la base de registres de Windows (remplacez "lecteur:\chemin" et "setiathome.exe" par les noms réels du chemin d'installation du programme (notez que, pour Windows NT, cela ne fonctionne pas directement car un service NT ne peut être ajouté qu'avec des clés supplémentaires de sécurité) : REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunService] "SETI@home cmdline"="lecteur:\chemin\setiathome.exe -email" Néanmoins, vous ne devez le faire qu'après avoir fait votre première inscription qui crée les fichiers textes des informations utilisateur. D'autre part, cette opération n'est pas conseillée si votre PC ne reste pas allumé en permanence (sur plusieurs jours), car l'arrêt du système peut faire perdre les calculs en cours sur l'unité de travail courante. Aussi il vaut mieux sur les autres systèmes utiliser une icône de raccourci au lancement, en précisant l'option "-stop_after_process". Si la variable d'environnement HTTP_PROXY est définie, setiathome se connectera au travers du serveur proxy HTTP de votre réseau local, spécifié en tant que "hôte" ou bien "hôte:port", dans lesquels "hôte" est un nom de machine ou de routeur local, ou bien un nom d'hôte DNS avec l'indication du domaine après un point, ou bien une adresse IP au format "nnn.nnn.nnn.nnn" où "nnn" est un nombre entier de "0" à "255", et où "port" indique le numéro de port TCP (80 par défaut) d'accès au service Proxy HTTP du serveur "hôte". Généralement, cette variable d'environnement est définie dans votre profil utilisateur par votre administrateur système ou réseau, et peut être utilisée par d'autres outils pour Internet, tel qu'un navigateur ou un client de messagerie supportant le courrier au format MIME HTML. OPTIONS -version Affiche la version du logiciel client installé sur votre système. -help Affiche la version et la liste des options possibles. -login Modifie ou crée (interactivement) un nouveau compte utilisateur. -countries Affiche la liste des codes de pays (à la norme ISO 3166), à utiliser lors de votre inscription. -email Envoie un message (à l'adresse E-Mail du compte) en cas d'erreurs. Utile surtout si vous exécutez le processus en arrière-plan en redirigeant les messages vers /dev/null, par exemple : Bourne-Shell Unix : nohup setiathome -email >/dev/null 2>&1 & C-Shell Unix : setiathome -email >&/dev/null & Fenêtre Commande Windows : setiathome -email >NUL Icône Commande Windows : start /m setiathome -email Raccourci Windows : setiathome.exe -email Sur certains systèmes, l'option n'est pas nécessaire quand une tâche est mise en place pour "cron", ce dernier assurant lui-même la redirection de ces messages vers le mail de votre compte utilisateur Unix. Cependant, rien n'est envoyé par cron(1) vers ce mail tant que la tâche tourne, ce qui peut conduire à la création d'un fichier temporaire énorme (durant toute la durée d'exécution de la tâche, si celle-ci tourne durant des mois !), sans que rien ne soit finalement envoyé au mail durant tout ce temps. Aussi l'option -email de setiathome est fortement recommandée au lieu de la redirection des messages vers un fichier, setiathome se chargeant lui-même d'envoyer les messages vers votre compte E-mail, dès que ceux-ci dépassent une taille critique, ce qui vous permet de les consulter régulièrement puis de les nettoyer. -proxy hôte[:port] Permet de se connecter au serveur SETI@home en utilisant le service Proxy HTTP indiqué par l'URL (au format "serveur.domaine:port" sans le préfixe "http://"). Alternativement on peut indiquer l'hôte sous la forme d'une adresse IP au format "nnn.nnn.nnn.nnn:port", où nnn est une valeur comprise entre 0 et 255. Le numéro de port TCP par défaut pour HTTP est 80, mais les serveurs d'accès proxy HTTP sont souvent installés sur le port TCP 8080 ou 8000 (c'est un nombre entier entre 1 et 32767). L'utilisation d'un serveur d'accès Proxy HTTP est parfois requise pour accéder aux pages web d'Internet via un système externe de sécurité. Demandez à votre administrateur réseau les paramètres nécessaires. Certains services Proxy HTTP tournent sur la machine elle-même, dans le cas de certains types d'accès Internet utilisant un système spécial de cache ou de filtrage anti-virus pour accéder au web, ou encore pour gérer des méthodes alternatives d'authentification. Indiquez dans ce cas l'adresse IP 127.0.0.1 comme hôte pour désigner la machine locale, et le numéro de port utilisé pour accéder à ce service, et spécifié lors de son installation (ce numéro n'est généralement pas 80 car il est réservé à l'installation d'un serveur web local). Par exemple pour se connecter au service proxy HTTP tournant sur la machine locale elle-même sur le port TCP 8080, on peut indiquer "127.0.0.1:8080". Cette valeur peut aussi être indiquée au moyen de la variable d'environnement HTTP_PROXY, mais si cette option est utilisée, la variable d'environnement sera ignorée, l'option étant prioritaire. -socks_server hôte:port Permet de se connecter au serveur SETI@home, ou au proxy HTTP, en utilisant le service SOCKS désigné par l'hôte et le port TCP (au format "serveur.domaine:port", sans préfixe "http://"). Alterna- tivement on peut indiquer l'hôte sous la forme d'une adresse IP au format "nnn.nnn.nnn.nnn:port" où nnn est une valeur comprise entre 0 et 255. Le numéro de port requis est souvent 1080 ou 8000 (c'est un nombre entier entre 1 et 32767). Ce paramètre est généralement requis si votre accès Internet est partagé, et servi via un serveur d'accès intermédiaire requis pour protéger un réseau d'Entreprise contre les intrusions et les usages illicites. Demandez à votre administrateur réseau les paramètres nécessaire. Pour les accès Internet privés classiques ce paramètre est normalement non nécessaire. Souvent, le service SOCKS cherche d'abord à identifier l'utilisateur sur votre réseau local pour autoriser l'accès à certains utilisateurs (voir ci-dessous). Par exemple, pour se connecter au service SOCKS tournant sur le serveur dont l'adresse IP d'hôte est "192.168.0.254", et sur le port TCP 1080, on peut indiquer "192.168.0.254:1080". Cette valeur peut aussi être indiquée au moyen de la variable d'environnement SOCKS_SERVER, mais si cette option est utilisée, la variable d'environnement sera ignorée, l'option restant prioritaire. -socks_user nom-d'utilisateur-local Permet d'indiquer le nom de l'utilisateur sur votre réseau local protégé par un service d'accès de type SOCKS. Ce paramètre n'est utilisé que si un service SOCKS a été paramétré, soit avec la variable d'environnement SOCKS_SERVER, soit avec l'option -socks_server (voir ci-dessus). Cette valeur peut aussi être indiquée au moyen de la variable d'environnement SOCKS_USER, mais si cette option est utilisée, la variable d'environnement sera ignorée, l'option restant prioritaire. -socks_passwd mot-de-passe-SOCKS Permet d'indiquer le mot de passe associé à l'utilisateur sur votre réseau local protégé par un service d'accès de type SOCKS. Ce paramètre n'est utilisé que si un service SOCKS a été paramétré, soit avec la variable d'environnement SOCKS_SERVER, soit avec l'option -socks_server (voir ci-dessus). Cette valeur peut aussi être indiquée au moyen de la variable d'environnement SOCKS_PASSWD, mais si cette option est utilisée, la variable d'environnement sera ignorée, l'option restant prioritaire. -nice niveau Définit la priorité d'exécution "nice" à niveau (1 par défaut). Il n'est normalement pas nécessaire de modifier la valeur par défaut qui fixe une faible priorité au programme (afin de ne pas dégrader les performances des autres travaux de votre système). Mais si votre système est sous-utilisé, ou si vous préférez donner plus de temps à setiathome au détriment des autres tâches, vous pouvez augmenter cette valeur. Le niveau de priorité des tâches que vous exécutez normalement est celui de votre programme shell sur votre compte utilisateur, visible dans la colonne "Nice" ou "NI" avec la commande "ps". Consultez les pages de manuel Unix nice(1), ps(1) ou top(1) pour plus d'information. -cpu numéro-de-processeur Sur les systèmes multiprocesseurs comme Windows NT/2000, permet d'assigner setiathome sur le processeur indiqué par son numéro en évitant d'utiliser tout autre processeur. Permet aussi d'exécuter plusieurs instances du logiciel depuis des répertoires différents, en attribuant un processeur spécifique à chaque client. Le numéro 0 désigne le premier processeur, le numéro 1 étant le second, et ainsi de suite. Voir ci-dessous un exemple d'utilisation des 3 processeurs sur un système Windows NT quadri-processeur. Cette option est sans effet sur les systèmes Unix non SMP et sous Windows 95/98/98SE/ME, même si la machine dispose de plusieurs processeurs. Par défaut, le logiciel tournera sur un processeur quelconque en fonction de la charge du système lors de son lancement, ce qui peut perturber les performances d'autres applications comme un serveur de base de données ayant un processeur dédié qu'on ne veut pas surcharger. -nolock Au lancement, setiathome s'assure qu'aucune autre instance active du logiciel n'utilise les fichiers du répertoire courant, afin de prévenir toute corruption des fichiers de travail de cette autre instance, qui sinon se terminera avec une erreur et abandonnera son travail en cours. Sur certains systèmes, ce test est inopérant et setiathome refuse de se lancer, alors qu'aucune instance active n'utilise le dossier courant (par exemple si le système de fichiers utilisé refuse de prendre en charge le verrouillage exclusif de fichiers). On peut régler ce problème avec cette option, qui permettra l'exécution de setiathome, que le fichier de verrouillage exclusif lock.sah soit présent ou non dans le répertoire courant d'exécution. Cette option est dangereuse, car plus rien n'empêche la nouvelle instance du logiciel de corrompre les fichiers d'une autre instance active. En particulier, elle ne doit pas être utilisée si setiathome est relancé périodiquement depuis une tâche "cron" simple. Il faut trouver un moyen de contrôler si une instance est active en utilisant une autre méthode de verrouillage (par exemple avec un fichier verrou localisé ailleurs, ou en contrôlant la liste des processus actifs sur le système) et écrire un script effectuant ce test avant de lancer setiathome avec l'option -nolock. Puis on utilisera ce script au lieu de setiathome dans la ligne de commande de la tâche programmée. -stop_after_process Une fois lancé, setiathome transmettra, si nécessaire, ses résultats, puis il chargera éventuellement une nouvelle unité de travail, puis il continuera à procéder aux calculs sur l'unité de travail chargée. A la fin des calculs, setiathome s'arrêtera sans transmettre ses résultats, et il suffira de le relancer plus tard pour transmettre les résultats, puis traiter l'unité de travail suivante. Cette option est particulièrement utile si vous vous déconnectez d'Internet et ne souhaitez pas que setiathome se reconnecte automatiquement en fin de calcul. Notez que si setiathome a été lancé sans cette option, on peut tout de même forcer l'arrêt en fin de calcul, en créant un fichier nommé "stop_after_process.txt" (de contenu quelconque) dans le répertoire d'exécution de l'instance : en fin de calcul de l'unité de travail courante, setiathome détectera la présence de ce fichier, il le supprimera puis s'arrêtera immédiatement, sans transmettre les résultats ni charger une nouvelle unité de travail. -stop_after_xfer Même chose, sauf que cette fois-ci, setiathome transmettra automatiquement ses résultats et/ou téléchargera une nouvelle unité de travail avant de s'arrêter, sans reprendre les calculs sur la nouvelle unité. Il suffira de relancer le programme sans cette option pour calculer la nouvelle unité de travail. Cette option permet de transmettre rapidement les résultats quand vous êtes connecté sur Internet, mais sans amorcer immédiatement les calculs sur le nouveau bloc téléchargé. On peut l'utiliser pour anticiper le chargement de plusieurs unités de travail (utilisez un des outils optionnels de gestion de cache pour faciliter la gestion des fichiers), ou avant de désinstaller SETI@home de votre système. Notez que si setiathome a été lancé sans cette option, on peut tout de même forcer l'arrêt après le transfert des résultats et le chargement d'une nouvelle unité de travail, en créant un fichier nommé "stop_after_xfer.txt" (au contenu quelconque) dans le répertoire d'exécution de l'instance : en fin de transfert, si le transfert a bien réussi, setiathome détectera la présence de ce fichier, il le supprimera, puis s'arrêtera immédiatement sans commencer les calculs sur l'unité de travail ; si le transfert a échoué (pas de connexion Internet, serveur indisponible, ...), ce fichier ne sera pas effacé, mais le programme se terminera sans retenter le transfert. Dans tous les cas, l'exécution suivante du programme tentera de nouveau le transfert des résultats et le chargement de l'unité de travail. FICHIERS ET ENVIRONNEMENT Le programme setiathome génère dans le répertoire courant d'exécution plusieurs fichiers avec l'extension ".sah", contenant vos préférences utilisateur et votre inscription à setiathome, le fichier d'unité de travail et le fichier des résultats. Ces fichiers ne doivent être ni modifiés, ni dupliqués pour une autre instance de setiathome (chaque instance travaillant alors inutilement sur la même unité de travail !). setiathome crée un fichier de verrouillage (lock.sah), pour prévenir l'exécution d'instances multiples depuis le même répertoire. Note : les utilisateurs de MacOS X Server doivent savoir que le verrouillage de fichiers au travers de systèmes de fichiers réseau NFS peut ne pas avoir d'effet ; sur ces systèmes, assurez-vous bien d'exécuter setiathome depuis un disque local ! Dans certaines installation, sur des systèmes de fichiers spécifiques, ce test de verrouillage ne fonctionne pas comme attendu et setiathome refuse de se lancer, alors qu'aucune instance n'est active. On peut alors empêcher le logiciel de faire ce test au démarrage avec l'option -nolock qui autorisera les calculs ou les transferts, que le fichier lock.sah soit présent ou non. Assurez-vous donc bien qu'aucune autre instance n'est active dans le même répertoire, faute de quoi les fichiers de travail seront corrompus. Sous Windows NT avec plusieurs processeurs, setiathome doit être copié dans plusieurs répertoires, afin de permettre plusieurs instances démarrées en tant que service. Ou bien utilisez la commande d'exemple STARTSETI.BAT suivante, créée dans le répertoire d'installation du programme: @ECHO OFF IF "%1"=="-cpu" GOTO StartCpu REM *** Variables d'environnement optionnelles... REM SET HTTP_PROXY=127.0.0.1:8080 REM SET SOCKS_SERVER=192.168.0.254:1080 REM SET SOCKS_USER=nom-d'utilisateur-local REM SET SOCKS_PASSWD=mot-de-passe-SOCKS REM *** Lancer setiathome sur les processeurs 0, 1 et 2 FOR %%N IN (0,1,2) DO CALL %0 -cpu %%N %1 %2 %3 %4 %5 %6 %7 GOTO Fin :NoCpu ECHO Erreur: Impossible de créer le sous-répertoire CPU%1 ! GOTO Fin :StartCpu SHIFT REM *** Lance setiathome sur le processeur numéro %1 lecteur-d'installation: CD chemin-d'installation REM *** Utilise un sous-répertoire distinct par instance IF NOT EXIST CPU%1\NUL MKDIR CPU%1 IF NOT EXIST CPU%1\NUL GOTO NoCpu CD CPU%1 REM *** On peut ajouter d'autres paramètres constants avant %2 START /m ..\setiathome.exe -cpu %1 -verbose %2 %3 %4 %5 %6 %7 CD .. :Fin STARTSETI.BAT peut être lancé avec des paramètres supplémentaires pour indiquer des options supplémentaires pour setiathome. Remplacez ci-dessus lecteur-d'installation: et chemin-d'installation par la lettre du disque et le chemin du répertoire d'installation du logiciel. Le script ci-dessus créera et utilisera un sous-répertoire CPU0, CPU1 ou CPU2 pour les fichiers de chaque instance lancée chacune sur un processeur séparé. Chaque instance est lancée dans une fenêtre de commande distincte réduite en icône. Adaptez ce script en fonction des numéros de processeur à utiliser, en modifiant les numéros "0,1,2" de la ligne "FOR" ci-dessus. Les fichiers "stop_after_xfer.txt" et "stop_after_process.txt" (au contenu quelconque), créés par l'utilisateur dans le répertoire d'exécution du programme, permettent à l'utilisateur de contrôler l'exécution du programme après son lancement (voir plus haut). PIEGES A EVITER En cas d'exécution de plusieurs instances du logiciel client depuis plusieurs machines ou sur une machine multi-processeurs, veuillez vous assurer de lancer chacun des clients depuis des répertoires physiques différents, sinon la deuxième instance refusera de se lancer ou bien des fichiers ".sah" de données pourraient être corrompus ! Si le programme fonctionne en arrière-plan, utilisez la commande Unix: kill -INT pid (ou simplement : kill pid) pour arrêter le client (dans laquelle "pid" est l'identifiant du processus de "setiathome"). N'utilisez surtout pas "kill -9" sinon l'état des calculs risquent de ne pas être sauvegardés ! De même, sous Windows 98/NT, ne forcez pas la fermeture de la fenêtre de commande, mais ouvrez la et tapez Control+C pour arrêter la tâche et sauver ses résultats. Si le programme est lancé en tant que service sous Windows NT/2000, utilisez le Panneau de configuration des Services pour arrêter et relancer le programme. CONTRIBUTEURS Merci aux personnes suivantes pour le portage de SETI@home sur les plates-formes Unix : Joe Abley, Hiram Clawson, Bill Coldwell, Charles Congdon, Ryan Dingman à Omni Development Inc., Mike Easlon, Gene Gotimer, Dean Johnson, Patrick Keane, Oliver Lenhart, Emory Lundberg, Douglas Liming, Stein Morten Sandbech et Steffen Zahn. VOIR AUSSI at(1), cron(1), crontab(4), nice(1), ps(1), top(1). TRADUCTION FRANCAISE Philippe Verdy <URL:http://perso.wanadoo.fr/verdy_p/> setiathome(1) Commandes Utilisateur Juin 2000 |