pense-bête perso Linux(2).doc

(268 KB) Pobierz

///////////////////////////////////////////////////////////////////////////////////////////////////////
NB : ceci est mon "pense-bête" _personnel_ : j'y mets mes notes au fur et à mesure de ma découverte de Linux (Mandrake principalement, Debian/Knoppix parfois) : vous y trouverez donc des erreurs, des explications incomplètes et des choses que je suis le seul à comprendre. Mais comme certaines explications peuvent être utiles, je laisse ce fichier en ligne.
Il n'y a pas (encore) de classement ou de liens : utilisez la fonction recherche de votre "butineur".

A utiliser à vos risques et périls :)

Jean-Claude Garaud
///////////////////////////////////////////////////////////////////////////////////////////////////////

Les mines de renseignements
===========================
http://tldp.org/LDP/intro-linux/html/ Introduction to Linux
http://tldp.org/LDP/intro-linux/html/chap_04.html Processes
http://www.freenix.fr/unix/linux/Guide/ (le guide du rootard)
http://www.delafond.org/survielinux/ Guide de survie du débutant sous Linux
http://lea-linux.org
http://www.funix.org/fr/linux/main-linux.php3?ref=main&page=menu
http://www.zebulon.org.uk/
http://christian.caleca.free.fr/index.html
http://aplawrence.com
http://linux-newbie.sunsite.dk/index.html
http://www.unixguide.net/linux/linuxshortcuts.shtml
http://www.freeos.com
http://www.anfalab.org
http://tldp.org
http://www.linux-france.org/article/cesar/index.php?page=501
http://astuce.linux.free.fr/
http://troumad.free.fr/Linux/Linux.sxw
http://guide.andesi.org
http://funix.chez.tiscali.fr/informatique/linux/
http://linux-sottises.net
http://www.univ-st-etienne.fr/infsci/linfo/l0/unix/Cours/Html/ UNIX Principes de base
http://cyberzoide.developpez.com/unix/ Pense bête pour UNIX

Programmation
=============

BASH
----
- Bash Guide for Beginners
http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html
- BASH Programming - Introduction HOW-TO
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
- Guide avancé d'écriture des scripts Bash
http://www.bsdbooks.net/shells/scripting/fr/
http://abs.traduc.org/abs-3.1-fr/
Advanced Bash Scripting Guide :
http://www.tldp.org/LDP/abs/html/
http://personal.riverusers.com/~thegrendel/abs-guide-3.3.tar.bz2
- Linux Shell Scripting Tutorial
http://www.freeos.com/guides/lsst/

Quelques trucs
==============

Identifier le shell
-------------------
echo $SHELL
cf. http://unix.about.com/library/weekly/aa092500a.htm
La commande ps retourne les processus actifs, et en particulier le shell

Connaître la configuration matérielle et logicielle
---------------------------------------------------
cf. http://lea-linux.org/admin/exploration_config.html

Version de mandrake installée : cat /etc/mandrake-release
Version du noyau Linux : uname -sr (cf. man uname)

Déterminer le type d'un fichier
-------------------------------
file nomfichier

Infos sur un fichier (ou répertoire)
------------------------------------
stat nom_fichier
(donne en particulier le nombre de "hard links")

Récupérer le code de sortie d'une commande (errorlevel)
-------------------------------------------------------
Très utile dans les scripts, ce code peut aussi être visualisé directement en ligne de commande grâce à echo $?.
Exemple :
$ mount | grep /dev/hda1
echo $?
1
=> la partition /dev/hda1 n'est pas montée, n'existe pas, est déjà montée ... (voir man mount)

$ mount | grep /dev/sda7
/dev/sda9 on /mnt/backup type ext3 (rw)
$ echo $?
0
=> la partition /dev/sda9 est montée


Configuration matérielle
========================
D'après Gnu/linux magazine N°71

Bus PCI
-------
$ lspci
$ lspci -v
$ lspcidrake

