jul is a nolife

To content | To menu | To search

Keyword - Linux

Entries feed - Comments feed

Monday, July 24 2006

Passer une commande en tâche de fond

Quel désespoir de voir la commande qu’on a lancé à midi ne pas être terminée au moment de quitter le travail… Heureusement unix est la pour nous éviter de faire des heures sup’!

Disons que la commande est lancée depuis un terminal X par un shell ouvert en ssh :

julbouln@lesitedistant:~$ commande

On commence par susprendre la tâche avec un CTRL+Z :

[1]+  Stopped      commande
julbouln@lesitedistant:~$

On passe celui-ci en tâche de fond :

julbouln@lesitedistant:~$ bg

Le problème à présent est que la commande est toujours associée au terminal, donc si on quitte le shell, la commande se termine. Heureusement il existe une commande pour la détacher du terminal :

julbouln@lesitedistant:~$ disown

Et voila! On peut à présent quitter en laissant la commande se terminer tranquillement.

Wednesday, June 14 2006

Ajouter un script au démarrage de la Debian

Il peut être pratique de rajouter un script personnalisé au démarrage. Pour ce faire, la Debian propose un outil de haut niveau pour faciliter la tâche : update-rc.d.

Tout d’abord, il vous faut créer un script que vous placerez dans /etc/init.d.
MAJ: Il existe un fichier /etc/init.d/skeleton qui peut servir de modèle (merci tito).
Appelons le /etc/init.d/monscript par exemple :

#!/bin/sh
case "$1" in
start|"")
# au démarrage
;;
stop)
# à l'arret
;;
*)
echo "Usage: monscript [start|stop]" >&2
exit 3
;;
esac

Notez le case ”$1” qui recupère le premier argument de la commande. Si l’argument est start ou qu’il n’y en a pas, alors on exécute ce qu’il y a au niveau de # au démarrage. Si l’argument est stop, ce qu’il y a au niveau de # à l’arret

Rajoutez lui le mode exécutable :

# chmod +x /etc/init.d/monscript
Vous pouvez à présent tester votre script directement depuis la console :

# /etc/init.d/monscript stop
# /etc/init.d/monscript start
Ensuite, afin qu’il se lance automatiquement au démarrage, il faut le rajouter aux runlevels. Pour cela, utilisez simplement la commande update-rc.d :

# update-rc.d monscript defaults 99

update-rc.d possède un certain nombre d’options, nous utilisons les plus simples dans cet exemple :

  • monscript correspond au fichier bash /etc/init.d/monscript que nous venons de créer
  • defaults permet de couvrir tous les runlevels
  • 99 est le niveau de priorité. 99 étant le plus faible et 1 le plus élevé. Le niveau de priorité correspondant à l’ordre lors du démarrage, les plus faibles étant exécutés en dernier.

Vous n’avez plus qu’à redémarrer pour essayer le tout!

Sunday, April 30 2006

Installer Windows après une Debian

Il arrive parfois que l’on veuille installer un Windows sur une machine où Linux est déjà installé. Le problème est que Windows efface le chargeur multi-os pour se mettre à la place.

Heureusement il existe une technique rapide et simple pour réinstaller le chargeur.

Prenons un exemple, vous avez un disque partionné comme suit:

/dev/hda1 : ext3 monté en / contenant Linux
/dev/hda2 : swap
/dev/hda3 : ext3 monté en /home
/dev/hda4 : ntfs ou vfat contenant Windows

Après avoir installé Windows, le système sur /dev/hda4 est chargé automatiquement au démarrage. Pour y remédier, il suffit d’utiliser le cd d’installation de Debian (un cd netinstall suffit).

Mettez le dans le lecteur et faites comme si vous alliez installer la Debian. Vous pouvez sélectionner les options de configuration pour votre clavier. Ensuite, basculez dans la deuxième console (ALT-F2) et tappez entrée pour avoir un prompt.

A présent, il vous faut charger votre partition Linux:

mount -t ext3 /dev/hda1 /tmp

Dans l’installeur Sarge, il semble que les fichiers de disque n’ont pas le même shéma, si vous ne trouvez pas de /dev/hda1, utilisez /dev/ide/host0/bus0/target0/lun0/part1 à la place.

Pour utiliser les commandes de votre propre système :

chroot /tmp

Réinstallez le chargeur multi-os :

grub-install /dev/hda

Et voila, vous devriez avoir un message indiquant que tout c’est bien passé ! Quittez votre système :

exit

Démontez le disque :

umount /tmp

Et redémarrez :

reboot

Au redémarrage, vous allez avoir le même écran de démarrage qu’avant avoir installé Windows. Démarrez votre Linux, vous pouvez rajouter l’entrée Windows à la main dans /boot/grub/menu.lst :

title       Windows NT/2000/XP
root (hd0,3)
makeactive
chainloader +1

ou lancer un dpkg-reconfigure grub, ce qui devrait détecter et intégrer directement le nouveau système.