Commandes General

Lister les services

Sur CentOS/RedHat Tous :

systemctl list-units --type service --all

En cours :

systemctl list-units --type service --all | grep running

Sur Debian :

service --status-all

Quelques commandes

Commandes simples :

\ : utilisation des apostrophes

Lire les fichiers : cat, more, less

nmtui : modifier connexion via interface graphique
ctrl + alt + f1 ou f2 : changer de terminal
# : utilisation compte root
$ : utilisation autre utilisateur
~ : répertoire de connexion
ctrl + s : Pause du terminal
ctrl + q : Reprendre le terminal
ctrl + w : Effacer le mot
ctrl + i : efface l'affichage
ctrl + u : efface ligne entière
man -k : recherche pages du manuel associés à un mot

who : liste utilisateurs connectés
whoami : affiche utilisateur actuel connecté
finger : affiche informations plus précises sur l'utilisateur connecté
pwd : affiche répertoire courant
Cd ~ => renvoie dans le répertoire /home personnel.


/bin/bash : Shell par défaut | Boîte de l'invite de commande.
passwd : modifier mot de passe | commandes liés au mot de passe
passwd -l : verrouiller compte
passwd -u : déverrouiller compte
passwd -d : désactiver saisie du mot de passe pour un compte

wc : compter le nombre de lignes, mots, caractères contenus dans un fichier.
wc -l -w -c (line, word, caracter)

env : affiche varaibles d'environnement
echo : afficher valeur d'environnement
date : affiche date
exit or logout : déconnecter utilisateur
which [commande] : affiche le chemin complet d'une commande

Changement de valeur d'une variable d'environnement
export PS1=’[\u@\h \W \t]$’
Export valide la nouvelle variable.
$TMOUT : Variable qui déconnectee automatiquement au bout d'un temps défini.
La commande export ne marche que pour la session en cours. (temporaire)

==Recherche==
* : substitue le caractères générique ? par n'impoorte quel caractère.
[] : remplace le caractère par un des caractères donnés. Exemple
[abc] remplace le caractère par a ou b ou c
[f-z] : caractère entre f et z. Respect de la casse.
exemple : ls [fr]?tab
! : cherche les caractères ne se trouvant pas entre les
{} : Cherche tous les noms de fichiers commençant par une chaîne de caractères au lieu
d'un seul caractère.
Avec des doubles apostrophes, les caractères spéciaux sont interprétés mais pas le * .

alias : remplace une ligne de commandes complexe par son alias.
pour l'avoir de manière permanente pour tous les utilisateurs, l'ajouter dans .bashrc
qui se trouve dans le dossier de connexion de l'utilisateur.

unalias -a nom_alias : supprimer alias
type : affiche les informations à propos d'une commande et son interprétation.
cat : sert à lire un fichier
whereis : localiser rapidement une commande externe ainsi que les fichiers
aide et sources associées.

source .bash_profile : recharger le fichier profile sans se déconnecter.
set -o : affiche l'état (actif ou inactif) des options
set -o [nom_option] : activer
set +o [nom_option] : désactiver

Tous les fichiers qui commencent par p ou se terminent par d :
ls -d {p*,*.d}

==Avancé==
processus associé à des descripteurs de fichiers.
point d'entrée = paramètre rentré sur le clavier
sortie = résultat affiché à l'écran
Entrée (0) => Processus => Sortie (1)
||
Erreur (2)

< : rediriger l'entrée
> : rediriger la sortie vers un fichier
>> : permet d'ajouter dans un fichier existant
2> : redirection de l'erreur standard
n>&m : avoir une sortie + erreur dans un seul fichierr
où n est numéro du descripteur à rediriger et m : numéro de celui vers
lequel il faut renvoyer les données . exemple : Ou > ficsortie 1>&2

/dev/null : puit sans fond. Tout ce qui est envoyé est supprimé du système
exemple : ps -ef > /tmp/test
ls bin dev bleu > ficout 2>> ficerr2

/dev : fichiers qui sont des pointeurs vers des périphériques
touch : permet de changer l'heure du fichier et créé un fichier vide.