Bios et hardware
----------------
# dmidecode (à installer)
Exemple : chercher les caractéristiques de la carte mère :
# dmidecode | less
Dans less taper h (pour la doc en ligne)
-i (pour des recherches en ignorant la casse)
/board (pour trouver la 1° occurence de board)
n (pour la suivante)
N (pour revenir à la précédante)

# lshw
# lshw -html

Disque dur :
----------
# hdparm -i /dev/hdx
Nb : ne fonctionne pas (actuellement 14-4-2005) avec disques SATA ; dans ce cas taper hdparm /dev/sdx qui ne retourne pas des infos vraiment intéressantes

SMARTmontools (=smartctl)

Processeurs
-----------
$ cat /proc/cpuinfo


Arrêter le PC
=============
cf: http://www.faqts.com/knowledge_base/view.phtml/aid/24476/fid/10
Pour l'arrêter complètement :
halt
shutdown now
shutdown -h now
(h = halt)

Avec redémarrage :
shutdown -r now
(r= reboot)
ou
<CTRL><ALT><DEL>

A partir de X Window, d'abord
<CTRL><ALT><BACKSPACE>
pour quitter X Windows, puis
<CTRL><ALT><DEL>


shutdown +3
(shutdown dans 3 minutes)
shutdown -c
supprimer l'arrêt programmé par la commande précédante

shutdown -Fr now
shutdown -fr now
-F = avec fsck au reboot
-f = sans fsck au reboot

init 5

Fichiers standard
-----------------
cf. http://livefirelabs.com/unix_tip_trick_shell_script/june_2003/06092003.htm
Un programme UNIX standard ouvre par défaut 3 fichiers
Nom Numéro
- standard input (stdin) 0
- standard output (stdout) 1
- standard error (stderr) 2

Redirections
------------
cf. http://unix.about.com/library/weekly/aa110600b.htm#stderr

Rediriger la sortie d'une commande vers un fichier :
cmd > fic
Rediriger stderr vers un fichier :
cmd 2> fic
Rediriger stdin et stderr vers le même fichier :
cmd > fic 2>&1
Rediriger stdin et stderr dans 2 fichiers différents :
cmd > fic1 2> fic2

Diriger le résultat (stdout) d'une commande simultanément vers l'écran et un fichier :
cmd | tee fic

Diriger le résultat d'une commande (stdout + stderr) simultanément vers l'écran et un fichier :
cmd 2>&1 | tee fic

Pour ajouter à un fichier déjà existant, remplacer > par >>
Pour tee, l'option d'ajout est -a :
cmd | tee -a fic

Arborescence (nom des répertoires)
==================================
http://www.pathname.com/fhs/2.2/
okki666.free.fr/docmaster/articles/linux025.htm

Différence entre bin et sbin : bin=binaires, sbin=binaires système.
=> pour un utilisateur standard bin peut être dans le PATH, mais sbin n'a aucune raison d'y être.

/ racine (root) du système de fichiers
/bin programmes nécessaires pour démarrer le système en mode mono-utilisateur.
/boot
/dev device files : points d'entrées vers des périphériques physiques
/etc fichiers de configuration
/home données propres à chaque utilisateur
/lib shared libraries nécessaires aux programmes de démarrage (principalement des programmes placés dans /bin et /sbin).
/mnt pour le montage pour les périphériques en mode block (cdrom, floppy ...)
/proc infos sur l'état du système et les différents processus
/sbin programmes nécessaires au fonctionnement du système
Les commandes placées dans /sbin (et dans /bin) ne sont en général pas exécutées par les utilisateurs.
/tmp fichiers temporaires
/usr usr = Unix System Resources. Données que les utilisateurs peuvent se partager
/var fichiers qui sont susceptibles de changer fréquemment : logs, les files d'attentes pour les impressions, etc.

Répertoires dans /usr

X11R6 système Xwindow
X11R6/bin exécutables pour le système Xwindow.
X11R6/lib librairies pour les programmes dans /usr/X11R6/bin.
X11R6/lib/X11 librairies utiles au démarrage du serveur Xwindow.
X11R6/include/X11 fichiers d'entêtes des applications X11.

