User Tools

Site Tools


informatique:linux:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:linux:start [2009/03/23 20:44] – yafc pteuinformatique:linux:start [2018/10/24 21:24] (current) – [Outils de performance] pteu
Line 4: Line 4:
  
 {{ http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/85px-Tux.svg.png}} {{ http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/85px-Tux.svg.png}}
- 
-~~DIR::informatique:linux?cols=page;date;user;tags~~ 
- 
-====== Astuces ====== 
  
 ===== Nettoyer sa Debian ===== ===== Nettoyer sa Debian =====
Line 207: Line 203:
 On l'ajoute au démarrage : On l'ajoute au démarrage :
   update-rc.d /etc/init.d/toto.sh defaults   update-rc.d /etc/init.d/toto.sh defaults
- 
- 
-=====Réinitialiser un mdp MySQL===== 
- 
-Pour réinitialiser le mot de passe d'un utilisateur, par exemple root : 
- 
-Stopper le daemon mysql 
-  /etc/init.d/mysql stop 
-   Stopping MySQL database server: mysqld. 
- 
-Démarrer le démon mysql avec l'option ''--skip-grant-tables'' : 
-  mysqld --skip-grant-tables & 
- 
-Démarrer le client mysql avec l'option ''-u root'' 
-  mysql -u root 
-   Welcome to the MySQL monitor.  Commands end with ; or \g. 
-   Your MySQL connection id is 1 
-   Server version: 5.0.51a-3-log (Debian) 
-    
-   Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 
-    
-   mysql> 
- 
-Exécuter les requêtes suivantes (remplacer <user> et <password> selon les besoins) 
-  UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; 
-  FLUSH PRIVILEGES; 
- 
-Redémarrer ''mysqld'' en mode normal 
-  /etc/init.d/mysql start 
-  Starting MySQL database server: mysqld. 
  
  
Line 321: Line 287:
   lftp ftp://login:mdp@site_FTP -e "mirror -e -R -x dossier_ignoré_1 -x dossier_ignoré_2 /emplacement_local /emplacement_distant ; quit"   lftp ftp://login:mdp@site_FTP -e "mirror -e -R -x dossier_ignoré_1 -x dossier_ignoré_2 /emplacement_local /emplacement_distant ; quit"
  
 +Paramètres :
   * -e pour lftp : pour exécuter les commandes entre guillemets et ne pas quitter   * -e pour lftp : pour exécuter les commandes entre guillemets et ne pas quitter
   * -e pour mirror : supprime de la destination les fichiers qui ne sont pas dans la source   * -e pour mirror : supprime de la destination les fichiers qui ne sont pas dans la source
Line 334: Line 301:
   **   **
  
 +Paramètres :
   * -n : transfert le fichier uniquement si le fichier local est plus récent que celui distant   * -n : transfert le fichier uniquement si le fichier local est plus récent que celui distant
   * -r : récursif   * -r : récursif
   * -v : mode verbeux   * -v : mode verbeux
- 
  
 =====Gérer les droits d'un dossier partagé===== =====Gérer les droits d'un dossier partagé=====
