Pour connaitre le nom du paquet d'ou provient un fichier, vous pouvez passer par une interface graphique, ou utiliser cette méthode
(en console, bien sur!)
Explication: vous listez le répertoire /mnt/cdrom/Mandrake/RPMS/ grace à une boucle, puis vous appliquez dessus la commande
rmp -qpl, qui permet d'afficher le contenu du paquet passé en paramètre, et vous finissez par un grep pour trouvez le nom du fichier.
Si vous voulez, vous pouvez aussi passez des paramètres à grep, pour, par exemple, afficher plus d'information.
$ for i in /mnt/cdrom/Mandrake/RPM:* ; do rpm -qpl $i | grep
Ceci n'est pas recommandé sur une machine peu puissante, car le serveur X consomme beaucoup de ressources, ainsi que l'interface
graphique que vous ne manquerez surement pas d'exécuter! Mais pour la démo, voici la marche à suivre.
La, vous avez un serveur X, numéroté 1 (celui par defaut porte le numéro 0), puis vous exécutez xterm et vous finissez par le gestionnaire
graphique icewm (c'est celui que je préfère).
Vous pouvez faire mieux de cette manière:
$ X :1 & ; xterm -display :1 & ; icewm -display :1 &
Là, c'est plus simple, mais plus lourd à l'exécution (je pars du principe que startx vous lance kde par defaut).
$ startx -- :1 &
Plus fort encore: si vous utilisez gdm (gnome display manager), editez le fichier /etc/X11/gdm/gdm.conf et dans la partie [servers], placez ceci:
Et vous voilà avec deux bannières de connexion sur votre machine: vous passez de l'un à l'autre avec la séquence de touches
ctrl+alt+F7 ou ctrl+alt+F8
0=Standard vt7
1=Standard vt8
Si vous n'arruvez pas à éjecter votre cdrom, c'est peut-être que celui-ci est encore utilisé par une application
ou un utilisateur. Voila comment le savoir (exemple: qui a acces en ce moment au répertoire /mnt/cdrom/themes/):
A partir de là, vous pouvez maintenant tuer l'application, ou l'utilisateur (pas physiquement, bien sur!), et éjecter le cdrom.
$ /bin/fuser -uv /mnt/cdrom/themes/
USER PID ACCESS COMMAND
/mnt/cdrom/themes/ admin 405 ..c.. gmc
$ kill 405
$eject /mnt/cdrom
Pour la taille de vos données dans un de vos répertoire, voici comment faire, avec redirection dans un fichier pour une lecture
ultérieure:
cela donne par exemple pour mon répertoire temporaire:
$ du -ha --max-depth=4 | sort -n > essai.txt
$ cd ~/tmp
$ du -ha --max-depth=2 | sort -n > essai.txt
$ less essai.txt
(je coupe ici, et ne montre que la fin du fichier)
..
364k ./tcputils-0.6.
388k ./povfront-1.3.5/povfron
408k ./ltmodem-6.00a1/DOC
408k ./povfront-1.3.5/povfront.
440k ./bandmin-0.8
636k ./ltmodem-6.00b1
932k ./flash_linux/libflashplayer.s
960k ./flash_linu
essai.txt lines 111-166/166 byte 4834/4834 (END) (press RETURN)
Ceci est tiré de SCSI-Programming-HOWTO (page 4) Je dispose d'un scanner SCSI 1 chez moi, que je ne mets pas toujours en marche. Et donc, lorsque je veux m'en servir, je n'ai pas envie de redémarrer complètement mon ordinateur. Je fais donc un 'montage à chaud' du scanner.
$ su
Password:
# echo "scsi add-single-device a b c d" > /proc/scsi/scsi
Ici, a, b, c et d sont définis de la façon suivante :Vous pouvez parfois, avoir un fichier dont l'extention du nom ne vous est pas connue, ou dont vous doutez que
l'extention soit la bonne, alors voila comment connaitre le type du contenue (exemple avec un fichier perso):
La, c'est du texte, on peut utiliser vi!
$ file dominique
dominique: ISO-8859 news text, with very long line
Ceci est valable pour la distribution Mandrake, pour les autres, je ne sais pas. Vous pouvez me faire part de
votre expérience, je la placerai ici.
Pour utiliser le pavé numérique dès la demande de login, vous pouvez utiliser cette méthode:
éditer le fichier Xsetup_0, et demandez à exécuter le programme enable_X11_numlock:
C'est tout.
$ su
Password:
# vi /etc/X11/xdm/Xsetup_0
et ajouter:
/usr/X11R6/bin/enable_X11_numlock
:x (pour sauver le tout)
En root bien sûr, éditer le fichier /etc/rc.d/rc.local, sous Mandrake/Redheat, ou /etc/init.d/?? sous débian, et ajoutez ceci en fin de fichier:
Apparemment, sous la dernière version de Mandrake, ceci n'est plus nécésaire, mais je vous donne les commandes, sait-on jamais...
for tty in /dev/tty[1-9]*;
do
setleds -D +num < $tty > /dev/null
done
Pour gagner "un peu" de place, vous pouvez supprimer les fichiers de log les plus vieux. Pour cela, vous devez
les rechercher, puis les effacer. Facile, il suffit de demander gentiment à find de les chercher, puis à rm de les effacer.
Evidemment, il faut être sur de vouloir éliminer ces fichiers (en cas de problèmes, vous ne pourrez plus étudier vos anciens log). Je vous
propose donc, d'abord, de voir quels sont les fichiers trouvés
Nous voyons qu'il y a plein de fichier compacté, rien de bien utile puisque je n'ai pas de problème en ce moment, donc:
$ su
Password:
# find /var/log/ -mtime +3 -exec ls -l {} \;
-rw-r--r-- 1 root news 32 mai 4 06:30 /var/log/news/news.crit.1.gz
-rw-r--r-- 1 root news 31 mai 4 06:30 /var/log/news/news.err.1.gz
-rw-r--r-- 1 root news 32 mai 3 06:30 /var/log/news/news.crit.2.gz
-rw-r--r-- 1 root news 32 avr 20 06:29 /var/log/news/news.crit.3.gz
-rw-r--r-- 1 root news 31 mai 3 06:30 /var/log/news/news.err.2.gz
....
Je vous laisse vous reporter aux pages de man pour plus d'info sur les paramètres de find ( surtout le switch -exec).
$ su
Password:
# find /var/log/ -mtime +3 -exec rm -f {} \;
Si vous voulez vérifier ce qui est ouvert ou pas sur votre réseau et/ou votre machine, voici quelques petits 'trucs':
le programme à utiliser s'appel netstat. En premier, vous pouvez connaitre la façon dont seront dirigé vos connexions:
Nous voyons la carte réseau (eth0) la passerelle: 164.1.152.122, le masque de réseau, et l'adresse réseau: 164.1.152.0.
$ netstat -r
Table de routage IP du noyau
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface
164.1.152.0 0.0.0.0 255.255.248.0 U 40 0 0 eth0
0.0.0.0 164.1.152.122 0.0.0.0 UG 40 0 0 eth0
Ensuite, vous pouvez voir les services ouverts, et le pid et/ou le nom du programme qui est derrière ce service, mais pour cela, nous devons
être sous root:
$ su
Password:
# netstat -ntaulp
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 0.0.0.0:1024 0.0.0.0:* LISTEN 330/xinetd
tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN 287/lpd
tcp 0 0 0.0.0.0:5865 0.0.0.0:* LISTEN 424/junkbuster
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 171/portmap
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 1706/X
tcp 0 0 0.0.0.0:6064 0.0.0.0:* LISTEN 385/Xprt
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 312/wwwoffled
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 312/wwwoffled
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 297/sshd
tcp 0 0 192.168.2.1:1034 192.168.1.2:22 ESTABLISHED 1761/ssh
tcp 0 0 192.168.2.1:1071 192.168.1.2:1479 TIME_WAIT -
udp 0 0 0.0.0.0:111 0.0.0.0:* 171/portmap
$ /sbin/ifconfig
eth0 Lien encap:Ethernet HWaddr 00:40:F4:44:22:67
inet adr:192.168.2.1 Bcast:192.168.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1511 errors:0 dropped:0 overruns:0 frame:10
TX packets:1564 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:1119710 (1.0 MiB) TX bytes:171754 (167.7 KiB)
Interruption:3 Adresse de base:0x300
lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:235 errors:0 dropped:0 overruns:0 frame:0
TX packets:235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:69697 (68.0 KiB) TX bytes:69697 (68.0 KiB)
Nous retrouvons nos adresses de masque et de réseau, ainsi que le numéro ip de la carte elle même. En plus, la boucle locale
est là
J'ai un vieux Syquest 40 Mo en scsi. Cela peut encore servir! Voici comment je m'en sert:
$ su
Password:
# fdisk /dev/sda
Avant, jetez un oeil sur man fdisk...!!!!!!!!!!!!!!!!!
$ su
Password:
# mkfs -t ext3 /dev/sda1
$ mount /mnt/syquest
Parfois, on peut avoir besoin d'une copie non d'un fichier, mais de la disquette complète (boot serteur avec) (cela m'a été utile pour
créer une disquette de démarrage sous dos). voila comment je m'y suis pris:
mettez la disquette à copier dans le lecteur (évident!), puis placez vous dans un répertoire:
Et au bout d'un certain temps, vous avez un fichier <nom-fichie.img>.
$ cd ~/tmp
$ dd if=
Vous avez une belle image toute fraiche d'une disquette (ou d'un CDRom), et vous voulez tester son intégrité:
Et vous navigez dans votre 'disquette' comme si cela correspond à un répertoire standard. La méthode est identique pour un fichier
*.iso
$ mount
Voici mon prompt de console sur le portable: Pour info, voici les couleur disponible:
|
![]() |
..
couleur=`tput setaf 6`
attr0=`tput sgr0`
PS1="${attr0}${couleur}\t \u \$PWD${attr0}\n\\$ "
export PS1
..
Et quand je suis sous root, seule la couleur change.
couleur=`tput setaf 1`
Pour plus d'info, vous pouvez vous reporter à 'man tput' ainsi qu'à 'man 5 terminfo'
Lorsque vous avez un fichier trèsssss gros à transférer d'une machine à une autre, voici une méthode que j'utilise. Je pars d'un
cas concrèt, puiqu'il m'a fallut envoyer une image iso de 130 Mo à un ami pour grauvure. Voilà comment nous nous y sommes pris:
$ split -b50m rescuecd.iso rescue
cela fourni 2 fichier de 50 Mo plus un de 30 Mo environ pour le reste, nommé respectivement rescueaa, rescueab, rescueac.
$ cat rescueaa rescueab rescueac > rescuecd.iso
Et voila!
Voila comment on peut rechercher, localiser, et tuer un programme, soit à partir d'un script, soit à partir d'une tache cron:
$ ps -e
$ ps -e | grep galeon | awk'{print $4}'
$ ps -e | grep galeon | awk '{print $4}' | xargs sudo killall
une commande simple, pour créer une archive compressée d'un répertoire.
Vous etes dans un répertoire tmp, vous disposez d'un sous-répertoire 'Bannierre', voila comment faire le fichier Bannierre.tar.gz
Voilà! simple et rapide. Vous pouvez ajouter l'option -v à tar de façon à voir la liste des fichiers inclus dans l'archive.
$ cd ~/tmp/
$ ls -la
total 20
...
drwxr-xr-x 2 admin admin 4096 2002-11-11 04:45 Bannierre
...
$ ls -l Bannierre
total 424
-rw-r--r-- 1 admin admin 7504 2003-01-19 04:31 Bannierre.xml
-rw-r--r-- 1 admin admin 6210 2002-11-10 05:28 Bannierre.xml.in
-rwxr-xr-x 1 admin admin 84 2002-11-10 05:28 configure.in
-rw-r--r-- 1 admin admin 282 2002-11-11 02:46 GdmGreeterTheme.desktop
-rw-r--r-- 1 admin admin 282 2002-11-10 05:28 GdmGreeterTheme.desktop.in
-rw-r--r-- 1 admin admin 4904 2002-11-10 05:28 langues.png
-rw-r--r-- 1 admin admin 369 2002-11-10 05:28 Makefile.am
-rw-r--r-- 1 admin admin 6966 2002-11-10 05:28 Makefile.in
-rw-r--r-- 1 admin admin 7898 2002-11-10 05:28 quit.png
-rw-r--r-- 1 admin admin 177310 2002-11-18 23:01 screenshot.png
-rw-r--r-- 1 admin admin 3370 2002-11-10 05:28 session.png
-rw-r--r-- 1 admin admin 3627 2002-11-10 05:28 system.png
-rw-r--r-- 1 admin admin 177310 2002-11-18 23:01 terre4c.png
$ tar cfz Bannierre.tar.gz ./Bannierre
$ ls -l
total 396
drwxr-xr-x 2 admin admin 4096 2003-01-19 04:31 Bannierre
-rw-r--r-- 1 admin admin 377621 2003-01-21 10:47 Bannierre.tar.gz
$ tar cfvz Bannierre.tar.gz ./Bannierre
Si vous importez des fichiers texte de Windows vers votre linuxette, vous aurez à chaque fin de ligne de texte
deux caractères: CR pour carriage return et LF pour ligne field. Hors, sous unix, seul CR suffit. Certaines applications
peuvent ne pas aimer CR-LF, et en plus cela prend de la place pour rien (sur un fichier de 1000 lignes, cela prend 1000
caractères en trop). Voilà donc comment faire pour transformer vos fichier.
Nous partons d'un fichier nommé index.html (ce fut un cas personnel!). Nous allons utiliser sed et une redirection:
Nous avons à présent, deux fichiers de façon à contrôler le résultat. Si cela nous convient, échangeons les deux fichiers:
$ sed 's/.$//' index.html > index.html.new
Pas plus dur que ça. Attention, cependant, car si vos lignes ne contiennent pas ces deux caractères (CR et LF), vous perdrez le dernier caractère de chacune
de vos ligne de texte (très pénible!!!! je me suis fait avoir!).
$ mv index.html.new index.html
La même chose, en perl, et lui est bien plus efficace:
perl -pi -e 's/\r\n/\n/g' index.html
Si vou rechercher un programme ou un daemon dans la forêt qu'est la commande ps, voila comment ellager un peu. La suite de commande
proposée ici vous donne le nom du programme, le pid (numéro de processus) ainsi que le propriétaire:
Changez apm par le nom du programme recherché (même une partie de nom, si vous voulez!)
$ ps -ef | grep apm | awk '{ print "Le pid de "$8" est "$2 " et appartient a " $1}'