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

noircc
la source

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.

suspect
la source
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).

Nathan C
la source