J'ai trouvé ce morceau de code dans /etc/cron.daily/apf
#!/bin/bash
/etc/apf/apf -f >> /dev/null 2>&1
/etc/apf/apf -s >> /dev/null 2>&1
Il purge et recharge le pare-feu.
Je ne comprends pas la >> /dev/null 2>&1
partie.
Quel est le but d'avoir cela dans le cron? Il remplace mes règles de pare-feu. Puis-je supprimer ce travail cron en toute sécurité?
shell
syntax
posix
io-redirection
repos
la source
la source
>&- 2>&-
.2>&1 > /dev/null
le même que> /dev/null 2>&1
? Cela me semble plus naturel .../dev/null
—stderr sera toujours sortie. Essayez l'outil sur gist.github.com/zigg/344361751c0110419b0fRéponses:
>> /dev/null
redirige la sortie standard (stdout
) vers/dev/null
, qui la rejette.(Le
>>
semble en quelque sorte superflu, car>>
signifie ajouter tandis que>
signifie tronquer et écrire, et l'ajout ou l'écriture à/dev/null
a le même effet net. Je l'utilise généralement>
pour cette raison.)2>&1
redirige l'erreur standard (2
) vers la sortie standard (1
), qui la supprime également car la sortie standard a déjà été redirigée.la source
&
symbole indique là-dedans2>&1
.When redirecting data streams, & means whatever follows is a file descriptor, not a filename.
Décomposons la
>> /dev/null 2>&1
déclaration en plusieurs parties:Partie 1:
>>
redirection de sortieCeci est utilisé pour rediriger la sortie du programme et ajouter la sortie à la fin du fichier. Plus...
Partie 2:
/dev/null
dossier spécialIl s'agit d'un fichier spécial Pseudo-devices .
La commande
ls -l /dev/null
vous donnera des détails sur ce fichier:Avez-vous observé
crw
? Ce qui signifie qu'il s'agit d'un fichier pseudo-périphérique de type fichier de caractères spéciaux qui fournit un accès série.Partie 3:
2>&1
descripteur de fichierChaque fois que vous exécutez un programme, le système d'exploitation ouvre toujours trois fichiers, entrée standard, sortie standard et erreur standard comme nous le savons chaque fois qu'un fichier est ouvert, le système d'exploitation (du noyau ) renvoie un entier non négatif appelé descripteur de fichier . Le descripteur de fichier de ces fichiers est 0, 1 et 2, respectivement.
Dit donc
2>&1
simplement rediriger l'erreur standard vers la sortie standard.En bref, en utilisant cette commande, vous dites à votre programme de ne pas crier pendant l'exécution.
Quelle est l'importance d'utiliser
2>&1
?Si vous ne voulez pas produire de sortie, même en cas d'erreur produite dans le terminal. Pour expliquer plus clairement, considérons l'exemple suivant:
Pour la commande ci-dessus, aucune sortie n'a été imprimée dans le terminal, mais que se passe-t-il si cette commande génère une erreur:
Bien que je redirige la sortie vers
/dev/null
, elle est imprimée dans le terminal. C'est parce que nous ne redirigeons pas la sortie d'erreur vers/dev/null
, donc pour rediriger également la sortie d'erreur, il est nécessaire d'ajouter2>&1
:la source
>
est un opérateur de redirection, tout ce qui suit l'opérateur de redirection devrait être un emplacement de fichier ajoutant&
avant1
indique que ce n'est pas un fichier où l'application doit rediriger la sortie mais un descripteur de fichier. J'apprécierai si quelqu'un peut ajouter plus de détails sur ce commentaire.C'est la façon d'exécuter un programme en silence et de masquer toute sa sortie.
/dev/null
est un objet système de fichiers spécial qui supprime tout ce qui y est écrit. Rediriger un flux vers celui-ci signifie cacher la sortie de votre programme.La
2>&1
partie signifie "rediriger le flux d'erreur vers le flux de sortie", donc lorsque vous redirigez le flux de sortie, le flux d'erreur est également redirigé. Même si votre programme écritstderr
maintenant, cette sortie sera également ignorée.la source
2>&1
réoriente en faitstderr
àstdout
. La différence entre cela et ce que vous avez affirmé est mieux illustrée en échangeant l'ordre des redirections, par exemple2>&1 >/dev/null
./dev/null
est un fichier standard qui rejette tout ce que vous y écrivez, mais signale que l'opération d'écriture a réussi.1
est une sortie standard et2
une erreur standard.2>&1
redirige l'erreur standard vers la sortie standard.&1
indique un descripteur de fichier (sortie standard), sinon (si vous utilisez uniquement1
) vous redirigerez l'erreur standard vers un fichier nommé1
.[any command] >>/dev/null 2>&1
redirige toutes les erreurs standard vers la sortie standard et écrit tout cela dans/dev/null
.la source
J'utilise
>> /dev/null 2>&1
pour un cronjob silencieux. Un cronjob fera le travail, mais n'enverra pas de rapport à mon email.Pour autant que je sache, ne retirez pas
/dev/null
. Il est utile, en particulier lorsque vous exécutez cPanel , il peut être utilisé pour les rapports de cronjob à jeter.la source
Comme décrit par les autres, écrire dans / dev / null élimine la sortie d'un programme. En général, cron envoie un e-mail pour chaque sortie du processus démarré par un cronjob. Ainsi, en écrivant la sortie dans / dev / null, vous évitez d'être spammé si vous avez spécifié votre adresse dans cron.
la source
Modifier
/etc/conf.apf
. SetDEVEL_MODE="0"
.DEVEL_MODE
réglé sur1
ajoutera une tâche cron pour arrêter l'apf après 5 minutes.la source