Qu'est-ce que /dev/null 2>&1?
j'ai trouvé ce morceau de code dans /etc/cron.quotidien / apf
#!/bin/bash
/etc/apf/apf -f >> /dev/null 2>&1
/etc/apf/apf -s >> /dev/null 2>&1
c'est Flush et recharger le pare-feu.
Je ne comprends pas la partie >> /dev/null 2>&1
.
Quel est le but d'avoir ceci dans le cron? Il est primordial de mes règles de pare-feu. Puis-je retirer ce travail cron en toute sécurité?
7 réponses
>> /dev/null
redirige la sortie standard ( stdout
) vers /dev/null
, ce qui l'écarte.
(le >>
semble en quelque sorte superflu, puisque >>
signifie ajouter alors que >
signifie tronquer et écrire, et soit ajouter ou écrire à /dev/null
a le même effet net. J'utilise d'habitude >
pour cette raison.)
2>&1
redirige l'erreur standard ( 2
) vers la sortie standard ( 1
), qui l'écarte également puisque la sortie standard a déjà été redirigée.
break >> /dev/null 2>&1
statement into parts:
Partie 1: >>
redirection de sortie
Ce est utilisé pour rediriger la sortie de programme et ajouter la sortie à la fin du fichier. plus...
Partie 2: /dev/null
dossier spécial
This est un Pseudo-dispositifs dossier spécial .
commande ls -l /dev/null
vous donnera les détails de ce fichier:
crw-rw-rw-. 1 root root 1, 3 Mar 20 18:37 /dev/null
avez-vous observé crw
? Ce qui signifie qu'il s'agit d'un pseudo-périphérique fichier qui est de caractère-spécial-fichier type qui fournit un accès série.
/dev/null
accepte et écarte toute entrée; ne produit aucune sortie (renvoie toujours une indication de fin de fichier sur une lecture). Référence: Wikipedia
Partie 3: 2>&1
descripteur de fichier
chaque fois que vous exécutez un programme, le système d'exploitation ouvre toujours trois dossiers STDIN
, STDOUT
, et STDERR
comme nous savons chaque fois qu'un dossier est ouvert, le système d'exploitation (de noyau ) renvoie un entier non négatif appelé descripteur de fichier . Le descripteur de fichier pour ces fichiers est 0, 1, 2 respectivement.
Donc 2>&1
dit simplement rediriger STDERR
à STDOUT
&
signifie ce qui suit est un descripteur de fichier, pas un nom de fichier.
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 voulez ne produire aucune sortie, même en cas d'erreur produite dans le terminal. Pour expliquer plus clairement, considérons l'exemple suivant:
$ ls -l > /dev/null
pour le au-dessus de la commande, aucune sortie n'a été imprimée dans le terminal, mais que faire si cette commande produit une erreur:
$ ls -l file_doesnot_exists > /dev/null
ls: cannot access file_doesnot_exists: No such file or directory
malgré que je redirige la sortie vers /dev/null
, elle est imprimée dans le terminal. C'est parce que nous ne sommes pas rediriger la sortie d'erreur /dev/null
, afin de rediriger la sortie d'erreur ainsi, il est nécessaire d'ajouter 2>&1
$ ls -l file_doesnot_exists > /dev/null 2>&1
c'est la façon d'exécuter un programme tranquillement, et cacher toute sa sortie.
/dev/null
est un objet spécial du système de fichiers qui jette tout ce qui y est écrit. Rediriger un flux vers lui signifie cacher une sortie.
la partie 2>&1
signifie" rediriger à la fois les flux de sortie et d'erreur". Même si votre programme écrit stderr
, cette sortie ne sera pas affichée.
/dev/null
- fichier standard qui écarte tout ce que vous lui écrivez, mais les rapports
que l'opération d'écriture a réussi.
1
est stdout et 2
est stderr.
2>&1
redirige stderr vers stdout. &1
indique le descripteur de fichier(stdout), sinon(si vous utilisez juste 1
) vous redirigerez stderr vers le fichier nommé 1
. [any command] >>/dev/null 2>&1
redirige tous les stderr vers stdout, et écrit tout cela à /dev/null
.
j'utilise >> /dev/null 2>&1
pour une tâche cron, tâche cron va faire le travail, mais ne pas envoyer le rapport à mon e-mail.
autant que je sache, ne pas supprimer /dev/null
, il est utile surtout lorsque vous exécutez cpanel, peut être utilisé pour jeter cronjob rapport.
comme décrit par les autres, écrire à /dev/null élimine la sortie d'un programme. Habituellement cron envoie un email pour chaque sortie du processus commencé avec un cronjob. Ainsi, en écrivant la sortie à /dev / null vous empêchez d'être spammé si vous avez spécifié votre adresse dans cron.
Modifier /etc/conf.apf
. Set DEVEL_MODE="0"
. DEVEL_MODE
mis à 1
ajoutera un travail cron pour arrêter apf après 5 minutes.