« Commandes du shell » : différence entre les versions

De TwisterWiki
Ligne 5 : Ligne 5 :


=== Pour rediriger les flux de sorties standards sous Bash :===
=== Pour rediriger les flux de sorties standards sous Bash :===
commande 1> fichier


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 2> fichier


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>&1


Redirige stderr vers stdout
Redirige stderr vers stdout
 
commande 2>&1
 
commande &> fichier


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)