Catégorie : shell

Linux : rechercher les programmes qui accèdent à un fichier

Comment rechercher les programmes qui accèdent à un fichier ?

Je vous donne un exemple concret : j’ai monté un répertoire qui est un lien vers un répertoire d’un autre PC.

La commande « mount ». Une fois que je n’en ai plus besoin, je fais « umount » pour le retirer. Et là, problème : ça ne fonctionne pas : il me dit qu’il ne peut pas le retirer, quelque chose y accède toujours !

Pas de problème : tapez :

lsof | grep [nom du répertoire monté]

et vous verrez quelles sont les applications qui y accèdent.

« lsof » vous sauve la vie.

Ca ne vous est jamais arrivé de pester contre Windows lorsque que vous faites « Retirer le périphérique » et que vous avez le message « Impossible de retirer le péripérique » ? Moi si. Avec lsof sur Linux, vous n’aurez jamais ce genre de désagrément !

Linux vsftp : mémo ajout d'un utilisateur

Voilà, je perds toujours un temps fou à rechercher comment ajouter un utilisateur pour qu’il se connecte sur le serveur ftp.

Si vous n’y arrivez pas, lisez le fichier de configuration :
/etc/vsftpd.conf
Dedans il y aura beaucoup d’informations utiles.

Voilà le résumé pour ajouter un utilisateur sur le serveur vsftp :

  1. Créer l’utilisateur. Par exemple :
    noeunoeu
  2. Changer son mot de passe :
    passwd noeunoeu
  3. L’ajouter à la fin des fichiers suivants :
    • /etc/vsftpd/chroot_list
    • /etc/vsftpd/user_list

Et voilà tout devrait fonctionner !

Linux : Cron et cronjob

Pour éditer la table cron de l’utilisateur en cours avec vi.

crontab -e

Ensuite pour un déclenchement chaque jour à minuit d’une tâche :

# Declenchement du script creation_zip chaque jour a minuit
0 0 * * * /xx/xx/nomduscript [params] > /dev/null 2>&1

Vous vous demandez peut-être ce que signifie la fin des paramètres que vous voyez juste au dessus :

/dev/null 2>&1

Cela signifie rediriger la sortie d’erreur (2) vers la sortie normale (1) : 2>&1 et rediriger la totale résultant vers la poubelle (« /dev/null« ).

Linux : configurer screen

Le fichier de configuration qui est chargé pour tout le monde est /etc/screenrc
Le fichier de configuration personnalisé est $HOME/.screenrc
Voilà un exemple qui m’a pris du temps avant de réussir à le mettre en place :
# -------------------------------------------
# Bindings de compilation

# -------------------------------------------
# Olivier Pons / 15 avril 2008
bind -c compil x exec /bin/sh -c "cd /sources/zeemoz/search/ && modsearch_install.sh"
bindkey "^x" command -c compil

Traduction des commandes précédentes :

  1. Tu lies la touche x de la classe compil à l’ordre complet :
    exec /bin/sh -c "cd /sources/zeemoz/search/ && modsearch_install.sh"
  2. Si on fait « ctrl x », cela veut dire qu’il faut se mettre en attente d’une touche pour exécuter ce qui concerne la classe compil

Dit autrement :

  1. Définir tous les ordres qu’on veut que screen exécute via un raccourci clavier ;
  2. Les associer à une touche simple ;
  3. Les associer à une classe ;
  4. Définir la classe selon un ctrl quelque chose.

Linux : exemples de "grep"

  1. Affiche tous les fichiers files qui contiennent une ligne dans laquelle il y a le mot poppy : 
    grep poppy files
  2. Affiche tous les fichiers files qui contiennent une ligne qui commence par poppy : 
    grep '^poppy' files
  3. Affiche tous les fichiers files qui contiennent une ligne qui se termine par poppy : 
    grep 'poppy$' files
  4. Affiche tous les fichiers files qui contiennent au moins une ligne dans laquelle il y a uniquement le mot  poppy : 
    grep '^poppy$' files
  5. Affiche tous les fichiers files qui contiennent au moins une ligne qui contient par  ^s, nb : le \ sert à ignorer le caractère spécial ^ : 
    grep '\^s' files
  6. Affiche tous les fichiers files qui contiennent, soit  poppy, soit Poppy : 
    grep '[Pp]oppy' files
  7. Affiche tous les fichiers files qui contiennent popy, pOpy, poPy ou pOPy : 
    grep 'p[oO][pP]y' files
  8. Affiche tous les fichiers files qui contiennent au moins une ligne vide : 
    grep '^$' files
  9. Affiche tous les fichiers files qui contiennent deux nombres d’affilée : 
    grep '[0-9][0-9]' files
  10. Recherche de tous les fichiers php, htm ou html :
    locate . | grep '[ph][ht][pm][l]*$' | more
  11. Recherche de tous les fichiers php, htm ou html contenant le mot internet :
    locate . | grep '[ph][ht][pm][l]*$' | xargs grep internet | more
  12. Recherche de tous les fichiers php, htm ou html contenant le mot internet sans être sensible à la casse :
    locate . | grep '[ph][ht][pm][l]*$' | xargs grep -i internet | more

Linux : utilisation de SCP (mémo simple)

SCP (= Secure Copy Protocol) donne la possibilité de transférer des fichiers entre des machines UNIX via le protocole sécurisé SSH. C’est rapide et c’est fait en toute sécurité.

  • Transférer le fichier file.txt vers le répertoire en cours de la machine 192.168.0.12 :
    scp file.txt noob@192.168.0.12:.
    (NB : le « . » est important à la fin, cela indique que le répertoire de destination est le répertoire en cours)
  • Récupérer file.txt situé sur /home/noob sur la machine 192.168.0.12 et le mettre dans le répertoire en cours (important : n’oubliez pas le « . » à la fin qui indique le répertoire en cours) :
    scp noob@192.168.0.12:/home/noob/file.txt .
  • Récupérer tous les fichiers pdf situés dans le répertoire /usr/local de la machine 192.168.0.12 et les mettre dans /var/www :
    scp noob@192.168.0.12:/usr/local/*pdf /var/www
  • Transférer tout le repertoire /var/www (en récursif) vers la machine 192.168.0.12 dans le repertoire /incoming :
    scp -r /var/www noob@192.168.0.12:/incoming

Linux : le gestionnaire par défaut : kdm ou gdm ?

Comment choisir son gestionnaire par défaut : kdm ou gdm ?
Il faut être sûr(e) que les deux paquets sont installés :

  1. gdm
  2. kdm

Ensuite il suffit de faire :

  1. Pour forcer à démarrer en gdm (=Gnome Desktop Manager)
    sudo dpkg-reconfigure gdm
  2. Pour forcer à démarrer en kdm (=Kde Desktop Manager)
    sudo dpkg-reconfigure kdm

Linux : ajouter quelqu'un dans les règles du firewall

Aller dans /etc/fw/iptables.sh et ajouter une règle iptables.
Par exemple :
Pour autoriser une nouvelle IP à se connecter en
SSH (donc sur le port 22/tcp) :
iptables -A INPUT -p tcp -i eth0 -s <ma_nouvelle_ip> --dport 22 -j ACCEPT
Puis relancer le firewall :
/etc/fw/iptables.sh
(le script flushe les règles et repart de zéro).
Attention : la moindre erreur dans ce script et le firewall se met en défaut, c’est à dire qu’il bloque tout.