Pour changer le hostname sous Ubuntu, on procède en deux étapes:
sudo vi /etc/hostname
Il faudra changer l’ancien nom par le nouveau.
Puis:
sudo vi /etc/hosts
Il faudra de nouveau ici changer l’ancien hostname par le nouveau.
Voila c’est terminé!
Pour changer le hostname sous Ubuntu, on procède en deux étapes:
sudo vi /etc/hostname
Il faudra changer l’ancien nom par le nouveau.
Puis:
sudo vi /etc/hosts
Il faudra de nouveau ici changer l’ancien hostname par le nouveau.
Voila c’est terminé!
Sous Ubuntu, si votre Unity plante, pour le relancer, c’est facile, on ouvre un terminal avec un petit:
CTRL+ATL+T
Puis:
nohup unity --replace &
Pour ne plus avoir à taper son mot de passe lors d’un appel à sudo, il suffit d’éditer le fichier /etc/sudoers avec visudo:
sudo visudo
Et d’y ajouter cette ligne à la fin (ou en remplaçant celle existante pour le groupe sudo):
%sudo ALL=NOPASSWD: ALL
strace est un outil de débugage permettant de tracer/surveiller les appels systèmes utilisés par un programme, similaire à l’outil « truss » sur les autres systèmes Unix.
Les appels systèmes sont les interfaces fondamentales entre les applications et le noyau.
Généralement, ils ne sont pas appelés directement, mais via des wrappers de la glibc.
L’utilisation la plus courante de strace est de lancer un programme en l’utilisant. Il affichera une liste des appels système faits par le programme. C’est utile lorsqu’un programme plante continuellement, ou ne se comporte pas comme on l’aurait souhaité. Cela peut par exemple, révéler que le programme tente d’accéder à un dossier qui n’existe pas ou qui ne peut pas être traversé.
Une autre utilisation est d’utiliser l’option -p pour le rattacher à un PID. C’est utile lorsqu’un programme ne répond plus, et peut révéler, par exemple, que le processus est bloqué car il attend une connexion réseau.
Comme strace ne détaille que les appels système, il ne peut pas être utilisé comme un débugueur de code, tel que Gdb. Il reste cependant plus simple à utiliser qu’un débugueur de code, et est un outil extrêmement utile pour les administrateurs système.
Par exemples « fstat, mmap, open et close » lors d’un strace sur la commande ls:
strace ls
....
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0
mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x7f70143ad000
close(3)
...
Utilisation basique de strace (strace+commande):
strace ifconfig eth0
execve("/sbin/ifconfig", ["ifconfig", "eth0"], [/* 60 vars */]) = 0
brk(0) = 0x24c2000
........
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\37\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1840928, ...}) = 0
mmap(NULL, 3949248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7f6bcb2000
mprotect(0x7f7f6be6d000, 2093056, PROT_NONE) = 0
..........
uname({sys="Linux", node="starmate", ...}) = 0
access("/proc/net", R_OK) = 0
access("/proc/net/unix", R_OK) = 0
socket(PF_LOCAL, SOCK_DGRAM, 0) = 3
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
..........
write(1, " inet adr:192.168.0.10 "..., 75
inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0
) = 75
open("/proc/net/if_inet6", O_RDONLY) = 6
........
close(5) = 0
exit_group(0) = ?
+++ exited with 0 +++
Pour faire un grep, il faut enregistrer la sortie de strace dans un fichier:
strace -o /tmp/starmate/test.txt ifconfig eth0
Pour faire un rapport des appels systèmes:
strace -c ifconfig eth0
eth0 Link encap:Ethernet HWaddr 90:e6:ba:00:a5:cc
inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::92e6:baff:fe00:a5cc/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:798982 erreurs:0 :0 overruns:0 frame:0
TX packets:465336 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1141244545 (1.1 GB) Octets transmis:47180143 (47.1 MB)
Interruption:18
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
23.71 0.000170 12 14 11 access
16.04 0.000115 16 7 read
14.37 0.000103 7 14 mmap
13.67 0.000098 9 11 3 open
5.86 0.000042 14 3 brk
5.72 0.000041 41 1 execve
4.04 0.000029 3 10 write
3.63 0.000026 3 9 close
3.07 0.000022 2 9 fstat
2.93 0.000021 5 4 mprotect
2.79 0.000020 5 4 munmap
2.09 0.000015 1 11 ioctl
1.53 0.000011 4 3 socket
0.28 0.000002 2 1 uname
0.28 0.000002 2 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000717 102 14 total
Ici, l’appel système open génère 3 erreurs.
Pour tracer un appel système spécifique (fstat, mmap, open, close, etc):
strace -e open ifconfig eth0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/net/dev", O_RDONLY) = 6
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 6
open("/usr/share/locale/fr_FR/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/fr/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale-langpack/fr_FR/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale-langpack/fr/LC_MESSAGES/net-tools.mo", O_RDONLY) = 6
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 6
eth0 Link encap:Ethernet HWaddr 90:e6:ba:00:a5:cc
inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0
open("/proc/net/if_inet6", O_RDONLY) = 6
adr inet6: fe80::92e6:baff:fe00:a5cc/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:799386 erreurs:0 :0 overruns:0 frame:0
TX packets:465734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1141290153 (1.1 GB) Octets transmis:47434995 (47.4 MB)
Interruption:18
+++ exited with 0 +++
On voit que ifconfig essaye d’ouvrir des fichiers absents.
Pour les compter:
strace -e open ifconfig eth0 2>&1 | grep "No such file or directory" | wc -l
3
3! Exactement comme dans le rapport d’appels systèmes.
Pour tracer plusieurs appels systèmes spécifique (fstat, mmap, open, close, etc):
strace -e trace=mprotect,close ifconfig eth0
close(3) = 0
mprotect(0x7fdc160b6000, 2093056, PROT_NONE) = 0
close(3) = 0
mprotect(0x7fdc162b5000, 16384, PROT_READ) = 0
mprotect(0x60e000, 4096, PROT_READ) = 0
mprotect(0x7fdc164e2000, 4096, PROT_READ) = 0
close(3) = 0
close(6) = 0
close(6) = 0
close(6) = 0
close(6) = 0
eth0 Link encap:Ethernet HWaddr 90:e6:ba:00:a5:cc
inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::92e6:baff:fe00:a5cc/64 Scope:Lien
close(6) = 0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:799874 erreurs:0 :0 overruns:0 frame:0
TX packets:466198 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1141346643 (1.1 GB) Octets transmis:47736756 (47.7 MB)
Interruption:18
close(5) = 0
+++ exited with 0 +++
Pour tracer une catégorie spécifique d’appels Système ( ici ceux des processus « process »):
strace -e trace=process ifconfig eth0
execve("/sbin/ifconfig", ["ifconfig", "eth0"], [/* 60 vars */]) = 0
arch_prctl(ARCH_SET_FS, 0x7fccbe552740) = 0
eth0 Link encap:Ethernet HWaddr 90:e6:ba:00:a5:cc
inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::92e6:baff:fe00:a5cc/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:800160 erreurs:0 :0 overruns:0 frame:0
TX packets:466500 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1141433090 (1.1 GB) Octets transmis:47829311 (47.8 MB)
Interruption:18
exit_group(0) = ?
+++ exited with 0 +++
Les autres catégories:
-e trace=network Trace tous les appels systèmes de type réseau.
-e trace=signal Trace tous les appels systèmes de type signal.
-e trace=ipc Trace tous les appels systèmes IPC.
-e trace=desc Trace tous les appels systèmes liés aux descripteurs.
-e trace=set Trace tous les appels systèmes SET
-e trace=memory Trace tous les appels systèmes liés à la mémoire.
Il peut être utile d’afficher horodatage des appels systèmes et leur timestamp:
strace -r Timestamp relatif - temps passé pour un appel système
strace -t Préfixer chaque ligne par la date du jour
strace -tt Préfixer chaque ligne par la date du jour à la microseconde près
strace -ttt Préfixer chaque ligne par la date du jour à la microseconde près depuis 01/01/1970.
Pour attacher strace à un processus existant :
trace -p n°_PID
Strace est un outil très puissant, ne pas oublier man strace !!!
Voici un petit mémo pour moi même, qui détaille la façon d’augmenter la taille d’une partition lvm:
On va commencer par créer une partition de type lvm sur l’espace vide d’un disque, /dev/sda (dans un contexte hyperviseur):
fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3657f1c2.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
On affiche la table de partition (vide sur un disque vierge) avec la lettre « p« :
Command (m for help): p
Disk /dev/sda: 581.7 GB, 421474836480 bytes
16 heads, 183 sectors/track, 451610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3567f1c2
Device Boot Start End Blocks Id System
/dev/sda1 * * * * * *
/dev/sda2 * * * * * *
On crée une nouvelle partition avec « n »
Command (m for help): n
Puis on choisit une partition type « primary » (« p« )
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
On lui donne un numéro (chez moi, il y a déjà un sda1 et sda2 donc cela sera la sda3 « 3« ):
Partition number (1-4, default 1): 3
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
On va maintenant changer le « type » de la partition, c’est a dire que l’on va indiquer que cette partition est une partition lvm (8e):
Command (m for help): t
Selected partition 3
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
8e est le code pour LVM.
On affiche la table de partition pour tout vérifier avant de réécrire la table :
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3657f1c2
Device Boot Start End Blocks Id System
/dev/sda1 * * * * * *
/dev/sda2 * * * * * *
/dev/sda3 2048 41943039 20970496 8e Linux LVM
On a bien une partition de type « LVM ».
On peux enfin écrire la table:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
Pour une prise en charge de la nouvelle table sans redémarrer :
partx -v -a /dev/sda
Maintenant qu’on en a terminé avec le bas niveau, occupons-nous de LVM.
On commence par sauvegarder la configuration de LVM pour la restaurer en cas de problème:
vgcfgbackup mvg
Cela va créer un fichier /etc/lvm/backup/mvg qu’il nous sera utile en cas de problème.
On poursuit en initialisant maintenant la partition Lvm que l’on souhaite ajouté:
pvcreate /dev/sda3
Writing physical volume data to disk "/dev/sda3"
Physical volume "/dev/sda3" successfully created
On peut maintenant étendre le volume groupe « mvg » sur ce nouveau disque/partition:
vgextend mvg /dev/sda3
Volume group "mvg" successfully extended
Nous allons maintenant étendre le volume groupe à la totalité de l’espace libre de « mvg »:
lvextend -l +100%FREE /dev/mvg/LogVol02
Extending logical volume LogVol02 to 136.72 GiB
Logical volume LogVol02 successfully resized
En cas de problème, nous pouvons restaurer la configuration de LVM à l’état précédent grâce à la sauvegarde faite precedemment avec cette commande:
vgcfgrestore -f /etc/lvm/backup/mvg
Si tout est bon, il ne nous reste plus qu’à étendre le file système du volume logique (EXT2/3/4):
resize2fs /dev/mvg/LogVol02
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mvg/VolGroup00-LogVol02 is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 9
Performing an on-line resize of /dev/mvg/VolGroup00-LogVol02 to 35840000 (4k) blocks.
The filesystem on /dev/mvg/VolGroup00-LogVol02 is now 35840000 blocks long.
Si la partition est en XFS, il faudra plutot passer par cette commande:
xfs_growfs /dev/mvg/LogVol02
meta-data=/dev/mvg/LogVol02 isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4455424 to 9697280
On peux maintenant savourer son travail avec un petit df -h.