tubes (pipe) : |
tee : lis l'entrée,  génèree le fichier et effectue une copie sur la sortie intermédiaire
grep : filtre et garde que ce qui contient après ce paramètre

su : switch user | changer d'utilisateur
su - [nom_user] : tirer permet de garder l'environnement de l'utilisateur actuel
Lancer une commande en tant qu'utilisateur test :
su - test -c "ps -ef"
chaque commande lancé via su crée une exécution en shell.

sudo : exécution de commandes en tant que sans élévation de compte /etc/sudoers


[Commandes Avancées]
Dmesg : verbosité du noyau. Les informations sur des périphériques attachés ou détachés apparaissent dedans.
Fdisk –l : commandes de table de partition
mount : monter le périphérique à un répertoire. | affiche la liste des montages
df : fourni la quantité d'espace occupé des systèmes de fichiers.
mkfs -t ext4 /dev/sdx : formater au format ext4

editeurs de texte : vi, nano, emacs
cd - => renvoie dans le répertoire précédent
file : permet de déterminer le type d'un fichier
stat : indique les informations du bloc où est stocké le fichier
mkdir -p : crée arborescence du répertoire

cp -R : Copier contenu d'un répertoire avec les droits associés.
mv : renommer ou déplacer fichiers
rename : renommer fichier

find : rechercher des fichiers
exemple : find / -name
find -size +1M : fichiers de plus d'un megaoctet
find -mtime : heure de modification

Grep permet de filtrer des lignes.
Grep –i => prend en compte les minuscules et majuscules
Grep –l => affiche uniquement les noms des fichiers possédant des lignes qui correspondent à la valeur donnée.

Cut => supprimer une partie de chaque ligne d’un fichier
Sort => trier les lignes d’un fichier.
Head => consulter le début d’un fichier
Tail => consulter la fin d’un fichier.

La commande watch permet d’exécuter un programme périodiquement en affichant le résultat à l’écran

ln : lien dur (hard link) -> seconde entrée pointant vers le même inode
ln -s : lien symbolique -> raccourci

MAIL

Pour voir la file d'attente :

mailq

Pour le journal des logs :

journalctl -u postfix

Pour forcer le renvoi des mails bloqués dans la file d'attente :

postfix flush

Pour tester l'envoi :

Mail email@addresse.com

et suivre les étape

Pour reload le service

postfix reload

Lancer une commande active même après la déconnexion

Précéder la commande par la commande nohup
S'il est nécessaire de récupérer la console, terminer la ligne avec une esperluette & exemple :

nohup  wget ftp://...../Fedora-8-i386-rescuecd.iso &

La sortie de la commande est loggué dans un fichier nohup.out
il est possible de consulter soit en direct en lançant immédiatement 

tail -f nohup.out

Soit après coup :

less nohup.out

NTP

Pour voir l'heure et le status du service

/etc/init.d/hwclock.sh show

Pour checker l'heure du matériel :

date; hwclock

Pour synchro :

hwclock --systohc

Pour debugguer :

hwclock --systohc --debug

Drop RAM SWAP CPU & MEM

lister les process qui occupe le swap :  

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

DROP mémoire cache + voir résultat 

free -h && sudo sysctl vm.drop_caches=3 && free –h

Relancer le swap

sudo swapoff –a && sudo swapon -a

Problème lié au swap

Déplacer le cache de Swap vers la mémoire si elle est pas trop sollicitée en exécutant la commande : 

swapoff -a

