Trouvé un script sur mon cron.monthly, je me demande ce que ça fait?


3

Je suis nouveau dans la programmation bash, désolé si cela peut être une sorte de question stupide. J'ai trouvé un script sur mon serveur et j'essaie de comprendre chaque ligne:

#!/bin/sh
#
# man-db cron weekly

set -e

if ! [ -d /var/cache/man ]; then
    # Recover from deletion, per FHS.
    mkdir -p /var/cache/man
    chown man:root /var/cache/man || true
    chmod 2755 /var/cache/man
fi

# regenerate man database
if [ -x /usr/bin/mandb ]; then
# --pidfile /dev/null so it always starts; mandb isn't really a daemon,
# but we want to start it like one.
start-stop-daemon --start --pidfile /dev/null \
          --startas /usr/bin/mandb --oknodo --chuid man \
          -- --quiet
fi

exit 0

Certaines choses que je ne comprends pas comme

set -e

J'ai lu à ce sujet qu'il "vérifie" vos commandes. Donc, il donne des avertissements ou une exception en cas de problème? Ou un rapport d'erreur plus détaillé?

if ! [ -d /var/cache/man ]; then OR
if [ -x /usr/bin/mandb ]; then

Ce que je ne comprends pas, ce sont les commandes "-d" ou "-x" de la clause if, à mon humble avis, il manque quelque chose.

chown man:root /var/cache/man || true

Je ne comprends pas la dernière partie, quelle est la raison de cela "OU VRAI".

Peut-être que quelqu'un peut m'aider?

tia && regards noircc

Réponses:


2

set -e # Quitter immédiatement si une commande quitte avec un statut différent de zéro.

L'option -d dans le test if est vraie si le chemin est un répertoire. ! nie le test.

    if ! [ -d /var/cache/man ]  # true if /var/cache/man is not a directory
    if [ -x /usr/bin/mandb ]    # true if /usr/bin/mandb is executable

Concernant chown man:root /var/cache/man || true- le code à la droite du || est activé si la commande chown précédente renvoie un état de sortie différent de zéro. Si la commande chown a échoué, la valeur true est évaluée. Ceci empêche le script d'échouer - sinon, le statut d'erreur non nulle chown le quitterait à cause de l'option -e.


3

En bash, le -dcommutateur est un "vérifier si le répertoire existe" et -xest pour vérifier les fichiers. Set -eindique au script de quitter si des commandes échouent (par exemple, quitter avec un statut différent de zéro).

L' || trueempêche une réponse non nulle de chown (si la commande échoue).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.