Line 360: Line 327:
 voir [[informatique:os:netbsd#colorer_le_bash|ici]] ou [[http://www.woueb.net/2009/01/05/personnaliser-bash-mise-en-forme-couleurs-prompt/#more-1058|là]]. voir [[informatique:os:netbsd#colorer_le_bash|ici]] ou [[http://www.woueb.net/2009/01/05/personnaliser-bash-mise-en-forme-couleurs-prompt/#more-1058|là]].
  
-======Fichiers notoires======+=====Analyser un processus=====
  
-=====rhosts=====+Un bien grand mot pour décrire la façon de savoir quel binaire se cache derrière un processus. Il faut pour celà récupérer son PID, puis regarder le lien synbolique situé dans ''/proc/<PID>/exe''
 + 
 +  ps 
 +   PID TTY          TIME CMD 
 +   20338 pts/4    00:00:00 bash 
 +   20358 pts/4    00:00:00 ps 
 +   
 +  ll -a /proc/20338/exe  
 +   lrwxrwxrwx 1 dude smbusers 0 avr 27 23:21 /proc/20338/exe -> /bin/bash* 
 + 
 +Dans le cas d'un processus suspect, on peut avoir des surprises : par exemple le lien qui pointe vers un exécutable bizarroïde situé dans ''/tmp''... 
 + 
 +=====Afficher l'heure dans l'historique des commandes===== 
 + 
 +Pour afficher la date et l'heure dans l'historique des commandes, ajouter cette ligne dans son ''.bashrc''
 +  HISTTIMEFORMAT="%m/%d_%H:%M:%S " 
 + 
 +=====Récupération d'un mot de passe root===== 
 +Quand on perd le mot de passe root sous Linux, on n'est plus rien. Heureusment il existe une procédure de recovery : 
 +  * rebooter 
 +  * lors du menu grub, presser "E" 
 +  * saisir : 
 +<code>grub edit> kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/sda1 rw init=/bin/bash</code> 
 +  * valider, puis, au menu grub, presser "B" 
 +  * au boot, on obtient un terminal root à partir duquel on peut modifier le mot de passe root 
 + 
 +=====Afficher un fichier avec les numéros de lignes===== 
 + 
 +<code>perl -ne 'print "$. - $_"' infile.txt</code> 
 + 
 +=====Débloquer un terminal===== 
 + 
 +Il arrive que votre terminal soit bloqué suite à une commande qui ne rend pas la main ; exemple : 
 +<code>telnet 10.0.0.1 
 +Trying 10.0.0.1... 
 +Connected to 10.0.0.1. 
 +Escape character is '^]'
 +^C 
 +^C 
 +exit 
 +quit 
 +^^^X^X^X^A^Z^Z^Z^Z^Z^C^C^V^C^C^M</code> 
 +Pour débloquer le terminal : ''^V^O<enter>'' (<ctrl+v><ctrl+o><enter>
 + 
 +La commande ''reset'' peut aussi fonctionner pour rétablir le titre de la fenêtre, après avoir lu un binaire par exemple. 
 + 
 +Source : [[http://www.commandlinefu.com/commands/view/4256/salvage-a-borked-terminal|commandlinefu]] 
 + 
 +=====Changer la langue du clavier===== 
 + 
 +Pour changer la langue du clavier (AZERTY ou QWERTY) : 
 +<code> 
 +setxkbmap [fr | us] 
 +</code> 
 + 
 +NB : sous centOS 
 +<code> 
 +loadkeys fr 
 +</code> 
 + 
 +=====Prendre un screenshot d'une machine distante===== 
 + 
 +Voici une commande pour prendre une capture d'écran d'une machine distante lorsqu'on est connecté dessus via SSH (PS : il faut qu'elle fasse tourner un serveur X évidemment) : 
 +<code>DISPLAY=":0.0" import -window root screenshot.png</code> 
 + 
 +=====Créer un fichier temporaire automatique===== 
 + 
 +Certaines commandes requièrent qu'on leur fournisse un fichier en input ; c'est le cas de la commande mail par exemple, pour spécifier le corps (contenu) du mail. 
 +Il faut donc créer ce fichier, ce qui est souvent fastidieux : par exemple : 
 + 
 +<code bash> 
 +echo "Ceci est le corps du mail" > /tmp/mail.tmp 
 +mail -s "Sujet du mail" destinataire@serveur.com < /tmp/mail.tmp 
 +rm -f /tmp/mail.tmp 
 +</code> 
 + 
 +Pour éviter la création du fichier temporaire, on encadre une commande par ''<('' et '')'' ce qui a pour effet de la faire passer par un fichier automatiquement : 
 + 
 +<code bash> 
 +mail -s "Sujet du mail" destinataire@serveur.com <(echo "Ceci est le corps du mail"
 +</code> 
 + 
 +Plus simple, plus rapide et plus propre, ce second exemple fait la même chose que le premier code. 
 + 
 +=====Connaitre la date d'installation du système===== 
 + 
 +NB : ceci ne marche que si le système n'a pas changé de système de fichier depuis son installation. 
 +<code bash> 
 +tune2fs -l $(df -P / | tail -n1 | cut -d' ' -f1 ) | grep 'Filesystem created:' 
 + Filesystem created:       Sun Jun  7 23:06:33 2009 
 +</code> 
 + 
 +=====Augmenter le nombre de ports clients===== 
 + 
 +Quand on initie une connexion, les applications utilisent des ports > 1024 comme port coté client (le port serveur étant par exemple 25 pour un serveur de mail, ou 80 pour un serveur web). Sous Linux les applications sont limitées aux ports clients indiqués dans le fichier ''/proc/sys/net/ipv4/ip_local_port_range'', dans mon cas sous Debian Squeeze entre 32368 et 61000 : 
 +<code bash> 
 +cat /proc/sys/net/ipv4/ip_local_port_range 
 +32768   61000 
 +</code> 
 + 
 +Pour augmenter cette plage de ports (c'est utile pour mettre en place un serveur proxy par exemple) il faut modifier le contenu du fichier via la commande : 
 +<code bash> 
 +sysctl -n net.ipv4.ip_local_port_range="25000 65000" 
 +</code> 
 + 
 +source : [[http://www.linuxscrew.com/2011/02/15/quick-tip-port-range/|Linux * Screw]] 
 + 
 + 
 +=====Fichiers notoires===== 
 + 
 +====rhosts====
  
 Contient la liste des hosts / logins ayant accès sans authentification aux services //remote// comme rsh ou rlogin, par exemple l'utilisateur //dude// sur la machine //192.168.2.3//. Contient la liste des hosts / logins ayant accès sans authentification aux services //remote// comme rsh ou rlogin, par exemple l'utilisateur //dude// sur la machine //192.168.2.3//.
   192.168.2.3     dude   192.168.2.3     dude
  
-=====/etc/motd=====+====/etc/motd====
  
 Il contient le message de bienvenue qui s'affiche quand un utilisateur se connecte à la machine. Il contient le message de bienvenue qui s'affiche quand un utilisateur se connecte à la machine.
Line 380: Line 457:
    permitted by applicable law.    permitted by applicable law.
  
-=====/etc/inittab=====+====/etc/inittab====
  
 Configure le service //init//, à l'origine de tous les autres processus lancéssur le système Configure le service //init//, à l'origine de tous les autres processus lancéssur le système
Line 404: Line 481:
   * activer les mdp **shadow** : les mots de passe de chaque utilisateur ne sont plus sotckés dans **/etc/passwd** (lisible pour tous) mais sont hashés (md5 le plus souvent) dans **/etc/shadow** qui lui n'est lisible que par root.   * activer les mdp **shadow** : les mots de passe de chaque utilisateur ne sont plus sotckés dans **/etc/passwd** (lisible pour tous) mais sont hashés (md5 le plus souvent) dans **/etc/shadow** qui lui n'est lisible que par root.
  
 +====/forcefsck====
 +
 +Ce fichier n'existe pas "normalement". On le créer afin de forcer un ''fsck'' au prochain démarrage de la machine.
 +<code>touch /forcefsck</code>
 +La machine, après avoir effectué le ''fsck'', supprime le fichier de sorte qu'elle ne le refera pas à tou les futurs démarrages.
 +
 +====/proc/meminfo====
 +
 +Pour récupérer des information sur la mémoire vive :
 +<code>cat /proc/meminfo
 +MemTotal:       968368 kB
 +MemFree:         34104 kB
 +Buffers:        128464 kB
 +Cached:         601764 kB
 +SwapCached:          0 kB
 +Active:         404812 kB
 +Inactive:       482104 kB
 +HighTotal:       62912 kB
 +HighFree:          192 kB
 +LowTotal:       905456 kB
 +LowFree:         33912 kB
 +SwapTotal:      979924 kB
 +SwapFree:       979272 kB
 +Dirty:             452 kB
 +Writeback:           0 kB
 +AnonPages:      156688 kB
 +Mapped:          21884 kB
 +Slab:            37704 kB
 +SReclaimable:    32008 kB
 +SUnreclaim:       5696 kB
 +PageTables:       1492 kB
 +NFS_Unstable:        0 kB
 +Bounce:              0 kB
 +WritebackTmp:        0 kB
 +CommitLimit:   1464108 kB
 +Committed_AS:   433792 kB
 +VmallocTotal:   114680 kB
 +VmallocUsed:      3188 kB
 +VmallocChunk:   111036 kB
 +HugePages_Total:     0
 +HugePages_Free:      0
 +HugePages_Rsvd:      0
 +HugePages_Surp:      0
 +Hugepagesize:     4096 kB
 +</code>
  
-====== Sécurité générale sous Linux ======+===== Sécurité générale sous Linux =====
  
 //(Résumé d'une partie du bouquin **Sécurité sous Linux** de Aron Hsiao, ed. Campus Press)// //(Résumé d'une partie du bouquin **Sécurité sous Linux** de Aron Hsiao, ed. Campus Press)//
  
  
-=====Configuration de LILO=====+====Configuration de LILO====
  
 Lilo (Linux LOader) est le programme qui lance l'image de Linux, et qui se place dans le MBR. Lilo (Linux LOader) est le programme qui lance l'image de Linux, et qui se place dans le MBR.
Line 429: Line 551:
  
  
-=====Les niveaux d'exécution=====+====Les niveaux d'exécution====
  
 //Debian GNU/Linux utilise des runlevels (runlevels) légèrement différents de ceux-ci, qui sont documentés dans **/etc/inittab**// //Debian GNU/Linux utilise des runlevels (runlevels) légèrement différents de ceux-ci, qui sont documentés dans **/etc/inittab**//
Line 446: Line 568:
  
  
-=====Protections réseau=====+====Protections réseau====
 (D'après http://www.dedibox-news.com/doku.php?id=distrib:debian:securiser_sa_debian) (D'après http://www.dedibox-news.com/doku.php?id=distrib:debian:securiser_sa_debian)
  
Line 471: Line 593:
  
  
-======Divers======+=====Utiliser un proxy http===== 
 + 
 +Pour utiliser un proxy HTTP sous Linux on peut utiliser la variable d'environnement http_proxy qui sera utilisable par toutes les applications qui en tiennent compte : 
 +<code bash> 
 +export http_proxy="http://login:password@IP_proxy:port" 
 +</code> 
 +("login:password" est facultatif) 
 + 
 +On peut rendre la manipulation pérenne en l'indiquant dans le fichier ''.bashrc'' de votre home. 
 + 
 +Pour certaine applications cela ne fonctionne pas ; par exemple j'obtiens ces erreurs sous debian 6.0.6 avec aptitude : 
 +<code bash> 
 +aptitude update 
 +Err http://ftp.debian.org squeeze-updates Release.gpg 
 +  Impossible d'initialiser la connexion à 3128: 80 (0.0.12.56). - connect (22: Argument invalide) 
 +Err http://ftp.debian.org/debian/ squeeze-updates/contrib Translation-en 
 +  Impossible d'initialiser la connexion à 3128: 80 (0.0.12.56). - connect (22: Argument invalide) 
 +[..] 
 +</code> 
 + 
 +Dans ce cas on peut préciser un proxy directement dans l'application ; dans le cas d'apt / aptitude il faut créer un fichier dans ''/etc/apt/apt.conf.d/'' avec le paramètre suivant : 
 +<code bash> 
 +vi /etc/apt/apt.conf.d/99proxy 
 +Acquire::http::Proxy "http://IP_proxy:port"; 
 +</code> 
 + 
 +NB : désactiver la variable d'environnement au besoin : 
 +<code bash> 
 +unset http_proxy 
 +</code> 
 + 
 +=====Le poste ne s’éteint pas===== 
 + 
 +Souvent cela arrive d'arrêter la machine avec la commande **halt** par exemple, et qu'elle reste "bloquée" à : ''System halted'' sans couper l'alimentation. Ceci a pour cause la mauvaise utilisation / compréhension des commandes pour arrêter la machine. 
 +  * ''shutdown -r'' / ''init 6'' / ''reboot'' : pour arrêter-redémarrer la machine 
 +  * ''shutdown -H'' / ''halt'' : arrête le système (mais pas "la machine" càd ne coupe pas l'alimentation électrique) 
 +  * ''shutdown -h now'' / ''halt -p'' / ''poweroff'' : arrêt + coupure de l'alimentation électrique 
 +  * ''shutdown -P'' : éteindre (power off) la machine 
 + 
 +Avec la commande **shutdown** on peut également : 
 +  * ''-t <secondes>'' spécifier un délais avant l'action choisi 
 +  * suivre l'action par une date (ex : ''shutdown -h now''
 +  * ''-c'' :  annuler un shutdown en cours 
 +  * ''-F'' : forcer le fsck (file system check) au reboot (ou ne pas faire de fsck : ''-f''
 + 
 +Donc pour conclure si on veut éteindre électriquement la machine il faut utiliser **shutdown -h now** ou l'un de ses alias. 
 + 
 + 
 +=====Le fichier /etc/nologin===== 
 + 
 +Lorsque le fichier ''/etc/nologin'' existe, aucun utilisateur autre que root ne peut plus se connecter au système. Le contenu du fichier sera alors affiché en guise de message d'information, par exemple "Maintenance en cours !" 
 + 
 +=====Changer le kernel OVH===== 
 + 
 +Quand j'ai installé mon Kimsufi il y a quelques année j'ai installé Debian 7 dessus, avec le kernel OVH ("optimisé" pour la machine). Bon, je me rend compte maintenance que je n'ai pas de temps à perdre pour m'amuser à changer de kernel manuellement , je veux donc installer celui des dépôts apt (qui seront surveillés et mis à jour plus régulièrement que si c'était moi !). Voici comment procéder : 
 +  * sauvegarder vos données, la base de toute manip. 
 +  * installer le paquet ''linux-image*'' (le nom dépend de votre Linux) 
 +<code bash> 
 +aptitude install linux-image-amd64 
 +</code> 
 +  * "désactiver" le kernel OVH 
 +<code bash> 
 +mkdir /root/bck_kernel_OVH 
 +mv /etc/grub.d/06_OVHkernel /root/bck_kernel_OVH/ 
 +</code> 
 +  * actualiser le menu de Grub, le chargeur de démarrage 
 +<code bash> 
 +update-grub 
 +</code> 
 +  * redémarrer la machine 
 +<code bash> 
 +init 6 
 + 
 +# (reboot...) 
 + 
 +# vérification du noyau 
 +uname -a 
 +Linux ksXXXXXXXX.kimsufi.com 3.2.0-4-amd64 #1cront SMP Debian 3.2.73-2+deb7u3 x86_64 GNU/Linux 
 +</code> 
 + 
 +Si tout se passe bien après quelques temps, on pourra virer les binaires du noyaux OVH pour faire de la place sur la partition /boot : 
 +<code bash> 
 +cd /boot 
 +rm System.map-3.10.9-xxxx-grs-ipv6-64 bzImage-3.10.9-xxxx-grs-ipv6-64 
 +</code> 
 + 
 +=====lsblk===== 
 + 
 +Pour afficher des informations sur les partitions (pas forcément montées) 
 +<code bash> 
 +lsblk -o name,mountpoint,label,size,uuid 
 +NAME   MOUNTPOINT LABEL   SIZE UUID 
 +sda                     278,9G  
 +├─sda1 /boot                1G 809a7481-b9c1-4c66-b281-e0bb181f8122 
 +├─sda2 /                 39,1G 07a81e54-5d64-455f-abc1-2bee4efca61d 
 +├─sda3 /usr/local        68,4G 24114522-c9ef-4d58-b095-c22954c2cc35 
 +├─sda4                      1K  
 +├─sda5 [SWAP]            50,8G 7072ac54-57f6-4a3d-8cb6-a48860f42976 
 +├─sda6 /var              11,7G ff92be9a-2855-4750-b8e9-f4b7519dbdbb 
 +└─sda7 /tmp               9,8G 9cdb2958-9c5c-4887-8918-e5bf963fe275 
 +sdc                      27,3T  
 +├─sdc1 /d5                5,5T ea56582d-bf21-44a7-98d5-a6c5552a899c 
 +└─sdc2 /c2               21,9T c574b2b1-7866-40c0-8cad-947995f2d8f5 
 +sdb                      27,3T  
 +├─sdb1 /d1                5,5T 5a5e8fb8-731e-4a1a-8ad4-b93f2d5ce537 
 +├─sdb2 /d2                5,5T 49fec063-efc0-483c-92c4-1cdd84033660 
 +├─sdb3 /d3                5,5T 08c1c937-20ca-4243-b332-e5f092c14975 
 +├─sdb4 /d4                5,5T 790ccead-b4b2-43d6-8c3c-80396fa8d6d4 
 +└─sdb5 /c1                5,5T 68d3b8ec-20e5-4b0d-984a-2de5b0132acb 
 +</code> 
 + 
 +=====Flush DNS===== 
 + 
 +Pour vider le cache DNS, (équivalent sous Windows d'un ''ipconfig /flushdns''), si on utilise le logiciel de cache **nscd** : 
 +<code bash> 
 +service nscd reload 
 + 
 +# ou, pour simplement supprimer le cache d'une entrée précise : 
 +nscd -i hosts 
 +</code> 
 +[[informatique:linux:nscd|Plus d'infos sur nscd]]. 
 + 
 +Si on utilise sssd : 
 +<code bash> 
 +# invalide toutes les entrées en cache : 
 +sss_cache -E 
 +</code>
  
-  * sur la debian est fourni la commande ''iconv'' qui permet de transcoder du texte de et vers n'importe quel jeu de caractères. Exemple : 
  
-  iconv -f utf8 -t iso8859-15 fichier_utf8.txt+=====Outils de performance=====
  
-  * il est intéressant de monter /usr/bin et /sbin en "ro" car ils ne devraient être modifiés que lors d'une mise à jour du système +Présentation sous forme graphique des outils pour analyserbenchmarker et tuner les performances sous Linux ! 
-  * fichier sensible /root/.bash_history +{{:informatique:linux:linux_observability_tools.png?direct&200|}} {{:informatique:linux:linux_static_tools.png?direct&200|}} {{:informatique:linux:linux_benchmarking_tools.png?direct&200|}} {{:informatique:linux:linux_tuning_tools.png?direct&200|}}
-  * la documentation debian se situe ici ''/usr/share/doc/debian/FAQ/index.html'' et dans ''/usr/share/doc/Debian/reference/index.html'' +
-  * lors de la mise à jour en kernel 2.6.25-2-686 (le 29/07/2008) il fallait ajouter la ligne suivante dans ''/etc/kernel-img.conf''+
  
-  do_initrd = Yes+source : http://www.brendangregg.com/linuxperf.html
  
-  * Le **bonding** sous Linux correspond à peu près l'équivalent de l'Etherchannel avec Cisco : il s'agit de créer une interface logique, aggrégat de (une ou) plusieurs interfaces physiques. L'exemple type est d'utiliser 2 cartes réseaux 100 Mbps pour créer une interface logique à 200 Mbps, supportant la perte d'une des cartes (dans ce cas le lien fonctionne en mode dégradé à 100 Mbps). 
  
-Liens : +=====Divers=====
-    * http://sluce.developpez.com/bonding/ +
-    * http://www.karlesnine.com/spip.php?article99+
  
 +  * sur la debian est fournie la commande ''iconv'' qui permet de transcoder du texte de et vers n'importe quel jeu de caractères. Exemple de conversion d'un fichier d'UTF8 vers ISO8859-15 :
 +<code bash>
 +iconv -f utf8 -t iso8859-15 fichier_utf8.txt
 +</code>
 +  * la documentation debian se situe ici : /usr/share/doc/debian/FAQ/index.html et dans /usr/share/doc/Debian/reference/index.html
  
-======= Liens =======+====== Liens ======
  
-====== Debian ======+===== Debian =====
  
 Site généraux fr : Site généraux fr :
informatique/linux/start.1237841053.txt.gz · Last modified: 2013/10/14 20:54 (external edit)