changer le swappiness à 10 au lieu de 40 (valeur recommandée sur postgre) ce qui a permis de soulager le swap
il ne sera sollicité que la mémoire passe en full (ce qui n'était pas le cas avant ce changement, le swap se remplit fréquemment même si la RAM est vide )


Pour modifier la valeur sans redémarrer le système d'exploitation, exécutez la commande suivante :

sysctl -w vm.swappiness=10

Pour modifier la valeur temporairement (après le redémarrage la valeur sera sautée)

htop

Pour reloader la config :

sysctl --system

une fois le swap vidé passer la commande suivante pour réactiver le swap :

swapon -a

La config swappiness se trouve : 
/etc/sysctl.conf

droper cache mem et swap autrement : 

sync; echo 3 > /proc/sys/vm/drop_caches

image.png

trier le CPU ou la mémoire sur la machine : 
top ou htop

commande avancée pour trier la mémoire: 

ps -eo size,pid,user,command --sort -size |    awk '{ hr=$1/1024 u; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' |    cut -d "" -f2 | cut -d "-" -f1

image.png

autres commande pour CPU et mem triez par top:

ps -eo pid,user,comm,%mem --sort=-%mem | head -n 6
ps -eo pid,user,comm,%mem --sort=-%cpu | head -n 6

Vous pouvez faire des teste de stress sur une machine pour voir comment elle réagit via :

Yum install stress

Commande stress mémoire : 

stress --vm 1 --vm-bytes 1G --timeout 30s

Astuces Cron

Vérifier la crontab système :

cat /etc/crontab

Lister les crontab de tous les utilisateurs  

for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

Lister les crontab d'un user spécifique

crontab -l -u "user"

CRONTAB
mm hh jj MMM JJJ tâche
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0, Monday=1, and so on)
# |  |  |  |  |
# *  *  *  *  * user-name  command-to-be-executed

