Auteur/autrice : starmate

25 octobre 2015 /

Si les bases de données rmp sont corrompues, vous pouvez rencontrer ce genre d’erreur :

rpmdb: Lock table is out of available locker entries rpmdb: Unknown locker ID: 2106 error: db4 error(22) from dbenv->close: Invalid argument error: cannot open Packages index using db3 – Cannot allocate memory (12) error: cannot open Packages database in /var/lib/rpm

Et ça fait peur…

Pour réparer cela, on commence par supprimer les bases corrompues:

rm /var/lib/rpm/__db.00*

Il ne nous reste plus qu’à reconstruire les bases:

rpm --rebuilddb -vv

22 octobre 2015 /

Lsof (List Open file) est une commande Unix/Linux qui permet de lister les fichiers actuellement ouverts sur le système.

Utilisation de commande lsof :
lsof /chemin/d'un/fichier (pour voir qui ou quoi ouvre actuellement le fichier)
lsof +D /chemin/répertoire/ (pour voir qui ou quoi ouvre actuellement les fichiers d'un répertoire )
lsof -i (tous services internet TCP/UDP)
lsof -i tcp (tous services TCP)
lsof -i udp (tous services UDP)
lsof -i tcp:80 (services TCP sur port 80)
lsof -i @192.168.2.10 (liaison internet de mon poste avec 192.168.2.10)

Afficher les fichiers ouverts par un processus (uid):

lsof -p 75014

Afficher les connexions internet ouvertes par un processus :

lsof -i -p 75014

Pour connaître tous les ports réseau ouvert par le processus qui a le pid 75014 (-a est interprété comme AND)

lsof -i -a -p 75014

La forme suivante de la commande permet de connaître tous les fichiers ouverts par l’utilisateur starmate:

lsof -u starmate

La même chose mais cette fois cela concerne tous les utilisateurs sauf starmate:

lsof -u ^starmate

L’option « -t » permet de retourner dans la sortie standard uniquement l’uid du/des processus ouvrant le/les fichier(s), il est simple par la suite de l’exploiter avec une petite boucle:

for i in `lsof -t -u starmate`; do kill -9 $i; done

Pour identifier les processus en cours d’exécution qui ont gardés ouvert des fichiers qui ont été supprimés:

lsof +L1

Les processus qui n’ont pas libérés les fichiers supprimés sont identifiés avec l’argument (deleted) en fin de ligne.

19 octobre 2015 /

Avec la commande pkill qui facilite la vie, et évite de devoir copier/coller les pid des processus un par un.
Pour tuer tous les processus de l’utilisateur starmate:

pkill -u starmate

15 octobre 2015 /

Si vous avez besoin de stopper le défilement de votre terminal (figer la sortie standard) voici la solution :

Ctrl+s

Pour réactiver le défilement:

Ctrl+q

ça fonctionne aussi avec la commande top, ou tail et avec toute autre commande de ce type d’ailleurs.

13 octobre 2015 /

Méthode « SystemV »

Si jamais vous perdez le mot de passe root de MySQL, pas de panique, on peux le réinitialiser facilement en démarrant MySQL en mode « safe ». On pourra se connecter en root sans mot de passe, ce qui nous permettra de la changer facilement (vu que l’on est root) dans la table «user».

On commence par arrêter le démon mysql:

etc/init.d/mysql stop

Maintenant on va relancer le MySQL en mode « safe » (mysqld_safe) sans charger la table des droits (–skip-grant-tables), le tout en arrière plan:

mysqld_safe --skip-grant-tables &

On va pouvoir maintenant se connecter en tant que root et sélectionner la base de données « mysql » :

mysql -u root mysql

Ici, on va modifier la table user (pour lister les tables faire « show tables ; ») pour changer le mot de passe de root:

update user set password=PASSWORD("NOUVEAU_MDP") where User='root';

Puis on recharge les droits:

flush privileges;
quit

Il ne reste plus qu’a redémarrer MySQL en normal:

/etc/init.d/mysql start

Voila c’est terminé, votre nouveau mot de passe est fonctionnel.

 

Méthode Systemd

 

Systemd gère le lancement des services sous Linux d’une façon differente que SystemV.

systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
systemctl restart mariadb

Ce mode permet une connexion à root sans demande de mot de passe.
Il faut maintenant réinitialiser le mot de passe, pour cela nous passons par la commande:

mysql_secure_installation

 

Une fois que cela est fait, nous relancons le service avec le bon mode:
vous reste plus qu’à redémarrer le service MySQL / MariaDB :

systemctl unset-environment MYSQLD_OPTS
systemctl restart mariadb