rangement
This commit is contained in:
parent
39b5f8464f
commit
a9cc8c30ec
126
TipsShell.md
126
TipsShell.md
|
@ -1,21 +1,16 @@
|
|||
# Astuces SHell
|
||||
|
||||
## Shell -> HTML
|
||||
|
||||
~~~
|
||||
# apt install aha
|
||||
$ script-foo-colors | aha > output.html
|
||||
~~~
|
||||
|
||||
## Initialisation du shell
|
||||
|
||||
Entre les 3 modes ("login", "interactive non-login" et "non-interactive non-login") il y a de quoi se perdre à propos des fichiers chargés. Voici un rappel assez complet : <https://github.com/rbenv/rbenv/wiki/Unix-shell-initialization>
|
||||
|
||||
## Script shell
|
||||
## Script
|
||||
|
||||
Style guide : <https://google.github.io/styleguide/shell.xml>
|
||||
|
||||
## History Bash
|
||||
## Configuration
|
||||
|
||||
### Initialisation du shell
|
||||
|
||||
Entre les 3 modes ("login", "interactive non-login" et "non-interactive non-login") il y a de quoi se perdre à propos des fichiers chargés. Voici un rappel assez complet : <https://github.com/rbenv/rbenv/wiki/Unix-shell-initialization>
|
||||
|
||||
### History Bash
|
||||
|
||||
`bashrc` :
|
||||
|
||||
|
@ -27,7 +22,7 @@ export HISTTIMEFORMAT="%c : "
|
|||
|
||||
> *Note* : si besoin on peut `chattr +a /root/.bash_history` pour empêcher sa suppression
|
||||
|
||||
## Changer l'editeur de texte par défaut pour une commande
|
||||
### Changer l'éditeur de texte par défaut pour une commande
|
||||
|
||||
Normalement le script (vipw, vigr, -ldapvi, ...) se réfère aux fichiers scripts (qui ne sont que des liens vers les binaires) :
|
||||
|
||||
|
@ -41,25 +36,9 @@ Sinon en ligne de commande :
|
|||
$ EDITOR=nano vipw
|
||||
~~~
|
||||
|
||||
## Savoir si lignes en doublon dans un fichier
|
||||
## Manipulations
|
||||
|
||||
~~~{.bash}
|
||||
$ uniq -d <fichier>
|
||||
~~~
|
||||
|
||||
ou autrement (appliquer un filtre différent) :
|
||||
|
||||
~~~{.bash}
|
||||
$ diff <fichier> <(cat <fichier> | uniq)
|
||||
~~~
|
||||
|
||||
## Comparer deux fichiers quant à l'existence de nouvelles lignes
|
||||
|
||||
~~~{.bash}
|
||||
$ grep -F -x -v -f <fichier1> <fichier2>
|
||||
~~~
|
||||
|
||||
## Tâches de fond
|
||||
### Tâches de fond
|
||||
|
||||
~~~{.bash}
|
||||
$ bg = "mettre en arrière plan"
|
||||
|
@ -110,9 +89,29 @@ $ kill -9 %% #fg :x
|
|||
$ exit
|
||||
~~~
|
||||
|
||||
## Analyse disque
|
||||
## Fichiers et FS
|
||||
|
||||
Quand il s'agit de / - penser à exclure les autres partitions
|
||||
### Savoir si lignes en doublon dans un fichier
|
||||
|
||||
~~~{.bash}
|
||||
$ uniq -d <fichier>
|
||||
~~~
|
||||
|
||||
ou autrement (appliquer un filtre différent) :
|
||||
|
||||
~~~{.bash}
|
||||
$ diff <fichier> <(cat <fichier> | uniq)
|
||||
~~~
|
||||
|
||||
### Comparer deux fichiers quant à l'existence de nouvelles lignes
|
||||
|
||||
~~~{.bash}
|
||||
$ grep -F -x -v -f <fichier1> <fichier2>
|
||||
~~~
|
||||
|
||||
### Analyse disque
|
||||
|
||||
Quand il s'agit de / - penser à exclure les autres partitions (si existante de toute évidence) :
|
||||
|
||||
~~~
|
||||
# ncdu / --exclude /home --exclude /srv --exclude /var --exclude /tmp --exclude /boot
|
||||
|
@ -120,19 +119,19 @@ Quand il s'agit de / - penser à exclure les autres partitions
|
|||
|
||||
Sinon voir du côté de [HowtoDUC](/HowtoDUC).
|
||||
|
||||
## Surveiller les ouvertures/écriture des fichiers présent dans un répertoire
|
||||
### Surveiller les ouvertures/écriture des fichiers présent dans un répertoire
|
||||
|
||||
~~~{.bash}
|
||||
$ iwatch <target>
|
||||
~~~
|
||||
|
||||
## Savoir les différents users qui ont écris dans /tmp
|
||||
### Savoir les différents users qui ont écris dans /tmp
|
||||
|
||||
~~~{.bash}
|
||||
$ stat -c %U /tmp/* | sort | uniq -c | sort -n
|
||||
~~~
|
||||
|
||||
## Tester l'écriture disque
|
||||
### Tester l'écriture disque
|
||||
|
||||
Simplement, en écriture (fichier de 5.1GB) :
|
||||
|
||||
|
@ -140,7 +139,31 @@ Simplement, en écriture (fichier de 5.1GB) :
|
|||
$ dd if=/dev/zero of=test count=10000000
|
||||
~~~
|
||||
|
||||
## Avoir un rendu des requêtes par IP à partir d'un access.log
|
||||
### Lister les répertoires ayant le plus de fichiers <=> max inode
|
||||
|
||||
~~~{.bash}
|
||||
PATH_TO_WATCH='/var'
|
||||
RESULT_FILE='list_max_inode.txt'
|
||||
TMP=$(mktemp)
|
||||
#Regarder dans le premier niveau
|
||||
(for i in $(find $PATH_TO_WATCH -type d); do echo $(ls -a $i | wc -l) $i; done) | sort -n > $TMP
|
||||
#compter dans les sous niveaux
|
||||
cat $TMP | (while read line; do num=$(echo $line | awk '{ print $1 }'); path=$(echo $line | awk '{ print $2 }'); echo ${path%/*}; done) | sort | uniq | (while read line; do echo $(grep "$line" $TMP | cut -f1 -d' ' | xargs echo -n | tr -s ' ' '+' | xargs echo | bc -l) $line; done) | sort -n | tee $RESULT_FILE
|
||||
rm $TMP
|
||||
~~~
|
||||
|
||||
### Supprimer des vieux fichiers
|
||||
|
||||
- Par exemple, si + vieux de 30 jours en modification :
|
||||
|
||||
~~~{.bash}
|
||||
$ find DIR/ -type f -mtime +30 -delete
|
||||
$ find DIR/ -type f -mtime +30 -exec rm '{}' \;
|
||||
~~~
|
||||
|
||||
## Serveur web
|
||||
|
||||
### Avoir un rendu des requêtes par IP à partir d'un access.log
|
||||
|
||||
Avoir un compte rendu pour un laps de temps :
|
||||
|
||||
|
@ -163,7 +186,9 @@ Ou regarder les IPs en direct :
|
|||
eval "awk '\$1 > $SEUIL {printf \"\\033[1;31m\" \$1 \" \" \$2 \"\\033[0m \\n\"; next;};{printf \$1 \" \" \$2 \"\\n\";}'"
|
||||
~~~
|
||||
|
||||
## Un processus par rapport à une socket/port
|
||||
## Process
|
||||
|
||||
### Un processus par rapport à une socket/port
|
||||
|
||||
- Connaître les sockets ouvertes et ports en écoutent par un processus :
|
||||
|
||||
|
@ -176,26 +201,3 @@ $ lsof -Pan -p PID -i
|
|||
~~~{.bash}
|
||||
$ lsof -i :Port
|
||||
~~~
|
||||
|
||||
## Lister les répertoires ayant le plus de fichiers <=> max inode
|
||||
|
||||
|
||||
~~~{.bash}
|
||||
PATH_TO_WATCH='/var'
|
||||
RESULT_FILE='list_max_inode.txt'
|
||||
TMP=$(mktemp)
|
||||
#Regarder dans le premier niveau
|
||||
(for i in $(find $PATH_TO_WATCH -type d); do echo $(ls -a $i | wc -l) $i; done) | sort -n > $TMP
|
||||
#compter dans les sous niveaux
|
||||
cat $TMP | (while read line; do num=$(echo $line | awk '{ print $1 }'); path=$(echo $line | awk '{ print $2 }'); echo ${path%/*}; done) | sort | uniq | (while read line; do echo $(grep "$line" $TMP | cut -f1 -d' ' | xargs echo -n | tr -s ' ' '+' | xargs echo | bc -l) $line; done) | sort -n | tee $RESULT_FILE
|
||||
rm $TMP
|
||||
~~~
|
||||
|
||||
## Supprimer des vieux fichiers
|
||||
|
||||
- + vieux de 30 jours en modification :
|
||||
|
||||
~~~{.bash}
|
||||
$ find DIR/ -type f -mtime +30 -delete
|
||||
$ find DIR/ -type f -mtime +30 -exec rm '{}' \;
|
||||
~~~
|
||||
|
|
Loading…
Reference in New Issue