Les sempiternelles suites de Fibonnaci…, on les retrouve toujours partout en progra, comme la tour de Hanoï dans n’importe quel jeu d’énigmes d’ailleurs… Voici donc un script bash permettant de calculer la suite de Fibonnaci. Pour rappel, une suite de Fibonnaci est une fonction récursive et se calcule de la façon suivante : F(0) = 0F(1) = 1F(n) = F(n–1) + F(n–2) Exemple :F(2) = F(1) + F(0) = 1F(3) = F(2) + F(1) = 1+1 = 2F(4) = F(3) + F(2) = 1+1 + 1 = 3F(5) = F(4) + F(3) = 1+1+1 + 1+1 = 5F(6) =
[ ARCHIVE ] : 2022
Un script bash permettant de calculer la factorielle d’un nombre. Pour rappel, une factorielle est une fonction récursive et se calcule de la façon suivante : n! = n * (n-1) * (n-2) * ... * 1 Exemple : 5! = 5 * 4 * 3 * 2 * 1 = 120 Script bashAvec mise en formeLe scriptLe script avec une mise en forme : #!/bin/bash# Fonction factorielleF=1factorielle(){ for ((i=1;i<=valeur;i++)) do F=$((F*$i)) done echo -e "\e[31m $F \e[0m"}# Affichage de tous les termes
La commande bang bang ou !! permet d’exécuter la dernière commande tapée dans le terminal. Il est également possible de préciser un nombre !n ou n correspond à la ligne dans l’historique (voir commande history) Pour lancer la dernière commande : # !! Pour lancer la commande n°42 (voir son historique): # !42 Remerciements midorino3142 Merci à midorino3142 pour ce TIL !
Sur un contrôleur de domaine Windows, ou sur un serveur Linux OpenLDAP, le protocole LDAP permet de centraliser l’authentification. La commande ldapsearch permet de rechercher des entrées dans une arborescence d’annuaires LDAP Configuration du serveur LDAPPour voir la configuration de votre LDAP, on utilise les options cn=config et -Y suivi de EXTERNAL, avoir accès à la configuration est utile pour par exemple modifier les contrôles d’accès ou modifier le mot de passe root. La commande doit être
LDAP (Lightweight Directory Access Protocol) est le protocole d’annuaire sur TCP/IP. Les annuaires permettent de partager des informations (utilisateurs, systèmes, etc.) sur le réseau. La fonction première d’un annuaire est de retourner les attributs d’un objet grâce à des fonctions de recherche multi-critères. Comparé à un SGBD, un annuaire est très performant en lecture mais beaucoup moins en écriture. Sa est de centraliser les informations et les rendre disponibles, via le réseau à des applic
Différences entre deux types de transformations nucléaire : la fusion et la fission. Fission nucléaireLa fission nucléaire est la séparation du noyau d’un atome en plusieurs noyaux plus légers et peut générer d’autres particules subatomiques. PrincipesLa fission nucléaire forme de nouveaux atomes plus légers à partir des protons et des neutrons d’un atome très lourd, elle se produit naturellement chez les éléments dont le noyau est instable et peut aussi être provoquée artificiellement afin d’ut
Pour remplacer plusieurs mots (ou bouts de mots) sous Vim, on utilise g, s et %s : Toutes les occurences : :%s/texte/Nouveau/g Une seule (la 1ère trouvée) : :s/texte/Nouveau/g Exemple : changer le mot corbeau en corbeille sans toucher aux autres mots (comme beau) :g/corbeau/s/beau/beille/g Exemple : changer les espaces en tab ou inversement (mettre le bon nombre d’espaces) :%s/ /\t/g:%s/\t/ /g Et si vous avez fait un gros mistake, utiliser :u autant de fois que nécessaire.
Dans le but de synchroniser des horloges réparties au travers d’un réseau local (LAN), l’utilisation des protocoles NTP (Network Time Protocol) et SNTP (Simple Network Time Protocol) constituent les méthodes les plus connues pour atteindre un niveau de précision de l’ordre de la milliseconde PTP (Precision Time Protocol) est également un protocole Ethernet de synchronisation d’horloge (également appelé horloges distribuées ou Distributed Clocks (DCs)). Il est une évolution du NTP (Network Time P
La commande w affiche les utilisateurs connectés et ce qu’ils font. Commande wUtilisationExtrait du manuel : w [options] user [...] OptionsLes options sont peu nombreuses et se résument à : -h : ne pas afficher l’entête -s : short format, sans les colonnes JCPU et PCPU -u : Ignores the username while figuring out the current process and cpu times -f : n’affiche pas le champ FROM -V : affiche la version. <username> : affiche les informations d’un utilisateur FichiersLa commande fait app
Ce script a été écrit aux environs de 2012. Dans le cadre d’une migration de plusieurs sites Internet et de boites mail depuis un serveur (Gentoo) vers un autre plus récent (Debian), j’avais codé un petit script dans le but d’automatiser les tâches. ContexteDe nombreux éléments étaient à migrer sur le nouveau serveur : les sites Internet de chaque client les boites mail de chaque client les bases de données de chaque client ScriptsScript principal, comportant les 3 fonctions de récupération a
Dans notre cas nous devons basculer 3 noeuds actuellement sous gestion SGE vers SLURM, les noeuds à basculer sont mynode05, mynode06, mynode07 et mynode08. Administration sous SGEAffichageOn affiche la liste des noeuds sous gestion SGE : # qstat -fqueuename qtype resv/used/tot. load_avg arch state-----------------------------------------------------------------------------allqueue.q@mynode01.hpc BIP 0/13/40 10.72 lx-amd64-----------------------------
La commande dmidecode est un outil permettant d’utiliser la table DMI (Desktop Management Interface) ou MBIOS (System Management BIOS) pour afficher les informations des composants matériels du système, numéros de série, etc. Les deux normes sont étroitement liées et développées par le DMTF (Desktop Management Task Force). UtilisationExtrait du manuelL’aide nous indique que la commande s’utilise sous la forme : # dmidecode <options> ExemplesLes commandes suivantes sont équivalentes : # dm
Commande pour supprimer tous les processus d’un utilisateur en particulier : # ps aux | grep "^usename" | awk '{print $2}' | xargs kill -9 Détails : ps aux : liste tous les processus grep "^usename" : liste uniquement les lignes commençant par username awk '{print $2}' : Récupère la 2ème colonne (où se trouve le PID des processus) xargs kill -9 : Met les PID sous forme de ligne (avant en colonne) et exécute un kill
Pour observer de plus près le comportement d’un job, on peut utiliser la commandes qstat. Extrait du manL’aide de la commande précise : # qstat --helpusage: qstat [options] [-ext] view additional attributes [-f] full output [-F [resource_attributes]] full output and show (selected) resources of queue(s) [-g c] display cluster queue summary [-g d]
Les commandes qstat et qmod affichent les informations des jobs dans la file d’attente. Les jobs passent généralement par plusieurs statuts au cours de leur exécution. Les statuts typiques sont pending, running, suspending, hold et queue wait : p : pending r : running s : suspending z : zombie qw : queue wait Rq : Re-queue h : hold et h = |hu|ho|hs|hd|hj|h|a| hu : user hold, ho : operator hold hs : system hold hj : job hold a : alarm t : transfering d : deletion z : finished normally
La commande squeue affiche les informations des jobs dans la file d’attente sous forme de plusieurs colonnes dont ST et NODELIST (REASON). La colonne ST indique le statut du job et NODELIST (REASON) donne plus d’informations sur la raison pour laquelle le job n’a pas démarré. # squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)10674 n01_25 particule emmetbrown R 17:00 4 n13-[01-04]10668 node quantique martymcfly R 17:45
Pour observer de plus près le comportement d’un job, on peut utiliser les commandes sstat, ssacct, scontrol et même squeue. Extrait du manL’aide des commandes précise : squeue : afficher les informations sur les jobs dans la file d’attente sstat : afficher le status des jobs sacct : afficher les logs des jobs scontrol : afficher/modifier des jobs, noeuds, partitions, réservations, configuration globale Pour annuler un job : scancel : annuler un job Statut des jobs et de la node
Parfois les clusters de calcul subissent de fortes charges, dûes à des résidus de calculs terminés qui peuvent toujours apparaître dans la liste des processus, SGE est censépourvoir gérer ce type de problème grâce au fichier prolog et/ou epilog, situés dans <$SGE_ROOT>/site/ mais les problèmes peuvent persister. Load AverageLe load_avg est une valeur fournie par la commande uptime ou celles du type top, htop, etc. et indique la charge processeur moyenne. La commande qstat affiche également
Pour limiter le nombre de calcul lancé par un utilisateur, il est possible de paramétrer un script dans le fichier prolog de SGE en appelant un autre fichier, ici nomé MaxJobs contenant les restrictions. Fichier de configurationFichier de limitationDans le fichier <$SGE_ROOT>/site/MaxJobs ont ajoute le nombre maximal de jobs qu’un utilisateur peut lancer suivi de son compte en précisant une valeur max par défaut. # cat <$SGE_ROOT>/site/MaxJobs#Nb_job:user8:defaut20:jerry20:jess10:mor
Le dossier <$SGE_ROOT>/site/ comporte un certain nombre de fichiers définissant le comportement de SGE, ce dossier contient également les fichiers prolog et epilog. Fichiers de configurationSi ces fichiers existent et sont définis, ils remplacent la configuration globale par défaut de SGE. Ces fichiers sont un moyen d’automatiser l’exécution des jobs. PrologLe prolog est un script qui est excétuté avant le lancement des jobs sous SGE. Ce fichier permet d’automatiser l’exécution des jobs, c
LUKS (Linux Unified Key Setup) est un standard associé au noyau Linux pour chiffrer les disques. Le standard LUKSFonctionnalitésLUKS permet de chiffrer l’intégralité d’un disque de telle sorte que celui-ci soit utilisable sur d’autres plates-formes et distributions de Linux (voire d’autres systèmes d’exploitation). Il supporte des mots de passe multiples afin que plusieurs utilisateurs soient en mesure de déchiffrer le même volume sans partager leur mot de passe. ImplémentationsSous Linux, l’imp
Pour vérifier la force d’un mot de passe, le module pam_pwquality.so est utilisé dans CentOS/RHEL6 pour vérifier la force du mot de passe. Dans CentOS/RHEL7 c’est le module pam_cracklib.so. Problème de changement de mot de passeAvec passwdLors de la modification du mot de passe à l’aide de la commande passwd, l’erreur suivante s’affiche : # passwd user42passwd: Module is unknown Cette erreur vient du fait que le module pam_pwquality.so est inconnu dans CentOS/RHEL6. Fichier de configurationSup
Pour vérifier la licence de TiNa VérificationGUISimplement, dans votre interface en haut à droite : Onglet Help > License CLIDans votre console : # /usr/Atempo/TimeNavigator/tina/Bin/ade_admin --cmd license_info Documentationhttps://usergroup.atempo.com/fr/tina/documentation-tina/
La défragmentation du catalogue est nécessaire pour éviter qu’il atteigne sa taille maximale possible, ce qui risquerait d’empêcher le bon déroulement des sauvegardes. Utilité du CatalogueLe catalogue TiNa (Time Navigator) est une base de données recensant les objets sauvegardés et leurs différentes versions. Pour lancer L’interface graphique de TiNa : # ./tina_adm Vérifier la taille du cataloguePour vérifier sa taille : dans la console d’administration “Time Navigator“ en bas à gauche > o
Lorsque vous voulez vous connecter à un logiciel qui a besoin des droits root dans un environnement graphique depuis ssh, si les MAGIC-COOKIE ne sont pas définis dans le fichier .Xauthority de root il ne sera alors pas possible pour un utilisateur de se conecter (et de lancer ledit logiciel). Récupérer les MAGIC-COOKIELe but ici est de récupérer le contenu du .Xauthority (qui contient les MAGIC-COOKIE) d’un utilisateur pour l’ajouter à celui de root. Problème de fichier avec FirefoxPar exemple a
Parfois un script ne peut pas se lancer car la queue a été paramétrée avec une classe Les classesLes classes sous SGE ? A Job Class is :A set of jobs that are equivalent in some sense and treated similarly.In Sun Grid Engine, Enterprise Edition a job class is defined by the identical requirements of the corresponding jobs and the characteristics of the queues being suitable for those jobs. Manipuler les classesCréé une nouvelle classe en ouvrant un éditeur de texte : # qconf -ajc <job_class
Pour trouver la ligne la plus fréquentes dans un fichier : # cat file | sort | uniq -c | sort -n | tail -1
Pour faire une recherche dans un répertoire nommé rep, avec des fichiers d’extention .md ScriptRecherche basiqueDans votre .bashrc, créer la fonction suivante, il s’agit d’un grep couplé à un sort. Le $@ permet de passer des arguments dans la fonction : # Fonction de recherchesrh () { grep -R --color "$@" /chemin/vers/le/répertoire | sort} Recherche évoluéeUne version plus évoluée de cette fonction, avec sed et awk, le “µ” désigne le caractère de remplacement : # Fonction
Différences entre un agregat, un volume, un FlexVol, un qtree et un LUN sous NetApp. Le schéma ci-dessous donne un aperçu général : AggregateDéfinitionAggregate : ensemble de disques physiques, généralement montés en RAID. Un aggregate est un ensemble de disques (ou partitions) organisés en un ou plusieurs RAID. Il s’agit de l’unité de stockage la plus élémentaire au sein d’ONTAP et il est nécessaire pour permettre l’approvisionnement d’espace pour les hôtes connectés. Commandes de basePour la
Un qtree NetApp est un répertoire avec des propriétés particulières. Le “Q” signifie “quota”, les FlexVols sont maintenant de plus en plus utilisés dans NetApp car ils peuvent également être limités par des quotas. Propriétés des qtreesGénéralitéLes qtrees possèdent d’autres propriétés : 4995 qtrees possibles par volume interne sont similaires aux répertoires (partitions de volume plus exactement) permettent de gérer les quotas d’utilisation de l’espace disque limitation de la taille du qtree
Vous trouverez ci-dessous un certain nombre d’exemples de scripts pouvant être utilisés comme modèle pour créer vos propres scripts de soumission SLURM. Simple scripts de soumissionLes jobs nécessitent un fichier de script que SLURM interprète et exécute. Le fichier SBATCH contient à la fois des commandes spécifiques à SLURM à interpréter ainsi que des programmes à exécuter. Vous trouverez ci-dessous un exemple simple d’un job pour exécuter un fichier Stata do. ScriptCe fichier est nommé myscrip