Outils pour utilisateurs

Outils du site


linux:memo_bash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:memo_bash [13/01/2011 11:06] – gestion des processus liés au terminal daniellinux:memo_bash [10/09/2020 09:58] (Version actuelle) – [Memo BASH] daniel
Ligne 2: Ligne 2:
  
   * [[http://abs.traduc.org/abs-fr/index.html|Guide avancé d'écriture des scripts Bash]]   * [[http://abs.traduc.org/abs-fr/index.html|Guide avancé d'écriture des scripts Bash]]
 +  * http://www.davidpashley.com/articles/writing-robust-shell-scripts/
 +  * https://www.shellcheck.net/
 +  * https://bash3boilerplate.sh/ 
 +  * https://devhints.io/bash
 +  * https://devdocs.io/bash/
 +
  
 ===== vrac ===== ===== vrac =====
 +
  
 ==== Redirection ==== ==== Redirection ====
 Pour rediriger les erreurs dans le meme log : commande >log 2>&1 Pour rediriger les erreurs dans le meme log : commande >log 2>&1
 +
 +  * http://www.tldp.org/LDP/abs/html/ioredirintro.html et http://www.tldp.org/LDP/abs/html/ioredirintro.html
 +  * http://wiki.bash-hackers.org/howto/redirection_tutorial#an_example pour un exemple instructif de file descriptors
 +  * http://xensoft.com/content/use-exec-direct-all-bash-script-output-file-syslog-or-other-command pour capture de stdout|stderr dans un script
 +
 +Cf aussi 
 +  trap commande signal
 +pour exécuter une commande en cas de signal (le try/catch du bash)
 +
 +Attention, si on capture stdout avec un truc comme 
 +<code bash>
 +exec > >(while read line; do echo "[$(date '+%F %T')] $line" >> $LOGRAP; done)
 +</code>
 +le contenu du fichier $LOGRAP est pas immédiatement disponible dans le script principal (quand un sous-shell écrit dans un fichier, faut visiblement qu'il ait terminé pour que le parent soit sûr de récupérer le contenu.
  
 ==== gestion des processus liés au terminal (avant/arrière plan, attachés/détachés) ==== ==== gestion des processus liés au terminal (avant/arrière plan, attachés/détachés) ====
Ligne 15: Ligne 36:
   * pour la détacher alors qu'elle est déjà lancée, "ctrl+Z" pour la stopper (sans l'arrêter) pour reprendre la main, puis ''bg'' pour la passer en arrière plan (on peut vérifier avec ''jobs'') et ''disown'' (ça va détacher tous les processus en arrière plan du terminal courant)   * pour la détacher alors qu'elle est déjà lancée, "ctrl+Z" pour la stopper (sans l'arrêter) pour reprendre la main, puis ''bg'' pour la passer en arrière plan (on peut vérifier avec ''jobs'') et ''disown'' (ça va détacher tous les processus en arrière plan du terminal courant)
 (cf man bash et http://www.siteduzero.com/tutoriel-3-67789-executer-des-programmes-en-arriere-plan.html) (cf man bash et http://www.siteduzero.com/tutoriel-3-67789-executer-des-programmes-en-arriere-plan.html)
 +
 +==== jobs et at ====
 +On peut lister les jobs en cours avec ''jobs -p'', mais ça ne concernent pas les jobs en attente de at (du genre ''echo 'faire un truc' | at 14:42''), qui sont dans /var/spool/cron/atjobs/, mais que l'on peut lister avec ''atq'' ou virer avec ''atrm $numero_du_job''.
  
 ==== variables ==== ==== variables ====
Ligne 39: Ligne 63:
 $* La liste des arguments à partir de $1 $* La liste des arguments à partir de $1
  
-$@ La liste des arguments à partir de $1, chacun étant entre " (le nb et les contenu sont donc préservé si l'un deux comporte une espace, cf http://stefaanlippens.net/node/85)+$@ La liste des arguments à partir de $1, chacun étant entre " (le nb et les contenu sont donc préservé si l'un deux comporte une espace, cf http://stefaanlippens.net/node/85, donc en général ce sera du ''for arg in "$@"...'') 
 + 
 +''shift'' enlève $1 de la liste (ne le retourne pas, faut le mémoriser dans une variable avant si on en a besoin).
  
 $$ le n° PID du processus courant $$ le n° PID du processus courant
  
 $! le n° PID du processus fils $! le n° PID du processus fils
- 
- 
- 
  
 ==== Manipulation de chaînes ==== ==== Manipulation de chaînes ====
  
 Regarder la manipulation de chaines sur http://abs.traduc.org/abs-fr/ch09s02.html et celle de nombres sur  http://abs.traduc.org/abs-fr/ch09s07.html Regarder la manipulation de chaines sur http://abs.traduc.org/abs-fr/ch09s02.html et celle de nombres sur  http://abs.traduc.org/abs-fr/ch09s07.html
 +
 +Attention, globing correspond à une expression de "globing shell" (to*tu => commence par 'to' et fini par 'tu'), pas à une regex sed egrep ou autre.
 +
 <code bash> <code bash>
 ${#chaine} # nb de car de $chaine ${#chaine} # nb de car de $chaine
-expr match "$chaine" '$souschaine # longueur de $souschaine (regex) contenue dans $chaine+ 
 +expr match "$chaine" 'globing # longueur max de globing à partir du début de $chaine 
 +expr match "tatotu" 'to' # => 0 
 +expr match "tatotu" '[at]*o' # => 4 
 expr index $chaine $souschaine # Position numérique dans $chaine du premier caractère dans $souschaine qui correspond. expr index $chaine $souschaine # Position numérique dans $chaine du premier caractère dans $souschaine qui correspond.
 +expr index "tatotu" 'ua' # => 2
  
 # Extraction d’une sous-chaîne # Extraction d’une sous-chaîne
-${chaine:position} # Extrait une sous-chaîne de $chaine à partir de la position position+${chaine:pos} # Extrait une sous-chaîne de $chaine à partir de la position pos
-${chaine:position:longueur} # Extrait $longueur caractères d’une sous-chaîne de $chaine à la position position.+${chaine:pos:longueur} # Extrait long caractères de $chaine en démarrant à la position pos.
  
 # Suppression de sous-chaînes # Suppression de sous-chaînes
-${chaine#souschaine} # Supprime la correspondance la plus petite de souschaine à partir du début de $chaine. +${chaine#globing} # Supprime la correspondance la plus petite de globing à partir du début de $chaine. 
-${chaine##souschaine} # Supprime la correspondance la plus grande de souschaine à partir du début de $chaine. +${chaine##globing} # Supprime la correspondance la plus grande de globing à partir du début de $chaine. 
-${chaine%souschaine} # Supprime la plus petite correspondance de souschaine à partir de la fin de $chaine.  +${chaine%globing} # Supprime la plus petite correspondance de globing à partir de la fin de $chaine.  
-${chaine%%souschaine} # Supprime la plus grande correspondance de souschaine à partir de la fin de $chaine.+${chaine%%globing} # Supprime la plus grande correspondance de globing à partir de la fin de $chaine.
  
 # Remplacement de sous-chaîne # Remplacement de sous-chaîne
-${chaine/souschaine/remplacement} # Remplace la première correspondance de souschaine par remplacement. +${chaine/globing/remplacement} # Remplace dans $chaine la première correspondance de globing par "remplacement"
-${chaine//souschaine/remplacement} # Remplace toutes les correspondances de souschaine avec remplacement. +${chaine//globing/remplacement} # Remplace dans $chaine toutes les correspondances de globing avec "remplacement". 
-${chaine/#souschaine/remplacement} # Si souschaine correspond au début de $chaine, substitue $remplacement à $souschaine+# ex pour échapper les slashes 
-${chaine/%souchaine/remplacement} # Si souschaine correspond à la fin de $chaine, substitue remplacement à souschaine+chaine=/path/2/fichier; echo ${chaine//\//\\/} # => \/path\/2\/fichier 
 + 
 +${chaine/#globing/remplacement} # Si globing correspond au début de $chaine, remplace globing (gourmand) par "remplacement". 
 +# ex pour faire un basename 
 +chaine=/path/2/fichier.ext; echo ${chaine/#*\//} # => fichier 
 + 
 +${chaine/%globing/remplacement} # Si globing correspond à la fin de $chaine, remplace globing (gourmand) par "remplacement". 
 +chaine=/path/2/fichier.ext.ext2; echo ${chaine/%.*/} # => /path/2/fichier
 </code> </code>
  
-=== subsitution de variable === 
-bash ne permet pas l'écriture de $$var ou ${$var}. Pour contourner ce pb, utiliser les tableaux ${var[$indice]} (où $indice n'est pas forcément numérique) 
  
-=== tableaux ===+==== substitution de variable ==== 
 +bash ne permet pas l'écriture de $$var ou ${$var}. Pour contourner ce pb, utiliser les tableaux ${var[$indice]} (si $indice n'est pas numérique, il est converti en 0, on ne peut donc pas avoir de clés non numériques) 
 + 
 +Mais pour des booléens on peut utiliser le test -v "$nomVar" pour savoir si elle a été définie ou pas (mais on peut pas récupérer sa valeur). 
 + 
 +==== tableaux ====
 Cf http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ar01s12.html Cf http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ar01s12.html
  
Ligne 100: Ligne 141:
 Source: http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/shell-programmation.html et http://abs.traduc.org/abs-fr/ch07s02.html Source: http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/shell-programmation.html et http://abs.traduc.org/abs-fr/ch07s02.html
  
-  * Tester un fichier +  * Tester un fichier [ option fichier ] 
-[ option fichier ] +  -e il existe 
-avec pour option +  -f c'est un fichier normal 
--e il existe +  -d c'est un répertoire 
--f c'est un fichier normal +  * -L : c'est un symlink 
--d c'est un répertoire +  * -h : c'est un symlink valide (marche pour les dossiers) 
--r | -w | -x il est lisible | modifiable | exécutable +  * -r | -w | -x | -k | -p | -u : lisible | modifiable | exécutable | sticky | suid 
--s il n'est pas vide+  * -p | -t | -S : tube nommé | file descriptor | socket 
 +  * -O | -G : il m' appartient | appartient à mon groupe 
 +  -s il n'est pas vide 
 +  * fichier_1 -ef fichier_2 : vrai si le fichier_1 et fichier_2 sont hard linkés (equal files) 
 +  * fichier_1 -nt fichier_2 : vrai si le fichier_1 est plus récent (newer than) que le fichier_2 ou si fichier_1 existe et non fichier_2
  
-  * Tester une chaine +  * Tester une chaine [ option chaine ] 
-[ option chaine ] +  -z | -n la chaine est vide / n'est pas vide 
--z | -n la chaine est vide / n'est pas vide +  = | != les chaines comparées sont identiques | différentes 
-= | != les chaines comparées sont identiques | différentes+  * -v variable : $variable existe et a été assignée
  
 ATTENTION à quoter la variable à tester : ATTENTION à quoter la variable à tester :
Ligne 134: Ligne 179:
 et on peut combiner ça avec du -a (and) -o (or) et ! (not). Par exemple\\ et on peut combiner ça avec du -a (and) -o (or) et ! (not). Par exemple\\
 [ ! -f $1 -a $2 -lt 10 ] && echo "OK, le 1er param n'est pas un fichier et le 2e est inférieur à 10" [ ! -f $1 -a $2 -lt 10 ] && echo "OK, le 1er param n'est pas un fichier et le 2e est inférieur à 10"
 +
 +
 +==== ulimit ====
 +  * -S :soft limit
 +  * -H : hard limit
 +  * -a : tout afficher
 +  * -n : nb max de fichiers ouverts (socket & connexions comprises)
 +  * -u : nb max de process lancés
 +  * -T : nb max de threads
 +
 +Cf man bash /ulimit pour le reste... (ou man dash, sous debian les process sont souvent lancés par dash, alias de sh, cf /etc/passwd)
 +
 +Ces valeurs sont fixées dans /etc/security/limits.conf (par user/group), où dans certains fichiers de paramètres des script de démarrage (/etc/default/nginx par ex).
 +
 +Attention, ces valeurs s'héritent (par ex un "sudo -i -u toto ulimit -a" n'affiche pas forcément la même chose qu'un passthru("ulimit -a") exécuté par un pool php qui tourne sous le user toto, qui lui a hérité des valeurs du process php-fpm parent, cf /etc/default/php5-fpm)
  
 ===== Commandes perso ===== ===== Commandes perso =====
  
  
 +  * Pour lister le nb de fichiers/dossiers par dossier du rep courant (cf http://serverfault.com/a/111860) 
 +<code bash>ionice -c3 find | cut -d/ -f2 > /tmp/files.list 
 +uniq -c < /tmp/files.list | sort -n</code>
  
 ==== Scripts ==== ==== Scripts ====
 +
 === afflign.sh - afficher une (ou des) lignes d'un fichier === === afflign.sh - afficher une (ou des) lignes d'un fichier ===
  
Ligne 147: Ligne 210:
  
 ===== Commandes ===== ===== Commandes =====
 +Cf http://ss64.com/bash/ pour une liste de commandes bash et programmes gnu
  
 ==== vrac ==== ==== vrac ====
Ligne 175: Ligne 239:
 </file> </file>
  
-Pour RECOPIER UNE ARBORESCENCE (et son contenu) se placer dans le répertoire de destination et entrer 
-(cd /rep_a_copier ; tar cf - *) | tar xvf -  
-explication dans "le système Linux", p188 
-Apparemment devenu inutile depuis que cp a l'option -R. 
- 
-==== cat ==== 
-<file> 
-Usage: cat [OPTION] [FILE]... 
-Concatenate FILE(s), or standard input, to standard output. 
- 
-  -A, --show-all           equivalent to -vET 
-  -b, --number-nonblank    number nonblank output lines 
-  -e                       equivalent to -vE 
-  -E, --show-ends          display $ at end of each line 
-  -n, --number             number all output lines 
-  -s, --squeeze-blank      never more than one single blank line 
-  -t                       equivalent to -vT 
-  -T, --show-tabs          display TAB characters as ^I 
-  -u                       (ignored) 
-  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB 
-      --help               display this help and exit 
-      --version            output version information and exit 
- 
-With no FILE, or when FILE is -, read standard input. 
-</file> 
-==== tail ==== 
-<file> 
-Usage: tail [OPTION]... [FILE]... 
-Print the last 10 lines of each FILE to standard output. 
-With more than one FILE, precede each with a header giving the file name. 
-With no FILE, or when FILE is -, read standard input. 
- 
-      --retry              keep trying to open a file even if it is 
-                             inaccessible when tail starts or if it becomes 
-                             inaccessible later -- useful only with -f 
-  -c, --bytes=N            output the last N bytes 
-  -f, --follow[={name|descriptor}] output appended data as the file grows; 
-                             -f, --follow, and --follow=descriptor are 
-                             equivalent 
-  -n, --lines=N            output the last N lines, instead of the last 10 
-      --max-unchanged-stats=N 
-                           with --follow=name, reopen a FILE which has not 
-                             changed size after N (default 5) iterations 
-                             to see if it has been unlinked or renamed 
-                             (this is the usual case of rotated log files) 
-      --pid=PID            with -f, terminate after process ID, PID dies 
-  -q, --quiet, --silent    never output headers giving file names 
-  -s, --sleep-interval=S   with -f, each iteration lasts approximately S 
-                             (default 1) seconds 
-  -v, --verbose            always output headers giving file names 
-      --help               display this help and exit 
-      --version            output version information and exit 
- 
-If the first character of N (the number of bytes or lines) is a `+', 
-print beginning with the Nth item from the start of each file, otherwise, 
-print the last N items in the file.  N may have a multiplier suffix: 
-b for 512, k for 1024, m for 1048576 (1 Meg).  A first OPTION of -VALUE 
-or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of 
-the [bkm] suffix multipliers, in which case it is treated like -c VALUE 
-or -c +VALUE. 
- 
-With --follow (-f), tail defaults to following the file descriptor, which 
-means that even if a tail'ed file is renamed, tail will continue to track 
-its end.  This default behavior is not desirable when you really want to 
-track the actual name of the file, not the file descriptor (e.g., log 
-rotation).  Use --follow=name in that case.  That causes tail to track the 
-named file by reopening it periodically to see if it has been removed and 
-recreated by some other program. 
-</file> 
-==== chmod ==== 
-<file> 
-les droits sous UNIX 
-4 == READ (r) 
-2 == WRITE (w) 
-1 == EXECUTE (x) 
-ie 700=rwx------ ou bien 644=rw-r--r-- 
-</file> 
- 
-==== ls ==== 
--l format long 
--h human readable 
--S sort by file size 
--t sort by modification time 
--X sort alphabetically by entry extension 
-==== wc ==== 
- 
-wc -l donne le nb de lignes 
-par exemple 
-cat toto.txt | grep titi | wc -l 
-donne le nb de lignes où 'titi' apparait dans le fichier toto.txt 
-==== rm ==== 
- 
-Pour virer un rep entier 
-rm -Rf repertoire_a_vider 
-si marche pas : rm -Rf repertoire_a_vider/* (elever a la main les fichiers cachés éventuels) puis rmdir repertoire_a_vider 
-==== tar ==== 
- 
-tar cvzf archive.tgz repertoire_a_archiver 
-prends tous les fichiers de repertoire_a_archiver (sous-rep inclus) et les mets dans archive.tgz 
-tar xvzf archive.tgz decompresse l'archive (dans le rep courant) 
- 
-==== gzip ==== 
-<file> 
-usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...] 
- -c --stdout      write on standard output, keep original files unchanged 
- -d --decompress  decompress 
- -f --force       force overwrite of output file and compress links 
- -h --help        give this help 
- -l --list        list compressed file contents 
- -L --license     display software license 
- -n --no-name     do not save or restore the original name and time stamp 
- -N --name        save or restore the original name and time stamp 
- -q --quiet       suppress all warnings 
- -r --recursive   operate recursively on directories 
- -S .suf  --suffix .suf     use suffix .suf on compressed files 
- -t --test        test compressed file integrity 
- -v --verbose     verbose mode 
- -V --version     display version number 
- -1 --fast        compress faster 
- -9 --best        compress better 
- file...          files to (de)compress. If none given, use standard input. 
-</file> 
 ==== find ==== ==== find ====
  
-pour afficher tous les fichiers de + de 20Ko (FreeBSD, 20k autorise sous linux) +pour afficher tous les fichiers de + de 20Ko (FreeBSD, notation 20k autorisée sous linux) 
-find /path \( -size +20000c \) -exec ls -l {} \;+  find /path \( -size +20000c \) -exec ls -l {} \;
 lister les fichier de /tmp de 0 octets de + de 60mn lister les fichier de /tmp de 0 octets de + de 60mn
-find /tmp -size 0 -amin -60 -exec ls -alh {} \;+  find /tmp -size 0 -mmin +60 -exec ls -alh {} \;
  
 pour renommer les mp3 en swf pour renommer les mp3 en swf
-for i in *.mp3; do mv $i ${i%mp3}swf ;done +  for i in *.mp3; do mv $i ${i%mp3}swf ;done
- +
-==== grep ==== +
-<file> +
-Usage: grep [OPTION]... PATRON [FICHIER] ... +
-Search for PATTERN in each FILE or standard input. +
-Example: grep -i 'hello world' menu.h main.c +
- +
-Regexp selection and interpretation: +
-  -E, --extended-regexp     PATRON est une expression regulière étendue +
-  -F, --fixed-regexp        PATRON est une chaîne fixe séparée par des retour de chariot +
-  -G, --basic-regexp        PATRON est une expression régulière de base +
-  -e, --regexp=PATTERN      utiliser le PATRON comme expression régulière +
-  -f, --file=FILE           obtenir le PATRON du FICHIER +
-  -i, --ignore-case         ignorer la distrinction de la casse +
-  -w, --word-regexp         forcer l'appariement du PATRON que sur des mots complets +
-  -x, --line-regexp         forcer l'appariement du PATRON que sur des lignes entières +
-  -z, --null-data           terminer la ligne de données par ZÉRO et +
-                            non pas par un retour de chariot +
- +
-Divers: +
-  -s, --no-messages         supprimer les messages d'erreur +
-  -v, --revert-match        sélectionner les lignes sans concordances +
-  -V, --version             afficher le nom et la version du logiciel +
-      --help                afficher l'aide et quitter +
-      --mmap                utiliser la table de mémoire à l'entrée si possible +
- +
-Output control: +
-  -b, --byte-offset         print the byte offset with output lines +
-  -n, --line-number         print line number with output lines +
-  -H, --with-filename       print the filename for each match +
-  -h, --no-filename         suppress the prefixing filename on output +
-  -q, --quiet, --silent     suppress all normal output +
-      --binary-files=TYPE   assume that binary files are TYPE +
-                            TYPE is 'binary', 'text', or 'without-match'+
-  -a, --text                equivalent to --binary-files=text +
-  -I                        equivalent to --binary-files=without-match +
-  -d, --directories=ACTION  how to handle directories +
-                            ACTION is 'read', 'recurse', or 'skip'+
-  -r, --recursive           equivalent to --directories=recurse. +
-  -L, --files-without-match only print FILE names containing no match +
-  -l, --files-with-matches  only print FILE names containing matches +
-  -c, --count               only print a count of matching lines per FILE +
-  -Z, --null                print 0 byte after FILE name +
- +
-Contrôle du contexte: +
-  -B, --before-context=N    imprimer N lignes du contexte d'en-tête +
-  -A, --after-context=N     imprimer N lignes du contexte finale +
-  -C, --context[=N]         imprimer N lignes (2 par défaut) du contexte +
-                            à moins que -A ou -B ne soit spécifié +
-  -N                        identique à --context=N +
-  -U, --binary              ne pas enlever les caractères CR sur +
-                            les fins de lignes (MS-DOS) +
-  -u, --unix-byte-offsets   afficher les adresses relatives comme si +
-                            aucun CR n'était présent (MS-DOS) +
- +
-`egrep' est équivalent à `grep -E'. `fgrep' est équivalent à `grep -F'. +
-Sans FICHIER, ou si - est utilisé comme nom de FICHIER, la lecture +
-se fait de l'entrée standard. S'il y a moins de 2 FICHIERS, l'option -h +
-est implicite. Termine avec 0 s'il y a concordance avec 1 si aucune. +
-Termine avec 2 s'il y a des erreurs de syntaxe ou de système. +
-</file>+
  
 ==== sed ==== ==== sed ====
  
 fait du rechercher/remplacer sur des streams (avec regexp) : sed 'action/rech/rempl/opt fait du rechercher/remplacer sur des streams (avec regexp) : sed 'action/rech/rempl/opt
 +
 +cf [[sed]]
  
 exemples sur http://iml.univ-mrs.fr/~bac/DESS/sed.html exemples sur http://iml.univ-mrs.fr/~bac/DESS/sed.html
Ligne 388: Ligne 271:
 <file> <file>
 Début de ligne ^ Début de ligne ^
-Fin de ligne $+Fin de ligne         $
 N'importe quel caractère . N'importe quel caractère .
 Zéro ou plusieurs * Zéro ou plusieurs *
Ligne 405: Ligne 288:
   for fich in *.hosts; do digovh.sh `echo $fich | sed 's/.hosts//g'` | grep ko; done   for fich in *.hosts; do digovh.sh `echo $fich | sed 's/.hosts//g'` | grep ko; done
  
-Voir aussi tr qui remplace des bouts de chaine (sans regexp).+Voir aussi tr qui remplace des caractères (sans regexp, lire le man pour les pbs avec l'utf8).
  
-sed est aussi efficace pour afficher une ligne particulière +sed est aussi efficace pour afficher une ligne particulière (ici la ligne 288) 
-  sed -e '288 !d' </etc/apache/httpd.conf +  sed -e '288 !d' <fichier 
-affichera la ligne 288 (ou plutôt n'effacera pas, le "!d", la 288e ligne du fichier en entrée) +ou  
-et +  sed -ne '288 p
 + 
 +ou un bloc de lignes
   sed -e '288,291 !d' </etc/apache/httpd.conf   sed -e '288,291 !d' </etc/apache/httpd.conf
-affichera les lignes 288 à 291.+ou 
 +  sed -ne '288,291 p' </etc/apache/httpd.conf
  
 ==== cut ==== ==== cut ====
Ligne 420: Ligne 306:
 pour récupérer les GUIDuser du log nl3i pour récupérer les GUIDuser du log nl3i
 grep kne nl3i_access.log | grep 'GET /kne/index.php?GUIDUser' | cut -d' ' -f7 | cut -d= -f2 | cut -d'&' -f1 grep kne nl3i_access.log | grep 'GET /kne/index.php?GUIDUser' | cut -d' ' -f7 | cut -d= -f2 | cut -d'&' -f1
- 
-==== php ==== 
-<file> 
-sur ns2230, le binaire php est dans /usr/local/bin/php 
-Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>] 
-       php <file> [args...] 
-  -a               Run interactively 
-  -C               Do not chdir to the script's directory 
-  -c <path>|<file> Look for php.ini file in this directory 
-  -n               No php.ini file will be used 
-  -d foo[=bar]     Define INI entry foo with value 'bar' 
-  -e               Generate extended information for debugger/profiler 
-  -f <file>        Parse <file> Implies `-q' 
-  -h               This help 
-  -i               PHP information 
-  -l               Syntax check only (lint) 
-  -m               Show compiled in modules 
-  -q               Quiet-mode.  Suppress HTTP Header output. 
-  -s               Display colour syntax highlighted source. 
-  -v               Version number 
-  -w               Display source with stripped comments and whitespace. 
-  -z <file>        Load Zend extension <file>. 
-</file> 
  
 ==== mysql ==== ==== mysql ====
Ligne 451: Ligne 314:
  
 Quand on a perdu le mot de pase root: Quand on a perdu le mot de pase root:
-<file>+<code bash>
 /etc/rc.d/init.d/mysql stop /etc/rc.d/init.d/mysql stop
-Restart it with the following:+Restart it with the following:
 /usr/bin/safe_mysqld --skip-grant-tables --skip-networking & /usr/bin/safe_mysqld --skip-grant-tables --skip-networking &
-Connect to the server with:+Connect to the server with:
 mysql mysql mysql mysql
-Enter the following:+Enter the following:
 UPDATE user SET password=PASSWORD('the_new_password') WHERE User="root" AND Host="localhost";  UPDATE user SET password=PASSWORD('the_new_password') WHERE User="root" AND Host="localhost"; 
-Exit the client +Exit the client 
-Shut down the server with:+Shut down the server with:
 mysqladmin shutdown mysqladmin shutdown
-Start the server back up properly with:+Start the server back up properly with:
 /etc/rc.d/init.d/mysql start /etc/rc.d/init.d/mysql start
-</file>+</code>
 trouvé sur http://cobalt-knowledge.sun.com/cgi-bin/kbase.cfg/php/enduser/std_adp.php?p_sid=YjolZNgg&p_lva=&p_refno=011220-000002&p_created=1008866547&p_sp=cF9ncmlkc29ydD0mcF9yb3dfY250PTk5OSZwX3BhZ2U9MQ**&p_li= trouvé sur http://cobalt-knowledge.sun.com/cgi-bin/kbase.cfg/php/enduser/std_adp.php?p_sid=YjolZNgg&p_lva=&p_refno=011220-000002&p_created=1008866547&p_sp=cF9ncmlkc29ydD0mcF9yb3dfY250PTk5OSZwX3BhZ2U9MQ**&p_li=
  
 ex de backup & mail ex de backup & mail
 +
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
Ligne 478: Ligne 342:
 /usr/bin/uuencode $fichier_attache $nom_fichier| mail -s "$sujet" $envoyer_a; /usr/bin/uuencode $fichier_attache $nom_fichier| mail -s "$sujet" $envoyer_a;
 </code> </code>
 +
 +==== mail ====
  
 un simple un simple
- cat fichier_a_joindre | uuencode nom_de_la_piece_jointe | mail -s "sujet" webmaster@editionsdidier.com + cat fichier_a_joindre | uuencode nom_de_la_piece_jointe | mail -s "sujet" dest@domaine.tld
 marche aussi, équivalent à marche aussi, équivalent à
-uuencode fichier_a_joindre nom_de_la_piece_jointe | mail -s "sujet" webmaster@editionsdidier.com +  uuencode fichier_a_joindre nom_de_la_piece_jointe | mail -s "sujet" dest@domaine.tld 
  
 ===== NFS ===== ===== NFS =====
linux/memo_bash.1294913170.txt.gz · Dernière modification : 13/01/2011 11:06 de daniel