man
La commande qui permet d’avoir de l’aide sur une autre commande. par exemple si vous voulez connaitre la syntaxe exacte de la commande ls (ci dessous), il suffit de taper : man ls
ls
La commande qui permet de lister le contenu d’un repertoire. Pour ma part j’utilise ls avec quelques paramêtres pour pour avoir des couleurs différentes en fonction du type des fichiers (repertoire, lien symbolique...) et pour voir les fichiers cachés (fichiers qui commence par un ’.’).
bash$ ls -a --color
. .bash_history .xinitrc
.. .gnome .xsession
.Xauthority .gnome_private .xsession-errors
bash$
rm
La commande qui permet d’effacer un fichier. Voici un exemple a manipuler avec precaution. En effet, l’option -R permet d’effacer recursivement (c’est à dire tout ce qu’il y a dans les sous repertoire). * indique tout simplement de tout effacer.
bash$ ls
dir1 dir2 fichier_bidon
bash$ rm -R *
bash$ ls
bash$
cd
La commande qui permet de ce déplacer dans un autre répertoire.
mkdir
La commande pour créer un nouveau répertoire.
bash$ ls
bash$ mkdir test_dir
bash$ ls
test_dir
bash$
rmdir
La commande pour effacer un répertoire. Ce répertoire doit être vide.
bash$ ls
test_dir
bash$ rmdir test_dir
bash$ ls
bash$
alias
Une commande utile qui permet de faire correspondre à une commande un autre nom. La commande alias sans paramêtres affiche la liste des alias qui existe pour l’instant. Voici un exemple d’utilisation de alias. Après cela, la commande rm demandera confirmation à chaque fichier à effacer et la commande dir (qui n’existait pas avant) affiche le contenu d’un répertoire en couleur avec les fichiers cachés ainsi que les droits, taille...
bash$ alias
bash$ alias rm='rm -i'
bash$ alias dir='ls -a -l --color'
bash$ alias
alias dir='ls -a -l --color'
alias rm='rm -i'
bash$
more
Permet de faire défiler le contenu d’un fichier texte.
less
Comme "more" sauf qu’avec cette commande, on peut revenir en arrière dans le défilement du fichier.
ps
Permet de lister les processus actifs (voir les programmes qui sont actuellement lancés). Ici un exemple avec l’option a pour voir tout les processus.
bash$ ps a
PID TTY STAT TIME COMMAND
363 1 S 0:00 -bash
364 2 S 0:00 /sbin/mingetty tty2
365 3 S 0:00 /sbin/mingetty tty3
366 4 S 0:00 /sbin/mingetty tty4
367 5 S 0:00 /sbin/mingetty tty5
368 6 S 0:00 /sbin/mingetty tty6
392 1 S 0:00 sh /usr/X11R6/bin/startx
393 1 S 0:00 xinit /root/.xinitrc --
396 1 S 0:00 sh /root/.xinitrc
398 1 S 0:01 icewm
399 1 S 0:00 gnome-session
416 1 S 0:00 esd -nobeeps -as 30
471 1 S 0:02 panel --sm-config-prefix /panel.d/Session-a04972/ --sm-clien
513 1 S 0:00 gnome-terminal
515 1 S 0:00 gnome-pty-helper
516 p0 S 0:00 bash
832 p0 S 0:02 nedit index.html
5781 1 S 0:00 gnome-terminal
5782 1 S 0:00 gnome-pty-helper
5783 p1 S 0:00 bash
418 1 S 0:01 xscreensaver -no-splash -timeout 20 -nice 10 -lock-mode -xrm
9223 p1 S 0:00 su daniel
9224 p1 S 0:00 bash
9710 p1 R 0:00 ps a
bash$
top
Permet de voir les processus le plus gourmand en consommation processeur. En effet les processus sont classés et on ne visualise que les plus gourmands en ressource.
kill
Très utile car cette commande permet de tuer un processus (programme) ce qui peut s’avérer nécessaire si celui-ci a planté.
bash$ nedit &
[1] 9450
bash$ ps
PID TTY STAT TIME COMMAND
9223 p1 S 0:00 su daniel
9224 p1 S 0:00 bash
9450 p1 S 0:00 nedit
9458 p1 R 0:00 ps
bash$ kill -9 9450
bash$ ps
PID TTY STAT TIME COMMAND
9223 p1 S 0:00 su daniel
9224 p1 S 0:00 bash
9498 p1 R 0:00 ps
[1]+ Killed nedit
bash$
df
Permet de voir combien d’espace disque dur est utilisé/libre sur chaque partition monté et où sont montées les partitions.
bash$ df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/hda3 3199501 1467699 1566333 48% /
bash$
mount
Comme vous l’aurez compris, cette commande permet de monter une partition derrière un répertoire (seul le root peut faire cela sauf si des droits supplémentaire ont été rajoutés aux utilisateurs).
[root@daniel]# mount /dev/fd0 /mnt/floppy/ -t vfat
mount: block device /dev/fd0 is write-protected, mounting read-only
[root@daniel tp_GTR]#
umount
Pour démonter.
[root@daniel tp_GTR]# umount /dev/fd0
[root@daniel tp_GTR]#
free
Permet de voir combien de mêmoire est utilisé/libre et de voir combien de swap (mêmoire sur le disque dur) est utilisé.
bash$ free
total used free shared buffers cached
Mem: 63140 56028 7112 44812 3332 29708
-/+ buffers/cache: 22988 40152
Swap: 104416 0 104416
bash$
id
Permet de savoir qui on est (le groupe et l’utilisateur). Dans l’exemple ci-dessous, je suis l’utilisateur user1 (uid) dans le group users (gid) et j’appartient aux groupes users et root (groups) en effet un utilisateur peut avoir les droits de plusieurs groupes autres que son groupe "principale".
[user1@daniel src]$ id
uid=500(user1) gid=100(users) groups=100(users),0(root)
[user1@daniel src]$
fuser
Lorsque l’on veut démonter un système de fichier, il se peut qu’un utilisateur l’utilise. Dans ce cas, on ne peut pas démonter le système de fichier. Il est alors utile de savoir qui est quelle commande est responsable. Pour cela on peut utiliser la commande fuser. Voici un exemple qui nous permet de voir qui utilise /mnt/cdrom et tous les fichiers est sous répertoires qu’il contient.
[daniel@daniel src]$ fuser -vm /mnt/cdrom
USER PID ACCESS COMMAND
/mnt/cdrom daniel 542 ..c.. bash
[daniel@daniel src]$
ifconfig
Pour connaître la configuration IP des interfaces réseaux, on peut utiliser la commande ifconfig -a. Souvant cette commande ce trouve dans le répertoire /sbin qui n’est généralement pas dans le PATH des utilisateurs autres que root. Ce qui veut dire que si on ne se trouve pas sur le compte root, il peut être nécessaire d’indiquer le chemin complet où trouver la commande dans le shell.
[daniel@daniel ~]$ /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:C0:6D:12:1F:B5
inet addr:172.16.0.2 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:4 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:11386 (11.1 Kb)
Interrupt:10 Base address:0xe400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:168 errors:0 dropped:0 overruns:0 frame:0
TX packets:168 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12177 (11.8 Kb) TX bytes:12177 (11.8 Kb)
[daniel@daniel ~]$
netstat
Netstat est une commande importante pour obtenir des informations sur le réseau IP.
Cette commande peut par exemple nous renseigner sur le routage utilisé par la machine :
[daniel@daniel ~] netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.0.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
0.0.0.0 172.16.0.254 0.0.0.0 UG 40 0 0 eth0
[daniel@daniel ~]
Elle peut aussi nous renseigner sur les connections en cours :
[daniel@daniel ~] netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:swat *:* LISTEN
tcp 0 0 *:netbios-ssn *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:6000 *:* LISTEN
tcp 0 0 *:ndmp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:ipp *:* LISTEN
tcp 0 0 daniel:ssh daniel:filenet-rpc ESTABLISHED
tcp 0 0 daniel:filenet-rpc daniel:ssh ESTABLISHED
udp 0 0 daniel:netbios-ns *:*
udp 0 0 *:netbios-ns *:*
udp 0 3108 daniel:netbios-dgm *:*
udp 0 0 *:netbios-dgm *:*
udp 0 0 *:ndmp *:*
udp 0 0 *:sunrpc *:*
udp 0 0 *:ipp *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 2103 /tmp/.ICE-unix/1282
...
unix 2 [ ] DGRAM 829
unix 2 [ ] STREAM CONNECTED 582
[daniel@daniel ~]
Sur les programmes derrière les connections en cours (il faut être root pour voir toutes les connexions) :
[root@daniel daniel]# netstat -ap
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 *:x11 *:* LISTEN 921/X
tcp 0 0 *:ssh *:* LISTEN 744/sshd
tcp 0 0 *:ipp *:* LISTEN 775/cupsd
tcp 0 0 daniel.erasme.lan:32852 mail1.erasme.org:imap ESTABLISHED 1025/evolution-1.4
tcp 1 0 daniel.erasme.lan:32854 gila.mozilla.org:http CLOSE_WAIT 1109/esd
tcp 0 0 daniel.erasme.lan:33325 gate.erasme.lan:ssh ESTABLISHED 14002/ssh
udp 0 0 *:631 *:* 775/cupsd
Sockets du domaine UNIX actives(serveurs et établies)
Proto RefCpt Indicatrs Type Etat I-Node PID/Program name Chemin
unix 2 [ ACC ] STREAM LISTENING 1432 875/ /tmp/.gdm_socket
...
Sur l’état des interfaces réseaux et les packets transmit :
[daniel@daniel ~] netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 4 0 0 BMRU
lo 16436 0 812 0 0 0 812 0 0 0 LRU
[daniel@daniel ~]
Ou bien encore les statistiques sur les différents protocoles :
[daniel@daniel ~] netstat -s
Ip:
885 total packets received
0 forwarded
0 incoming packets discarded
879 incoming packets delivered
888 requests sent out
Icmp:
5 ICMP messages received
1 input ICMP message failed.
ICMP input histogram:
destination unreachable: 3
echo requests: 1
echo replies: 1
4 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 3
echo replies: 1
Tcp:
7 active connections openings
0 passive connection openings
0 failed connection attempts
0 connection resets received
2 connections established
807 segments received
808 segments send out
0 segments retransmited
0 bad segments received.
2 resets sent
Udp:
73 packets received
0 packets to unknown port received.
0 packet receive errors
73 packets sent
TcpExt:
ArpFilter: 0
3 TCP sockets finished time wait in fast timer
6 delayed acks sent
7 packets directly queued to recvmsg prequeue.
3 packets directly received from prequeue
196 packets header predicted
TCPPureAcks: 8
...
TCPMemoryPressures: 0
[daniel@daniel ~]
lsof
Un peu dans la même lignée que fuser mais en beaucoup plus précis, lsof permet de savoir quels sont les fichiers ouvert par les différents utilisateurs de la machine et par les différents programmes. Cette commande ce trouve rarement par défaut sur les machines, il convient alors de la rajouter sur le système.
Exécuté sous le compte d’un utilisateur, on peut seulement voir les fichiers ouvert par cet utilisateur (ou par les programmes qu’il utilise). Sous le compte root, on peut voir les fichiers ouvert par n’importe qui. La notion de fichier est prise au sens large Unix (fichier, pipe, socket, device...). Le programme est souvant installé dans /usr/sbin et rarement dans le PATH des utilisateurs autres que root. Cette commande et toutefois le plus souvant utile pour connaître l’état des connections TCP sur la machine. Dans ce cas, il faut être sous le compte root et utiliser la commande comme suit :
[root@daniel ~] lsof | grep TCP
portmap 539 root 4u IPv4 796 TCP *:sunrpc (LISTEN
)
sshd 621 root 3u IPv4 895 TCP *:ssh (LISTEN)
xinetd 643 root 3u IPv4 920 TCP *:swat (LISTEN)
cupsd 656 root 0u IPv4 1022 TCP *:ipp (LISTEN)
smbd 932 root 5u IPv4 1228 TCP *:netbios-ssn (L
ISTEN)
miniserv. 967 root 4u IPv4 1277 TCP *:ndmp (LISTEN)
X 1042 root 1u IPv4 1372 TCP *:6000 (LISTEN)
ssh 1696 root 3u IPv4 6864 TCP daniel:filenet-r
pc->daniel:ssh (ESTABLISHED)
sshd 1697 root 4u IPv4 6865 TCP daniel:ssh->dani
el:filenet-rpc (ESTABLISHED)
telnet 1848 daniel 3u IPv4 27074 TCP daniel:32773->da
niel:ssh (ESTABLISHED)
sshd 1849 root 4u IPv4 27075 TCP daniel:ssh->dani
el:32773 (ESTABLISHED)
[root@daniel ~]
rpm
Cette commande sert a installer, supprimer ou créer des packages (fichier se terminant par .rpm) RPM. Ces packages permettent l’installation de n’importe quoi (et donc des programmes) sous les distributions de Linux de RedHat et de Mandrake (principalement).
Pour installer un package, il faut d’habitude être sous le compte de l’utilisateur root. Le fichier du package peut être passé en paramêtre en relatif ou en absolue. L’installation d’un package ce fait comme suit (chemin relatif dans le répertoire courant) :
[root@daniel /mnt/cdrom/Mandrake/RPMS2] rpm -ivh xrally-1.1-1mdk.i586.rpm
xrally ##################################################
[root@daniel /mnt/cdrom/Mandrake/RPMS2]
Pour supprimer un package, il faut d’habitude être sous le compte de l’utilisateur root. Le nom du package correspond (en gros) au nom du fichier sans le .i586.rpm (i586 indique que ce package est fait pour des machines compatible avec les Pentium). La suppression d’un package ce fait comme suit (pas besoin du fichier du package) :
[root@daniel ~] rpm -e xrally-1.1-1mdk
[root@daniel ~]
Pour lister les packages installés sur la machine, il faut procéder comme suit (ici, pas besoin d’être sous le compte root) ATTENTION, il y a souvant beaucoup de packages installés :
[~] rpm -qa
libtermcap2-2.0.8-28mdk
setup-2.1.9-42mdk
info-install-4.0-20mdk
...
auth_ldap-1.4.7-1mdk
traceroute-1.4a5-14mdk
[~]
Pour mettre à jour un ensemble de packages RPM sur une machine pour des versions plus récentes, il faut utiliser la commande rpm -F. L’ensemble des packages à jour peuvent être placés dans un répertoire puis la commande suivante met à jour seulement les packages déjà installé sur la machine et dont une version plus récente est disponible :
[~] rpm -Fvh *.rpm
...
[~]
ssh
SSH est une commande qui permet de se connecter à une machine distante. La commande ssh comprend l’option -l qui sert a spécifier le nom du compte sur lequel on souhaite ce connecter. Le tout suivit du nom ou de l’adresse IP de la machine distante sur laquelle on veux se connecter. Ce qui peux donner par exemple :
[root@server1 /root]# ssh -l root server2.domain.org
root@server2.domain.org's password:
Last login: Tue Dec 10 02:24:53 2002 from server1.domain.org
[root@server2 root]#
Pour copier un grand nombre de fichier avec SSH à travers le réseau, on peut faire une copie d’un répertoire de manière récursive avec la commande scp -r. Seulement, si le nombre de fichiers est vraiment grand, la commande tar et quelques pipe sont vraiment plus rapides :
[~] tar cvzf - repertoire | ssh -l root dest.domain.org tar xzf -
...
[~]
scp
Pour copier un répertoire sur une autre machine à travers le réseau. Vous pouvez utiliser les outils de ssh. Pour la copie de fichier, la commande est scp. L’option -r permet de copier les répertoires récursivement. Voici un exemple de base :
[~] scp -r repertoire root@dest.domain.org:/dest/dir
...
[~]
Dans ce cas, les communications sont cryptées et une barre de progression pour chaque fichier vous indique l’état d’avancement.
Un problème se pose si vous avez vraiment beaucoup de fichiers a copier. Dans ce cas, il vaut mieux supprimer le cryptage de scp, les indicatifs de progression et valider la compression. Ce qui peut être fait avec la commande suivante (vraiment beaucoup plus rapide) :
[~] scp -C -q -c none -r repertoire root@dest.domain.org:/dest/dir
...
[~]