bin programmes utilisables sur le système.
bin/X11 liens symboliques (et historiques) vers /usr/X11R6/bin
dict dictionnaires utilisés par les vérificateurs orthographiques
etc fichiers de configuration qui peuvent être partagés entre plusieurs machines. Vide sur MDK
include fichiers entêtes (.h) pour le compilateur C
lib librairies utilisées par les programmes des utilisateurs. Sous-répertoires pour les grosses applications
Contient aussi des programmes qui ne sont jamais lancés directement
X11 lien symbolique vers /usr/X11R6/lib/X11

local ce qui est spécifique à la machine locale
local/bin programmes
local/lib librairies
local/doc documentations
man man pages
src sources des diverses applications installées sur le système.
src/linux sources du noyau.

Les répertoires dans /var
lock fichiers de verrouillage. Par convention, le nom des fichiers est toujours LCK.<périphérique>
log logs du système
preserve sauvegardes d'édition de vi.
spool contient les files d'attentes d'impressions
spool/cron entrées crontab pour l'automatisation des tâches.
spool/lpd fichiers en attente d'impression.
spool/mail boîtes à lettres (mailbox) et les messages (mails) des utilisateurs.

PATH
----
Affichage :
echo $PATH

Ajout :
PATH=$PATH:nouveau_rep

Pour que la nouvelle valeur soit utilisée par le shell et les threads :
export PATH

Ou en une seule commande :
export PATH=$PATH:nouveau_rep


Quelques touches rapides très pratiques
=======================================
http://linux-newbie.sunsite.dk/lnag_commands.html#shortcuts
et touches système :
http://www.linux-france.org/article/cesar/index.php?page=5035

<Ctrl><+> Zoomer (nombreux browsers, konqueror, firefox ...)
<Ctrl><-> 'dé'zoomer
<Ctrl><Alt><Esc> lance xkill
<Ctrl><Alt><BkSpc> kill le serveur X-windows courant
<Ctrl><d> en début de ligne : ferme le terminal courant
sinon envoie EOL au processus courant
<Ctrl><z> Envoie le processus courant en tâche de fond

Sous KDE
--------
<Ctrl><Esc> Visualisation avec possibilité de suppresion des processus
<Alt><F12> (Bascule) permet d'émuler la souris à l'aide des flèches du clavier
<Alt><PrintScreen> Met une image de la fenêtre courante dans le presse-papier
<Ctrl><Alt><PrintScreen> " de l'écran " "
<Ctrl><Alt><d> (Bascule) fait apparaître/disparaître les fenêtres présentes sur le bureau
<Alt><LeftMouseButton> Permet de déplacer une fenêtre dont la barre de titre est inaccessible

Raccourci touches rapides <Alt><F2>
-----------------------------------
Ouvre une fenêtre pour taper une commande.
A partir d'une session utilisateur, pour lancer une commande en root :
kdesu commande

Ce raccourci manque dans KDE, session root
Pour l'installer :
Menu : System / Configuration / KDE / Accessibility / Keyboard shortcuts / Modifier Keys
et cliquer sur Defaults

magic sysrq keys
----------------
Pour arrêter une machine plantée.
http://snafu.freedom.org/linux2.2/docs/sysrq.txt (EN)
NB : il faut que le noyau ait été compilé avec 'Magic SysRq key' à yes (CONFIG_MAGIC_SYSRQ).

<ALT><SysRQ><command key>

<command key> :
'r' - Turns off keyboard raw mode and sets it to XLATE.
'k' - Kills all programs on the current virtual console.
'b' - Will immediately reboot the system without syncing or unmounting
your disks.
'o' - Will shut your system off via APM (if configured and supported).
's' - Will attempt to sync all mounted filesystems.
'u' - Will attempt to remount all mounted filesystems read-only.
'p' - Will dump the current registers and flags to your console.
't' - Will dump a list of current tasks and their information to your
console.
'm' - Will dump current memory info to your console.
'0'-'9' - Sets the console log level, controlling which kernel messages
will be printed to your console. ('0', for example would make
it so that only emergency messages like PANICs or OOPSes would
make it to your console.)
'e' - Send a SIGTERM to all processes, except for init.
'i' - Send a SIGKILL to all processes, except for init.
'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system
will be non-functional after this.)