crontab -l
ls -al /etc/cron.*
cat /etc/cron.d/* | grep "votre recherche"

Valider la planification avec crontab guru :  
https://crontab.guru

Aide à la création de la cron:
https://crontab-generator.org/

Extraction link web page

image.png

image.png

Rechercher des fichier : find/locate/size

• Rechercher tous les fichiers avec l'extension .txt dans le répertoire courant :
find . -name "*.txt"
• Rechercher tous les fichiers avec l'extension .txt dans tous les sous-répertoires du répertoire courant :
find . -name "*.txt" -type f -exec ls -lh {} \;
• Rechercher tous les fichiers dont la taille est supérieure à 100 Mo :
find . -size +100M
• Rechercher tous les fichiers modifiés au cours des 7 derniers jours :
find . -mtime -7

Pour utiliser la commande locate, vous devez d'abord vous assurer que la base de données locate est à jour. Pour ce faire, exécutez la commande suivante :
sudo updatedb
Une fois la base de données locate à jour, vous pouvez commencer à rechercher des fichiers. La syntaxe de base de la commande locate est la suivante :
locate [options] nom_de_fichier
Par exemple, pour rechercher tous les fichiers avec l'extension .txt, vous pouvez exécuter la commande suivante :
locate *.txt

Recherche dans l'historique des commande taper sur le shell:

CRTL + R : 

basic commande

Copie :  cp /dossier /destination 

Deplacer : mv /dossier /destination 

ls : Lister les fichiers 
ls -a : lister les fichiers cacher 

ll = ls sous alias  

Mount -t (type) ntfs -o(options) ro(read only) /dev/hda /mnt/nas  

ps -eF : afficher l'ensemble des processus 

ps : afficher les processus lié au terminal direct 

ps –j : voir les job en cours  

man : manuel des commandes 

rm : supression de fichier dossier 

cd : changer de repertoire 

mv : déplacer ou renommer 

history : voir les anciennes commandes 
tac : c'est l'inverse de cat 
cat :  Afficher le contenue la sortie d'un fichier standard  
xargs : prend l'entrée standard et la convertit en argument de commande pour une autre commande  
tr : translate, traduire 
nl : numéroter les lignes d'un fichier  
ps aux | grep : permettant de faire une meilleur recherche sur les processus en cours 
sed : modifier le contenu d'un fichier, d'un flux autres … 

chmod (letter + binaire) : r (read) '4', w (write) '2', x (execute) '1'  [@[  user = u,  groupe = g, other = o 

ACLs : permet de définir des permission pour un ou plusieurs utilisateur / groupe sur un fichier / répertoire 
Umask : permet de définir des droits par défaut pour l'ensemble des fichier et répertoire créer 

SUID : Set user ID, droit qui s'applique a des fichier et non à des répertoires  
SGID : 
stickyBit : 

chown : modifier le propriétaire  + groupe : nom du fichierml 

chgrp : modifier le groupe   

pwd : afficher le répertoire ou l'on est  

mkdir : créer des répertoire  

touch : création de nouveau fichier vide  
./ : exécution d'un fichier, script  
htop : visualiser les processus interactif  

unzip : extraction d'un fichier .zip  

Echo : afficher un message  

passwd : permet de changer les mots de passe  
which : vérification du chemin complet des commandes du shell  

Shred : permet d'effacer définitivement le contenu d'un fichier  
cfdisk : interface curses pour les disque  

df : permet d'afficher la quantité d'espace disque disponible sur chaque disque monté  
losetup : permet de gérer les périphérique de type loop  

fdisk -l : affichage des partitions + gestion création  
whereis : permet de localiser les fichier binaire; librairies, header, configuration 

parted : gestionnaire de partitions disque  : (commande) : -? | print | mkpart | rm | move | resize 

mkfs : formater une partition avec un système de fichier donné  

fsck : outils de contrôle d'intégrité et de réparation pour les système de fichiers linux et les disque en RO ou non montée 

mount :   monté un fichier système …  

unmount : démonter un fichier système ... 

fstab : table différentes des système de fichiers; contient une liste des disques et des partitions au démarrage  - configuration de fichier. 

Quotas : permet de limiter d'espace disque alloué à un utilisateur ou un groupe d'utilisateur  

find : rechercher des fichiers + mettre des critère pour une meilleur recherche  

locate : permet de localiser immédiatement n'importe quel fichier ou répertoire présent sur le système à partir d'une base de donnée 

service –status-all : permet d'afficher le statut de tous les services 

chkconfig --add service : ajouter un service  

chkconfig --level [0123456] service {on,off,reset} : modifier le comporte d'un service 

chkconfig --list service : lister les association de services / runlevel 

runlevel : Afficher le runlevel actuel [ contrôle le choix des processus / arrêt / run / restart / sous forme de numéro 

Init {0123456Qq} : changer de runlevel 

telinit {0123456Qq} : changer de runlevel 

Shutdown {-rhc} time {"warning message"] : éteindre 

pstree : hiérarchie de tous les processus sur tons système [Parent, enfant ect] 

jobs : afficher les processus de votre session 

fg : réactiver un processus stoppé et le mettre en avant-plan 

bg ; réactiver un processus stoppé et le mettre en arrière-plan 

renice priority : permet de modifier la priorité d'un processus 

SIGKILL : indique a un processus de se terminer brutalement 

SIGHUP : 
SIGTERM : il indiqué a un processus de s'arrêter mais peut être intercepter et ignorer  

Kill + PID : envoie un sigterm pour tuer un processus  

Kill -9 + PID : envoie un sigkill pour tuer brutalement le processus 

nohup : lance un programme persistant même après déconnexion du terminal il continue de fonctionner  

Newgrp : change de groupe principal l'utilisateur 

Groupadd : ajouter un groupe  

useradd: ajouter un utilisateur 

usermod : modifier un utilisateur  

Groupemod : modification d'un groupe  

Groupdel nom : suppression d'un groupe  

Userdel : suppression de l'utilisateur  

Passwd : modifier le mot de passe 

Chage : modifie le nombre de jours entre les changements de mots de passe et la date du dernier changement  

Lpr : soumettre une tache d'impression 

Lpstat : information sur le cups  

Lpq : information sur une file d'impression  

Lprm : annuler une tache d'impression  

Newgrp 'groupe' : pour changer d'identifiant de groupe en cours de session 

Groups : voir tous les groupe de l'utilisateur actuel  

/etc/passwd : tous les users sur le serveur  

date : date actuel 

Crontab –e : créer un fichier crontab = Tableau =  Minute | heure | jour du mois | mois | jour de la semaine  

Atq : lister les taches planifié  

Atrm : supression d'une tache  

At + heure + date : ajoute une tache planifié  

Ifconfig : affichier les informations des interfaces réseau IP