⚡ Inka DevOps - Tableau de Bord Commandes

🌐 Apache
DescriptionCommande
Vérifier la syntaxe
apache2ctl -t
Lister les vhosts actifs
apache2ctl -S
Voir module compilé
apache2ctl -l
Reload de la configuration
apache2ctl -k graceful
Lister les IP effectuant le plus de HIT par heure
ℹ️ Adapter la date et l'heure en fonction de l'incident bien entendu
grep '19/Feb/2018:10:' access.log | awk '{print $1}' | sort -n | uniq -c | sort -g | tail -n 10
Lister les IP effectuant le plus de HIT
cat access.log | awk '{print $1}' | sort -n | uniq -c | sort -g | tail -n 10
Filtrer access log sur un code HTTP et afficher la requête
awk '($9 ~ /500/)' access.log | awk '{print $9,$7}'
Obtenir un server-status d'apache
ℹ️ Pensez à faire un netstat -lntp | grep apache (si apache écoute sur le port 8080)
http_proxy=""; lynx http://localhost/server-status http_proxy=""; lynx 127.0.0.1:8080/server-status
Lister les modules Actifs
ℹ️ a2query -m si Apache n'est pas running
apache2ctl -t -D DUMP_MODULES apache2ctl -M a2query -m
Afficher mémoire consommée
ps aux | grep apache | grep -v logger | grep -v pts | awk '{ tot += $6; procs += 1; print $2,$6,$11 } END { print "TOTAL: ",tot,"/",procs,"=",tot/procs }'
Afficher la mémoire consommée avec la moyenne par worker
ps -ylC apache2 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
🐳 Docker
DescriptionCommande
Lister les containers
docker ps -a
Supprimer un container via son ID
docker rm <id>
Liste les images utilisées par les containers
docker images -a
Supprime une image via son ID
docker rmi <id de l'image>
Rentrer dans une image
docker run -ti image:tag /bin/bash
Rentrer dans le conteneur <id> en cours d'éxecution
docker exec -ti <id> /bin/bash
Remove all unused containers, networks, images (both dangling and unreferenced)
docker system prune
Supprimer tous les conteneurs, images, réseau ET volumes non utilisés
ℹ️ À utiliser avec précaution !
docker system prune --volumes
Construire un conteneur
docker build -t nom_du_conteneur .
Créer une nouvelle image à partir des changements d’un conteneur
docker commit
Copier des fichiers ou des dossiers depuis le PATH d’un conteneur vers le HOSTDIR ou vers STDOUT
docker cp
Créer un nouveau conteneur
docker create
Inspecter les changements sur le système de fichiers d’un conteneur
docker diff
Créer une image de système de fichiers vide et y importer le contenu d’une archive
docker import
Afficher l’ensemble des informations système
docker info
Tuer un conteneur en cours d’exécution en utilisant SIGKILL ou un signal spécifié
docker kill
Liste les ports d’un conteneur, ou rechercher les ports “public” NATé vers un PRIVATE_PORT
docker port
Récupérer une image ou un repository à partir du Docker HUB
docker pull
Publier une image ou un repository vers le Docker HUB
docker push
Renommer un conteneur Docker
docker rename
Redémarrer un conteneur en cours d’exécution
docker restart
Enregistrer une image dans une archive tar
docker save
Rechercher des images sur le Docker Hub
docker search
Lancer/Arreter un ou plusieurs conteneurs arrêtés
docker start/stop
Afficher l’utilisation des ressources d’un ou plusieurs conteneurs sous la forme d’un flux
docker stats
Afficher les processus en cours d’exécution d’un conteneur
docker top
Afficher les informations de version Docker
docker version
Réactiver tous les processus dans un conteneur
docker unpause
Stopper TOUS les conteneurs en cours d'exécution
docker stop $(docker ps -a -q )
Supprimer TOUS les conteneurs
docker rm $(docker ps -a -q )
🔍 Elasticsearch
DescriptionCommande
Status en une ligne
curl 'localhost:9200/_cat/health?v'
Status
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Cluster status
http_proxy='' curl -XGET 'http://localhost:9200/_cluster/health?pretty=true&detailed=true'
Etat de chaque nœud du cluster
curl -XGET 'http://localhost:9200/_cat/nodes?v'
Lister les UID de chaque noeud du cluster
curl -XGET 'http://localhost:9200/_cat/nodes?v&full_id=true&h=id'
Recovery status
curl -XGET 'localhost:9200/_cat/recovery?v'
Lister les shards
curl 'localhost:9200/_cat/shards' 2>&1
Fermer un indice
curl -XPOST 'http://localhost:9200/INDICE/_close'
Ouvrir un indice
curl -XPOST 'http://localhost:9200/openvoice/_open'
Lister les repositories des snapshots
curl -s 0:9200/_snapshot?pretty
Supprimer un repository
curl -s -XDELETE localhost:9200/_snapshot/[nom repository]?pretty
Lister les snapshots
curl -XGET 'http://localhost:9200/_snapshot/REPO/_all/?pretty=true'
Lister les tâches en cours
curl -XGET 'http://localhost:9200/_cluster/pending_tasks?pretty'
Consulter la configuration d'un index
http_proxy= curl 'http://localhost:9200/<index_name>/_settings?pretty=true'
Lister les "unassigned_shards"
curl -XGET 'http://localhost:9200/_cat/shards?v' | grep -c STARTED
Lister les indices
curl 'localhost:9200/_cat/indices?v'
Vérifier le mapping (typage des données)
http_proxy= curl -s 'http://localhost:9200/<index_name>/_mapping?pretty=true' | less
Voir la version
curl -s -XGET 'localhost:9200' | grep number
Voir la taille de tous les index
curl -XGET "http://localhost:9200/_cat/shards?v" | awk -F " " '{print $1, $6}' | sort
Explain de pourquoi le premier shard n'est pas assigné
curl -XGET 'localhost:9200/_cluster/allocation/explain?pretty'
Retry l'allocation des shards manuellement
ℹ️ Après le index.allocation.max_retries
curl -XPOST 'http://localhost:9200/_cluster/reroute?retry_failed'
Pour changer le nombre de replica a chaud (Ex:passage a 0)
curl -XPUT http://localhost:9200/_settings -d '{"index": {"number_of_replicas": 0}}'
Snapshot ES Tutorial
https://qbox.io/blog/elasticsearch-data-snapshots-restore-tutorial
Vider la JVM
ℹ️ À exécuter après avoir coupé le trafic
curl -XPOST "http://localhost:9200/_all/_cache/clear"
⚡ PHP-FPM
DescriptionCommande
Classer les processus en cours par ordre croissant de consommation de mémoire
ps -ylC <nom_process-fpm> --sort:rss
Afficher la consommation mémoire moyenne d'un processus
ps --no-headers -o "rss,cmd" -C <nom_process-fpm> | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }'
🔀 Git
DescriptionCommande
Tester connexion à un dépôt
git ls-remote <user>@<host>:<repository>.git
Annuler dernier commit
git reset --soft HEAD
Annuler le dernier commit push
git revert <id>
Voir l'historique de la branche, en joli
git log --graph --oneline --decorate --color
Voir l'historique de toutes les branches, avec coloration
git log --graph --oneline --decorate --color --all
Squash plusieurs commit
ℹ️ Squash first and pick rest
git rebase -i <last_stable_branch> git push origin <branch> -f
🦊 Gitlab & HAProxy
DescriptionCommande
Afficher status
gitlab-ctl status
Démarrer service
exec /opt/gitlab/embedded/bin/runsvdir-start &
Redémarrer un composant
gitlab-ctl restart <service>
Redemarrer gitlab
gitlab-ctl restart
📜 Journald & Logs
DescriptionCommande
Affichier les logs
journalctl
Voir les logs de manière dynamique (tail -f)
journalctl -f
Filtrer par service
journalctl -u crond
Filtrer par PID
journalctl _PID=<PID>
Filtrer par exécutable
journalctl /path/to/bin
Choisir le niveau de log affiché
journalctl -p err
Les log depuis le 20 novembre 2017 à 21h
journalctl --since "2017-11-20 21:00:00"
Les log depuis les 10 dernières minutes
journalctl --since "10 minutes ago"
Les log avant le 20 novembre 2017 à 21h
journalctl --until "2017-11-20 21:00:00"
Exemple de combinaison temporelle & filtrage
ℹ️ Tous les logs entre le 21 à 18h et le 22 à 9h avec niveau 'info' pour crond
journalctl --since "2017-11-21 18:00:00" --until "2017-11-22 9:00:00" -p info -u crond
Purger les logs (older 1 day)
journalctl --vacuum-time=1d
Purger les logs (keep last 500Mo)
journalctl --vacuum-size=500M
☸️ Kubernetes (kubectl)
DescriptionCommande
Afficher les nodes
kubectl get node -o wide
Afficher les informations d'un node
kubectl describe nodes <your_node>
Afficher l'espace disque consommé par un pod
kubectl -n <NAMESPACE> exec <POD> -- df -h
Afficher les namespace
kubectl get namespaces -o wide
Afficher les pods
kubectl get pods --all-namespaces -o wide
Afficher les pods en état Crash
kubectl get pods --all-namespaces -o wide |grep -v Running |grep -i Crash
Afficher les pods applicatifs actifs ayant déjà redémarrés
kubectl -nproduction get pods | awk '{ if ($4 > 0) {print $0} }'
Afficher les persistentvolume
kubectl get persistentvolumes -o wide
Afficher les persistentvolumesclaims
kubectl get persistentvolumeclaims --all-namespaces -o wide
Supprimer un pod
kubectl delete pod $podname -n $namespace
Affichier les cycles de vie des pods de manière dynamique
kubectl get pods -n logging -o wide -w
Afficher uniquement les derniers évènements d'un pod
kubectl get event -n <your_namespace> --field-selector involvedObject.name=<your_pod>
Afficher les logs d'un pod
kubectl logs -n <your_namespace> <your_pod>
Afficher uniquement les derniers évènements des pod n'étant pas en status Running (boucle)
for i in $(kubectl get pods -n <your_namespace> | grep <your_pod> | grep -v Running | awk '{print $1}'); do kubectl get event -n <your_namespace> --field-selector involvedObject.name=$i; done;
Trier les pods par le nombre de redémarrages
kubectl get pods -n <your_namespace> | grep <your_pod> | sort -gr -k 4
Accéder au terminal d'un pod
kubectl exec -it <your_pod> -n <your_namespace> -- /bin/bash
Exécuter une commande dans un pod
kubectl exec -it <your_pod> -n <your_namespace> -- /bin/bash -c "<votre_commande>"
Afficher les informations sur les ReplicaSet configurés
kubectl get rs
Afficher les vhosts associés
kubectl get ingress -A
🍃 MongoDB
DescriptionCommande
Afficher les collections
echo 'show collections' | mongo brandministry_fr --quiet
Faire un dump de toutes les collections
for i in $(echo 'show collections' | mongo <database> --quiet) ; do mongodump --db <database> --collection $i --out - | gzip > <nom_de_fichier>.$i.gz; done
Faire un export
mongoexport --db <base> --collection <nom_collection> --out <nom_fichier>.json
Faire un export (au format JSON Array)
mongoexport --db <base> --collection <nom_collection> --jsonArray --out <nom_fichier>.json
Obtenir des informations sur la réplication (dans la console mongo)
db.runCommand("ismaster")
Importer un fichier JSON dans la base
mongoimport --db <base de donnée> --collection <collection> --file /chemin/fichier.json --jsonArray
Afficher le statut du ReplicaSet
rs.status()
Afficher l'état de la replication (côté slave)
rs.printSlaveReplicationInfo()
Afficher l'état de la replication (côté master)
rs.printReplicationInfo()
Afficher la configuration de la replication (master/slave/arbiter)
db.isMaster()
Voir les bases
show dbs;
🛢️ MySQL & MariaDB
DescriptionCommande
Générer un dump et gzipper en même temps
mysqldump -uroot -p --databases <database> | gzip > <database>.sql.gz
Importer un dump gzip
gzip -dc <file>.sql.gz | mysql -u root -p <databases>
Killer les requêtes "selects"
for i in `mysql -e"show full processlist"|grep SELECT|awk '{print $1}'` ; do mysql -e"kill $i" ; done
Créer une base de données (depuis mysql)
create database <nom base>;
Créer un user associé à une bdd avec les droits "all privileges"
grant all privileges on `DATABASE`.* to 'USER'@'%' identified by 'PASSWD';
Tester la connexion à une bdd
mysql -u <login> -p <database>
Lister les requêtes en cours
show processlist; show full processlist;
Lister les requêtes en cours et exclure les NULL
mysql -e 'SELECT * FROM information_schema.PROCESSLIST WHERE ID <> CONNECTION_ID() AND INFO IS NOT NULL \G'
Vérifier si MySQL DUMP est en execution
mysql -e "select COUNT(1) mysqldumpThreads from information_schema.processlist where info like 'SELECT /*\!40001 SQL_NO_CACHE */%';"
Lister les transactions en cours
show engine innodb status;
Killer une transaction
kill query <ID>;
Visualise la commande suivante en partant du début
pager less;
Lister utilisateurs mysql
select user,host from mysql.user;
Rechecher une base
SHOW databases LIKE '%<database>%';
Afficher la timezone
SELECT @@global.time_zone, @@session.time_zone
Executer mysqltuner depuis le front vers un RDS
perl mysqltuner --host <hostname> --forcemem <size - Amount of RAM installed in megabytes >
Afficher toutes les requêtes mysql envoyées
tcpdump -i eth<numéro> -s 0 -l -w - dst port <port> | strings
Modifier le "max_connections"
set global max_connections = 1000; show variables like "max_connections";
Purger les bin logs jusqu'au bin log actuel
mysql -e "PURGE BINARY LOGS TO '$(mysql -e "show master status\G" | grep File | awk -F": " {'print $2'})'"
Passer une erreur de réplication
STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
Afficher les droits des utilisateurs pour une base de donnée précise
SELECT * FROM mysql.db WHERE Db = '<database>'\G;
Retirer les droits d'un utilisateur pour une base de donnée précise
REVOKE ALL PRIVILEGES ON `<database>`.* FROM '<user>'@'%';
Afficher la version de mysql depuis son prompt
select @@version; select version(); status;
Importer une base dans mysql
mysql -u utilisateur -p mot de passe base_de_destination < fichier_dump.sql
Voir taille de toutes les databases
SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;
Afficher le statut d'une réplication
echo "show slave status\G" | mysql -u root -p | egrep 'Slave_IO_Running:|Slave_SQL_Running:|Seconds_Behind_Master:'
Se connecter à un RDS
mysql -h <nom_rds_aws>.eu-west-1.rds.amazonaws.com -u <USER> -p
Lire un Binlog
mysqlbinlog -v master-log-bin.XXXXXX | less
Lire un binlog sur un créneau horaire particulier
mysqlbinlog --start-datetime="2017-09-11 5:00:00" --stop-datetime="2017-09-11 12:00:00" mysql-bin.000007
Trouver les ALTER (ou autre) effectués sur une base en particulier
mysqlbinlog binlog.* | grep -i -e "^alter" | grep -i -e "question" >> /space/OTHERS/alter_binlog.txt
Supprimer toutes les requêtes sleep
mysql -e "show processlist;" | grep Sleep | awk '{print $1}' | while read LINE; do mysql -e "kill $LINE"; done
Afficher la taille des bases sur disque en Go avec la fragmentation
SELECT table_schema AS "DB_NAME", SUM(size) "DB_SIZE", SUM(fragmented_space) FRAGMENTED_SPACE_GB FROM (SELECT table_schema, table_name, ROUND((data_length+index_length+data_free)/1024/1024/1024,2) AS size, ROUND((data_length - (AVG_ROW_LENGTH*TABLE_ROWS))/1024/1024/1024,2) AS fragmented_space FROM information_schema.tables WHERE table_type='BASE TABLE' AND table_schema NOT IN ('performance_schema', 'mysql', 'information_schema') ) AS TEMP GROUP BY DB_NAME ORDER BY FRAGMENTED_SPACE_GB DESC;
Afficher la taille totale des bases (disque + mémoire)
SELECT table_schema AS "DB_NAME", SUM(size) "DB_SIZE", SUM(fragmented_space) FRAGMENTED_SPACE_GB FROM (SELECT table_schema, table_name, ROUND((data_length+index_length+data_free)/1024/1024/1024,2) AS size, ROUND((data_length - (AVG_ROW_LENGTH*TABLE_ROWS))/1024/1024/1024,2) AS fragmented_space FROM information_schema.tables WHERE table_type='BASE TABLE' AND table_schema NOT IN ('performance_schema', 'mysql', 'information_schema') ) AS TEMP GROUP BY DB_NAME ORDER BY FRAGMENTED_SPACE_GB DESC;
Afficher la taille des tables sur disque en Go avec la fragmentation
SELECT table_schema DB_NAME, table_name TABLE_NAME, ROUND((data_length+index_length+data_free)/1024/1024/1024,2) SIZE_GB, ROUND((data_length - (AVG_ROW_LENGTH*TABLE_ROWS))/1024/1024/1024,2) FRAGMENTED_SPACE_GB from information_schema.tables WHERE table_type='BASE TABLE' AND table_schema NOT IN ('performance_schema', 'mysql', 'information_schema') ORDER BY SIZE_GB DESC;
📡 Network
DescriptionCommande
Blackhole d'IP - Classique commande
ℹ️ Deuxième commande pour bloquer toute la plage CIDR
ip route add blackhole 192.124.249.115 ip route add blackhole 192.124.249.115/24
Blackhole d'IP - Sur une vieille instance
route add -host 192.124.249.115 reject
Blackhole d'IP - Enlever le blackhole
ip route del 192.124.249.115
Afficher des informations sur une IP
ℹ️ Limites du sous-réseau, nombre d'hôtes, etc.
ipcalc IP/cidr (ex: 192.168.1.0/24)
Afficher adresse IP publique d'un serveur
unset http_proxy; curl ifconfig.co
Découverte adressage IP privées clients
dig AXFR ipmi oxalide.infra.infra-01.adm | grep <client>
Lister toutes les adresses IP du host
for net in $(ip route show | cut -f1 -d\ | grep -v default); do ipcalc $net | grep Broadcast | cut -d\ -f 2; done
Afficher le débit d'une interface
ethtool <interface> | grep -i speed
Lister les services en écoute
netstat -ltpen
Connaître le nombre de connexions par IP
netstat -pan | grep 'tcp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Récupérer des infos de temps sur le curl
curl -o /dev/null -s -w 'connect: '%{time_connect}' -start ':%{time_starttransfer}'- total: ':%{time_total} http://www.google.com
Détecter si un port est ouvert
ℹ️ Plus pratique et explicite que telnet
netcat -vz <host> <port>
Lister les connexions ouvertes avec la date et le processus
lsof -P -i tcp | awk '{print $2,$4}' | tr -d 'u' | sort -u | while read pid fd; do stat --printf "%z %N\n" /proc/$pid/fd/$fd ; done | sort -r
Vérifier les adresses IPv6 montées
ip -6 address show
Vérifier la table de routage IPv6
ip -6 route
Voir les adresses MACs IPv6
ip -6 neigh show
💚 Nginx
DescriptionCommande
Vérifier la syntaxe
nginx -t
Obtenir un nginx_status de nginx
http_proxy= lynx http://localhost:80/nginx_status
Trier les access_log par code de retour
ℹ️ Format par défaut (combined)
awk '{print $9}' access.log | sort | uniq -c | sort -rn
Trier les erreurs 404
awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn
Trier les erreurs 502 (bad gateway)
awk '($9 ~ /502/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r
Trier les IPs faisant des requêtes sur des liens cassés (502)
awk -F" '($2 ~ "mettre ici le lien remonté par la commande juste au dessus"){print $1}' access.log | awk '{print $1}' | sort | uniq -c | sort -r
Afficher les liste compléte des vhost configurés
grep server_name /etc/nginx/sites-enabled/* -RniI --color
Afficher les liste compléte des vhost configurés et en fonction
find /etc/nginx/sites-enabled/ -type f -print0 | xargs -0 egrep '^(\s|\t)*server_name'
🐇 RabbitMQ
DescriptionCommande
Lister les utilisateurs
rabbitmqctl list_users
Lister les vhosts
rabbitmqctl list_vhosts
Lister les queues pour un vhost
ℹ️ Essayer aussi sans le slash '/'
rabbitmqctl list_queues -p /vhost
Lister les queues en cours (20 premières)
rabbitmqctl list_queues | awk '{ print $2 " " $1}' | sort -nr | head -n 20
Purge des queues
rabbitmqctl purge_queue <queue_name>
Pour vérifier l'état de synchronisation des queues dans un cluster
rabbitmqctl list_queues name slave_pids synchronised_slave_pids
Pour forcer la synchronisation d'une queue
rabbitmqctl sync_queue <queue_name>
🔴 Redis
DescriptionCommande
Statistiques sur le serveur
redis-cli info
Tester la connectivité / Moniteur
redis-cli -p <port> monitor
Vider complétement le cache
redis-cli FLUSHALL
Vider le cache de la BDD actuellement sélectionnée
redis-cli FLUSHDB
Lister les entrées
redis-cli KEYS *
Lister les connexions
redis-cli client list
Éteindre le serveur en forçant une sauvegarde de la BDD
redis-cli SHUTDOWN save
🐧 System & Unix
DescriptionCommande
Vérification avant installation d'un package
apt-get install -s mon_paquet
Information du package
apt-cache show $package
Mémoire disponible
free -mt
Espace disponible par partition
df -h
Effectuer un scan disk d'une partition
ncdu -x /$dir
Voir en temps réel l'exécution d'une commande
strace -t -p $PID
Lister les process en cours d'exécution
ps faux | grep $process
Stracer des enfants (ex: PHP-FPM)
ℹ️ -f (follow), -tt (timestamps avec microsec), -o (output file), -s (buffer size), -p (PID parent)
strace -f -tt -o php-fpm.trace -s1024 -p `pidof php5-fpm | tr ' ' ','`
Tester une URL (http/https)
unset http_proxy ou unset https_proxy curl -IH "host: <vhost>" localhost/<url> curl -IH --insecure "host: <vhost>" https://localhost:443/<url> curl <url> | lynx --stdin OU curl <url> | lynx --stdin --dump
Afficher le backend répondant à un curl
curl -I <host> | grep X-Director
Afficher informations certificat HTTPS d'un domaine
curl --insecure -v https://<domaine> 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
Augmenter la partition /var/tmp
ℹ️ Exemples pour 1Go et 2.5Go
mount -o remount,size=1G /var/tmp mount -o remount,size=2560M /var/tmp
Obtenir la version du kernel
uname -a
Lister les process qui consomment le plus de SWAP
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -10
Lister consommation SWAP (sans for)
awk '/Name/ {printf $2} /VmSwap/ {print " ",$2}' /proc/*/status |sort -k 2 -n -r | head
Vider le SWAP
swapoff -a && swapon -a
Savoir quels fichiers sont utilisé pour le SWAP
ℹ️ Utile avant suppression par exemple
cat /proc/swaps
Vérifier le taux d'utilisation du disque
iostat -x 1
Vérifier l'état des disques sur un serveur physique
megasasctl
Créer un mot de passe aléatoire
ℹ️ Option --char pour spécifier le nombre de caractères
makepasswd makepasswd --char 12
Supprimer les fichiers plus vieux d'un an
find $EMPLACEMENT -type f -mtime +365 -delete
Vérifier sa configuration JSON (syntaxe)
ℹ️ Affiche le JSON formaté si OK
cat nomdufichier.json | python -m json.tool
Afficher toutes les permissions d'un chemin
namei -om /chemin/à/vérifier
Connaître le nombre de fichiers sur les 20 derniers jours
find . -type f -mtime +20
Lister les crontabs de tous les users
for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" && crontab -u $user -l; done
Supprimer des fichiers à plus de 3 jours
find . -type f -mtime +3 -exec rm -- {} \;
Supprimer les fichiers compris entre deux dates
for i in $(find -newerct "25 Jul 2015" ! -newerct "24 Dec 2015" -ls); do rm -v $i; done
Trouver les dossiers avec le plus d'inodes
for i in `find . -xdev -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n
Afficher la consommation d'inodes d'une partition
find <partition> -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
Autre méthode pour trouver les inodes (en une ligne)
echo "Detailed Inode usage: $(pwd)" ;for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`;do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n"
Netcat (telnet bis)
nc -zv "nom.adm" "port"
Déchiffrer de la base64
echo "messageenbase64" | base64 -d
List open files (lsof)
ℹ️ Utile lorsque l'on supprime un fichier et que la taille allouée sur le disque n'est pas supprimée
lsof lsof | grep <nom fichier>
Dé-gzipper
gzip -d <monFichier>.gz
Commandes NTP: Vérifier la synchro
ntptrace
Vérifier le status des logrotates
cat /var/lib/logrotate/status
Lancer le service snmpd
/etc/init.d/snmpd start /usr/sbin/snmpd -Ln -Lf /dev/null -u snmp -p /var/run/snmpd.pid
Lister et tuer les processus Zombie
ℹ️ Dernière commande pour tous les tuer
ps aux | awk '{print $2,$8}' | grep Z ps aux | awk '"[Zz]" ~ $8 { printf("%s, PID = %d\n", $8, $2); }' kill -9 $(ps aux | awk '{print $2,$8}' | grep Z | awk '{print $1}')
Déplacer des fichiers à l'aide d'un find
find $DIRECTORY $VOS_FILTRES -exec mv -t $REP_DESTINATION {} \;
Checker ce qui consomme les IO
iotop -aoP
Créer un seul .sql à partir d'un dossier de plusieurs .sql
ls *.gz | xargs -l1 gunzip -c >> TDB
Trouver les 10 fichiers modifié le plus récemment
find . -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head
Trouver les fichiers non modifiés depuis plus de 90 jours et afficher la taille totale
find -mtime +90 -type f -exec du -ch {}\; + | grep total$ | cut -f1 | awk '{ total += $1 }; END { print total }'