Utilisation de "info"
=====================
<q> quitter
<p> previous node
<n> next node

Menus :
se déplacer à l'aide des flèches sur une entrée de menu indiquée par ::
<entrée> sélectionne l'entrée de menu
<u> up (pour revenir en arrière)

ps
===

$ ps affiche tous les processus lancés par l'utilisateur dans le terminal
$ ps -x affiche tous les processus lancés par l'utilisateur
$ ps -aux affiche tous les processus lancés par tous les utilisateurs

pstree
------
affiche les processus sous forme d'arborescence


less
====

less fichier
ls -l /etc | less

Recherche : /chaine_cherchée
Les chaînes trouvées apparaissent en surbrillance
Pour passer à la suivante : n
précédente : Shift n
Pour quitter : q

grep, egrep
===========
http://www.linux-tutorial.info/modules.php?name=Tutorial&pageid=32

Rechercher une chaîne de caractères dans l'ensemble des fichiers d'un répertoire
---------------------------------------------------------------------------------
find répertoire -print | xargs grep chaîne_cherchée
=> -print | xargs permet de faire affichier en début de ligne le nom du fichier qui contient la châine cherchée

Rechercher simultannément plusieurs chaînes
--------------------------------------------
Exemple
egrep "while|read|for" /repertoire/*

Afficher le contenu de tous les fichiers d'un répertoire en évitant les lignes vides et les commentaires
----------------------------------------------------------
egrep -v "^$|^#" /repertoire/* | less
-v --invert-match
^ début de ligne
$ fin de ligne
^# ligne commençant par #

Afficher le nom des fichiers contenant une chaîne
grep -l chaîne_cherchée /repertoire/*


sed
===
sed s/"chaîne_cherchée"/"chaîne_de_remplacement"/g fichier_source > fichier_destination
s substituer
/ entre // la chaîne à chercher et la chaîne qui la remplace
g répéter la substitution


Quelques commandes intéressantes
================================
lspci
-----
lspci |less
lspci v |less
lspci vv |less

Affiche toutes les infos concernant le bus PCI et les périphériques qui y sont connectés.


tail
----
tail /var/log/syslog affiche les 10 dernières lignes
tail -n 30 /var/log/syslog affiche les 30 dernières lignes
tail -f /var/log/messages affiche en continu les 10 dernières lignes du fichier

lsof
----
En l'absence de toute option, lsof retourne la liste de tous les fichiers ouverts appartenant aux pocessus actifs
lsof -i tous les fichiers internet
lsof -i :25 tous ceux qui utilisent le port 25 (SMTP)
lsof -i |grep imap tous les processus IMAP actifs

find
----
http://www.linux-mag.com/2001-04/newbies_01.html
http://www.linux-mag.com/2002-09/power_01.html

Nb:
- AND implicite entre les opérateurs !
- la commande est récursive ; pour limiter la profondeur de recherche : -maxdepth n

find / -name fichier.txt localiser fichier.txt à partir de la racine
find . -name fichier.txt à partir du répertoire où l'on se trouve

find / -name fichier.txt -ls affiche à la manière de ls

find / -name fichier.txt 2>/dev/null supprime les messages d'erreur
find / -name '*fic*' trouve la chaîne fic dans les noms de fichiers ou répertoires
find / -iname '*fic*' ignore la casse
find / -size +10000k trouve les fichiers de plus de 10000k (k = kilobytes, c = bytes)
find /home -iname '*do*' -type d 2>/dev/null tous les répertoires contenant do dans le nom (ignore la casse)
-type d directory
f regular f...

Zgłoś jeśli naruszono regulamin