Pour connaitre la version du noyau en cours d'utilisation, saisir dans une console la commande suivante :
$ sudo uname -a
Linux vm-apache 2.6.32-14-pve #1 SMP Tue Aug 21 08:24:37 CEST 2012 i686 GNU/Linux
Sur un système GNU/Linux, une locale qui n'est pas correctement configurée entraîne ce genre de message d'erreur :
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF-8)
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF-8)
Pour corriger cette erreur, il suffit d'exécuter les 2 commandes suivantes :
$ sudo locale-gen en_GB.UTF-8
$ sudo update-locale LANG=en_GB.UTF-8
Une simple déconnexion / reconnexion suffit pour ne plus avoir le problème.
Sous Linux, la vérification des disques s'effectue avec la commande fsck.
L'utilisation de cette commande nécessite que la partition à controler soit démontée.
Lister les disques et partitions du système
$ fdisk -l
Disk /dev/sdb: 1500.3 GB, 1500299395072 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00026d5d
Device Boot Start End Blocks Id System
/dev/sdb1 1 182401 1465136001 83 Linux
Identifier le type de la partition
$ blkid
/dev/sdb1: UUID="a6ea6463-e289-4bbe-afba-572f876497da" TYPE="ext4"
Identifier le point de montage de la partition
$ mount
/dev/sdb1 on /volume1 type ext4 (rw)
Démonter la partition et lancer la vérification
$ umount /volume1
$ fsck -t ext4 /dev/sdb1
Si le démontage de la partition n'est pas possible, il existe 2 solutions permettant la vérification des disques.
1 - Redémarrer le système en forçant la vérification :
$ shutdown -r -F now
2 - Créer le fichier forcefsck et redémarrer le système :
$ touch /forcefsck
$ reboot
Après le redémarrage et la vérification des disques, le fichier /forcefsck est automatiquement supprimé.
Par défaut, les pages de manuels utilisent la commande less pour les afficher.
La commande less est une évolution de la commande more.
Elle permet de mettre en gras les rubriques principales des pages de manuels.
La commande most, permet d'ajouter une coloration syntaxique et bien d'autres options supplémentaires.
Pour installer la commande most :
$ sudo apt-get install most
Pour utiliser most pour parcourir les pages de manuels :
$ PAGER=most man cp
Cette commande permet d'utiliser most comme PAGER pour consulter le manuel de la commande cp
Pour utiliser most comme PAGER par défaut :
En BASH, ajouter cette ligne dans le fichier ~/.bashrc
export PAGER=most
Autres options disponibles avec la commande most (partant du principe que most est le PAGER par défaut):
Non seulement most permet de consulter les pages de manuels mais il peut également afficher le contenu de n'importe quel fichier.
$ man cp # consultation du manuel avec la commande most si PAGER par défaut
$ most /mon_fichier
H : affichage de l'aide most
Espace ou D : défilement page par page vers le bas
Delete ou U : défilement page par page vers le haut
Entrée ou Flèche bas : défilement ligne par ligne vers le bas
Flèche haut : défilement ligne par ligne vers le haut
T : se positionne en haut du document
B : se positionne en bas du document
J ou G : se positionne à la ligne voulue
> : déplacement vers la droite
< : déplacement vers la gauche
S ou f ou / : permet d'effectuer une recherche vers le bas
? : permet d'effectuer une recherche vers le haut
N : recherche les occurences suivantes
En mode affichage de fichier :
E : bascule en mode édition avec l'éditeur par défaut
En mode affichage de logs en continu :
au lieu de
$ tail -f /var/log/access.log
utiliser most puis l'option F
$ most /var/log/access.log
F : simule la commande tail -f
La commande suivante permet d'afficher les 15 premiers processus les plus gourmands en processeur.
$ sudo ps auxk -pcpu | head -n 16
$ sudo ps -ef | grep nom_du_programme
ou
$ pgrep nom_du_programme
La commande ci-dessus retourne le numéro du processus recherché.
Afficher les processus d'un user particulier (par exemple root):
$ pgrep -u root
Pour afficher les statistiques d'un programme spécifique à l'aide de la commande top:
L'exemple suivant affiche tous les processus nginx.
$ top -p$(pgrep -d, nginx)
L'argument -d de la commande pgrep permet d'afficher les numéros des processus séparés par une virgule.
L'argument -p de la commande top permet de filtrer uniquement les processus indiqués.
La commande logger permet d'enregistrer des informations dans le fichier /var/log/syslog.
Cette commande est idéale pour journaliser différents évènements pendant l'exécution d'un script.
Elle peut être utilisée tout simplement :
$ logger -t monTag monMessage
$ tail /var/log/syslog
Apr 23 15:23:37 ubuntu10.04 monTag: monMessage
L'option -t permet d'indiquer un tag. Très utile pour effectuer des recherches dans le fichier syslog.
$ logger -t monTag Je peux également écrire un texte avec des espaces
$ tail /var/log/syslog
Apr 23 15:26:12 ubuntu10.04 monTag: Je peux également écrire un texte avec des espaces
La commande logger permet également d'enregistrer dans syslog le contenu d'un fichier.
$ cat fic1
systèmes
coucou
recoucou
$ logger -t FIC1 -f fic1
$ tail /var/log/syslog
Apr 23 15:29:13 ubuntu10.04 FIC1: systèmes
Apr 23 15:29:13 ubuntu10.04 FIC1: coucou
Apr 23 15:29:13 ubuntu10.04 FIC1: recoucou
Utiliser la commande logger dans un script :
$ cat comparaison.sh
#!/bin/bash
logger -t $0 Execution du script
# Test sur le nombre d'arguments
if [[ $# -ne 2 ]]
then
logger -t $0 Nombre d\'arguments incorrect
echo "Mauvais nombre d'arguments"
echo "Utilisation : $0 nbr1 nbr2"
exit 1
fi
# On compare les nombres
logger -t $0 Comparaison de $1 et $2
if [[ $1 -gt $2 ]]
then
logger -t $0 $1 est superieur a $2
echo "Comparaison : $1 est superieur a $2"
else
logger -t $0 $1 est inferieur a $2
echo "Comparaison : $1 est inferieur a $2"
fi
logger -t $0 Fin du script
exit 0
Dans ce script, j'utilise le nom du script comme tag (logger -t $0).
Exécution du script :
$ ./comparaison.sh 10 20
Comparaison : 10 est inferieur a 20
$ tail /var/log/syslog
Apr 23 15:51:57 ubuntu10.04 ./comparaison.sh: Execution du script
Apr 23 15:51:57 ubuntu10.04 ./comparaison.sh: Comparaison de 10 et 20
Apr 23 15:51:57 ubuntu10.04 ./comparaison.sh: 10 est inferieur a 20
Apr 23 15:51:57 ubuntu10.04 ./comparaison.sh: Fin du script
Tous mes évènements ont été enregistrés dans sylog.
Il est également possible, dans le script, d'enregistrer les évènements dans un fichier texte avec la commande echo et seulement, à la fin du script, d'utiliser la commande logger pour enregistrer le contenu du fichier texte dans le fichier syslog.
$ cat comparaison.sh
#!/bin/bash
echo "Execution du script" > /root/logComparaison
# Test sur le nombre d'arguments
if [[ $# -ne 2 ]]
then
echo "Nombre d'arguments incorrect" >> /root/logComparaison
echo "Mauvais nombre d'arguments"
echo "Utilisation : $0 nbr1 nbr2"
exit 1
fi
# On compare les nombres
echo "Comparaison de $1 et $2" >> /root/logComparaison
if [[ $1 -gt $2 ]]
then
echo "$1 est superieur a $2" >> /root/logComparaison
echo "Comparaison : $1 est superieur a $2"
else
echo "$1 est inferieur a $2" >> /root/logComparaison
echo "Comparaison : $1 est inferieur a $2"
fi
echo "Fin du script" >> /root/logComparaison
logger -t $0 -f /root/logComparaison
exit 0
Tous les évènements sont enregistrés dans le fichier /root/logComparaison à l'aide de la commande echo.
Attention, le premier appel à la commande echo écrase le contenu du fichier /root/logComparaison s'il existe (utilisation d'un seul chevron ">" dans la redirection).
Pour terminer, tout le contenu du fichier est enregistré dans syslog à l'aide de la commande logger et de l'option -f suivi du nom du fichier (utilisation du nom du script en tag).
$ ./comparaison.sh 100 20
Comparaison : 100 est superieur a 20
$ cat logComparaison
Execution du script
Comparaison de 100 et 20
100 est superieur a 20
Fin du script
$ tail /var/log/syslog
Apr 23 16:21:10 ubuntu10.04 ./comparaison.sh: Execution du script
Apr 23 16:21:10 ubuntu10.04 ./comparaison.sh: Comparaison de 100 et 20
Apr 23 16:21:10 ubuntu10.04 ./comparaison.sh: 100 est superieur a 20
Apr 23 16:21:10 ubuntu10.04 ./comparaison.sh: Fin du script