Pour voir les namespaces :
lsns
Pour entrer dans le namespace du processus cible :
nsenter -m -t $PID
Edit : pour basculer sur le namespace su système (et donc tout afficher) :
nsenter -m -t 1
Pour savoir si SELinux est activé :
sudo sestatus
Pour connaître le niveau de protection de SELinux :
getenforce
Ah le Bash ! Ce vrai et beau langage qui continue son exécution même après qu'une erreur s'est produite.
Dans leur grande sagesse, les développeurs ont eu la bonne idée d'y associer un mode de débuggage, qui permet d'afficher la valeur des variables.
Quand on en a marre de débugger un script à coup de echo
toutes les deux lignes, cela s'avère pratique.
Pour l'activer :
1) On peut lancer tout le script en mode débug :
bash -x monScript.sh
2) On peut également intégrer l'option directement au niveau du shebang :
#!/usr/bin/env bash -x
3) On peut enfin ne placer qu'une partie du script en mode débug. Il suffit d'activer le mode avant le code suspect, et de le désactiver ensuite :
#!/usr/bin/env
# Le code qui ne pose pas de problème
...
# Activation du mode debug
set -x
# Le code foireux
...
# Désactivation du mode debug
set +x
# Code exécuté après
Il y a quelques autres options, mais en gros c'est l'idée.
Pour savoir quand un OS Linux a été installé :
sudo tune2fs -l /dev/sda1 | grep 'Filesystem created:'
Edit :
Pour compresser :
tar cJf fichier.tar.xz
Pour voir les infos d'un fichier xz :
xz -l fichier.xz
Pour mémoire :
tar xJf fichier.tar.xz
Pour mémoire. Il faut aller voir dans le fichier suivant :
/var/log/apt/history.log
La commande ss
remplace netstat
.
Elle dispose globalement des mêmes options et permet de lancer un fameux :
ss -lapute
Pour plus tard : utiliser un LDAP avec Davical.
Si votre machine tourne sur un OS basé sur Debian, pensez à le mettre à jour !
Note : pour connaître la version d'apt présente sur votre système, utilisez la commande suivante :
# La version d'apt apparaît sur la première ligne de la sortie console
apt-config
La commande shell utile pour additionner une colonne de nombres, grâce à l'outil awk.
Soit le fichier suivant :
cat monfichier
3
183
10
69
Pour additionner ces nombres, j'utilise la commande awk suivante :
cat monfichier | awk '{total = total + $1}END{print total}'
Le résultat affiché est bien entendu 265.
Plutôt que de suivre aveuglément les instructions du site d'AMD afin d'activer ma carte graphique, j'ai fait quelques recherches. Par exemple dans les logs de démarrage :
sudo dmesg | grep -E 'drm|radeon'
Ce qui donne (dans mon cas) :
[ 2.338497] [drm] Initialized
[ 2.390982] [drm] radeon kernel modesetting enabled.
[ 2.416124] [drm:radeon_pci_probe [radeon]] *ERROR* radeon kernel modesetting for R600 or later requires firmware-amd-graphics.
[ 2.429920] [drm] Memory usable by graphics device = 2048M
[ 2.429922] [drm] Replacing VGA console driver
[ 2.442531] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 2.442532] [drm] Driver supports precise vblank timestamp query.
[ 2.478822] [drm] Initialized i915 1.6.0 20160919 for 0000:00:02.0 on minor 0
[ 2.499581] fbcon: inteldrmfb (fb0) is primary device
[ 3.699235] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
L'erreur mentionnée est assez claire : il faut installer le paquet firmware-amd-graphics. Pour cela, il faut ajouter les dépôts non-free au système :
nano -c /etc/apt/source.list.d/paquets_non_free.list
Dans ce fichier, j'ajoute les deux lignes suivantes (à adapter si besoin) :
deb http://ftp.us.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.us.debian.org/debian/ testing main non-free contrib
Puis je mets à jour la liste des paquets, et j'installe le paquet :
sudo apt update
sudo apt install firmware-amd-graphics
Je redémarre et c'est bon !
Edit :
Pour savoir quelle carte graphique j'ai :
# Mise à jour des ids des cartes graphiques (requiert une connexion à internet)
sudo update-pciids
# Identification
lspci -nn | grep -E 'VGA|Display'
La sortie ressemble à ceci chez moi :
00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Mars XTX [Radeon HD 8790M] [1002:6606]
En effet, la première est intégrée au processeur, la deuxième est une carte graphique séparée.
Edit 2 : /!\ ATTENTiON /!\
Il s'agit en fait d'UNE TRES MAUVAISE IDEE ! Il semble qu'il y ait un problème avec le kernel, qui fait que subitement, au démarrage, il est impossible de se loguer. L'affichage revient sans cesse sur l'écran de login. La seule manière que j'ai trouvé pour résoudre le problème a été de réinstaller (encore) le système entier. Il semble qu'il n'y ait donc aucun moyen (à ma connaissance), d'empécher l'erreur évoquée plus haut d'apparaître.
Il faut au préalable que python et apache soient installés.
Puis il faut se rendre dans le répertoire à partager et taper (avec le terminal) :
# 12345 est le numéro de port sur lequel apache servira la page
python -m SimpleHTTPServer 12345
Puis, d'un autre ordinateur, il suffit de se connecter sur l'URL IP_SRV:12345.
L'astuce du jour : trouver les X fichiers les plus volumineux dans un PATH donné ?
find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50
Cette commande affiche sur la sortie standard tous les fichiers :
La partition / de mon PC commençait sérieusement à manquer d'espace aujourd'hui (moins de 1.5 Go disponibles). J'ai donc cherché partout la raison de ce remplissage. D'autant que j'ai partitionné mes disques de telle façon que le / n'ai aucune raison de se remplir sans une action directe de ma part (mises à jours, ajout volontaire de fichiers, etc).
Et puis en utilisant un peu de magie (et un peu de find), j'ai trouvé l'immonde coupable : .xsession-errors !
Ce petit impertinent est un fichier de log qui recense les erreurs graphiques de tout un tas d'applications, et en particulier des gestionnaire de fenêtres (Nemo dans mon cas). Situé à la racine de mon home, il a réussi à gonfler jusqu'à prendre 4 Go !
Comme il s'agit d'un fichier de log, je me demande bien ce qu'il peut faire ici au lieu d'être, par exemple, dans ... /var/log
! Ça use mon SSD pour rien en plus !
Bref.
Pour désactiver l'écriture des logs dans ce fichier :
/etc/X11/Xsession
;ERRFILE=$HOME/.xsession-errors
;ERRFILE=/dev/null
Au lieu d'écrire dans le fichier, les logs iront maintenant se perdre dans le vide sidéral.
Pour tester si une page existe sans la télécharger :
#!/bin/bash
# Renvoie "true" si la page passée en argument existe.
# @param $1 : l'URL de la page dont on veut tester l'existence.
# @return true si la page existe, false sinon.
is_URL_real()
{
local page_exists
page_exists="false"
if [[ `wget --server-response --spider "$1" 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
page_exists="true"
fi
echo "$page_exists"
}
is_URL_real "$1"
Ce qui donne à l'exécution :
./test_URL.sh "https://www.qwant.com"
true