« Commandes du shell » : différence entre les versions
Ligne 5 : | Ligne 5 : | ||
=== Pour rediriger les flux de sorties standards sous Bash :=== | === Pour rediriger les flux de sorties standards sous Bash :=== | ||
Redirige la sortie standard générée par la commande (stdout) dans fichier | Redirige la sortie standard générée par la commande (stdout) dans fichier | ||
commande 1> fichier | |||
commande | |||
Redirige la sortie d'erreur standard généré par la commande (stderr) dans fichier | Redirige la sortie d'erreur standard généré par la commande (stderr) dans fichier | ||
commande 2> fichier | |||
commande 2> | |||
Redirige stderr vers stdout | Redirige stderr vers stdout | ||
commande 2>&1 | |||
commande & | |||
Redirige stdout et stderr dans fichier | Redirige stdout et stderr dans fichier | ||
commande &> fichier | |||
Où commande est une commande du bash (telle que ls ou mkdir), ou un programme (vim ou emacs). Et fichier est un fichier quelconque. | Où commande est une commande du bash (telle que ls ou mkdir), ou un programme (vim ou emacs). Et fichier est un fichier quelconque. |
Version du 28 novembre 2018 à 14:55
Les redirections
0 = Stdin 1 = Stdout 2 = Stderr
Pour rediriger les flux de sorties standards sous Bash :
Redirige la sortie standard générée par la commande (stdout) dans fichier
commande 1> fichier
Redirige la sortie d'erreur standard généré par la commande (stderr) dans fichier
commande 2> fichier
Redirige stderr vers stdout
commande 2>&1
Redirige stdout et stderr dans fichier
commande &> fichier
Où commande est une commande du bash (telle que ls ou mkdir), ou un programme (vim ou emacs). Et fichier est un fichier quelconque.
Les variables
lors de l'exécution d'un script, des arguments sont affectés à des variables EX: fichier de commande = $0
arg1 = $1 $# = nombre total d'argument de $1 $x $* = affiche tous les arguments sauf $0 $$ = Pid du processus en cours $? = code de retour pour l'exécution 0=OK et 1=!OK $! = PID du dernier processus lance en tache de fond
Date d'installation d'un serveur
Il existe une commande, qui consiste à lister tous les fichiers de configuration du répertoire /etc et à prendre la date la plus ancienne.
Voici la commande à utiliser :
ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'
Une autre solution consiste à afficher la date de création du système de fichiers à l'aide de la commande tune2fs. A lancer avec le compte root de la machine :
df / | awk '{print $1}' | grep dev | xargs tune2fs -l | grep create
Informations trouvées sur www.tux-planet.fr url:http://www.tux-planet.fr/connaitre-la-date-dinstallation-dun-systeme-linux/
Créer un fichier vide
- Il est parfois utile de pouvoir créer des fichiers vide.
- Il est possible de le créer avec des données aléatoires ou des 0.
les commandes suivantes créer un fichier comprenant 1000 bloc de 1k
dd if=/dev/zero of=[Fichier] bs=1k count=1000
dd if=/dev/urandom of=[Fichier] bs=1k count=1000
Grub2
grub-install /dev/sda
update-grub
Chroot
mount --bind /dev /chroot/dev mount --bind /sys /chroot/sys mount --bind /proc /chroot/proc
Modification du shell
chsh -s /bin/bash user chsh -s /bin/false user
Rsync
rsync -av --delete-during source destination rsync -av --delete-during /src/test/ /dest/test rsync -av --delete-during /src/test/ user@server:/dest/test
Tar distant
tar -czv / | ssh user@serveur "tar -xzv -C destination"
LSATTR
Les attributs
Ils sont au nombre de seize, tous identifiables par une lettre [ASacDdIijsTtuEXZ]
-A
La date de dernier accès n'est pas mise à jour (uniquement utile pour réduire les accès disque sur les portables)
-S
Le fichier est synchrone, les écritures dans le fichier sont immédiatement effectuées sur le disque. (équivalent à l'option sync de mount appliquée à un sous-ensemble de fichiers)
-a
Le fichier ne peut être ouvert qu'en ajout pour l'écriture (fichiers journaux, etc) Seule la redirection >> peut être utilisée, le fichier ne peut être supprimé. Seul l'utilisateur root ou un programme disposant des droits nécessaires peut changer cet attribut.
-c
Le fichier est automatiquement compressé avant l'écriture sur le disque, et décompressé avant la lecture.
-D
Le dossier est synchrone (cf: -S) (équivalent à l'option dirsync de mount sur un sous ensemble de dossiers) Utilisable à partir du noyau 2.5.19
-d
Le fichier ne sera pas sauvegardé par la commande dump
-I
Ne peut être fixé par chattr, uniquement listé par lsattr Indique que le dossier est indexé.
-i
Le fichier/répertoire ne peut être modifié, effacé, renommé ou lié symboliquement, pas même par root. Seul root ou un binaire possédant les droits nécessaires peut fixer cet attribut.
-j
EXT3 uniquement. Si le système de fichier est monté avec l'option "data=ordered" ou "data=writeback", toutes les données du fichier sont écrites sur le journal avant d'être écrites dans le fichier lui-même. Si le système de fichier est monté avec l'option "data=journal", toute les données de tous les fichiers sont déjà dans le journal, l'attribut est sans effet. Seul root ou un binaire possédant les droits nécessaires peut fixer cet attribut.
-s
Quand le fichier est détruit, tous les blocs de données libérés sont mis à zéro.
-T
Utilisable à partir de la version 2.5.46 du noyau. Pas trouvé plus d'infos pour le moment.
-t
Concerne la fragmentation. Ceci n'est pour le moment pas implémenté sur l'ext2 et l'ext3 à ma connaissance.
-u
Si le fichier est effacé, son contenu est sauvegardé, cela permet à l'utilisateur de demander sa restauration.
-E
Expérimental, permet de détecter une erreur de compression, ne peut être fixé par chattr, mais peut être listé par lsattr
-X
Expérimental, indique que les données brutes d'un fichier compressé peuvent être accédées directement. Ne peut pour le moment être fixé par chattr
-Z
Expérimental, donne des informations sur l'état d'un fichier compressé. peut être uniquement listé par lsattr
Liste des processus en train de swapper
Trouver sur ce site : http://northernmost.org/blog/find-out-what-is-using-your-swap/
#!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/2011 SUM=0 OVERALL=0 for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do PID=`echo $DIR | cut -d / -f 3` PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` ; do let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - ($PROGNAME )" let OVERALL=$OVERALL+$SUM SUM=0 done echo "Overall swap used: $OVERALL"
Touver le dossier contenant trop d'inodes
for i in /*; do echo -n $i " " ; find $i |wc -l; done | sort -n -k2
Virtualbox
- Agrandir un volume disque
VBoxManage clonehd ancien.vdi --existing nouveau.vdi
vboxmanage modifyhd /home/CHEMIN/VIRTUALBOX\VOTRE.vdi --resize 80000 (80Go)