2009-08-24 13 views
14

J'ai donc un script que je débogue avec un tas d'instructions d'écho. Ceci est exécuté toutes les 3 minutes sur mon serveur par cron, et je laisse parfois les instructions d'écho là-dedans. Ils ne vont pas à un navigateur, ils vont juste ... n'importe où?Si je fais écho à une déclaration et que personne ne l'entend, est-ce que ça se répercute? (PHP cron travail question)

C'est une question vague je suppose, mais que se passe-t-il quand il n'y a pas d'utilisateur final ou de sortie pour une déclaration d'écho? Est-ce que ça ébranle la mémoire? Est-ce que ça disparaît? J'apprécierais toute aide pour comprendre cela.

+2

Renversée pour le titre poésie. :) (Et intérêt mutuel, mais peu importe.) – agorenst

+0

Oui, je suis d'accord avec Agor, joli titre! – DGM

+1

Vous obtenez des points pour la poésie du titre? !! Eh bien, oui, c'est beaucoup mieux que certains que j'ai vu. – pavium

Répondre

10

La réponse est oui, et la sortie est envoyé par courrier au compte qui exécute la tâche cron. Vous pouvez modifier dans le fichier crontab en définissant une option « mailto = accountname », comme cet exemple le fichier Cron:

MAILTO=root 

# run a script every hour 
01 * * * * root run-parts /etc/cron.hourly 
#etc. 

Toute sortie de la tâche cron ci-dessus serait envoyé par la poste à l'utilisateur root. Comme Mike B affiché, vous pouvez aussi simplement rediriger la sortie ailleurs sur la ligne de tâche à l'aide de l'opérateur >:

01 * * * * php testscript.php > /var/log/logfile.log 

dans lequel Cron cas ne le voit pas et ne pas envoyer un e-mail. En fin de compte, si vous laissez des instructions echo dans un script PHP et que vous les définissez comme un travail cron, vous commencerez à recevoir des courriels du démon cron.

+3

Vous pouvez rediriger vers '/ dev/null' si vous ne voulez pas conserver la sortie. Il sera toujours imprimé, mais il sera immédiatement supprimé, ne conservant ainsi aucun souvenir. – troelskn

+0

@troelskn - certainement une stratégie populaire. – zombat

+2

J'ai donc trouvé que j'utilisais 75% de mon quota d'espace disque sur ce serveur, et regardé et regardé .... et trouvé 3 Go de courrier dans le répertoire maildir. Alors voilà! –

9

Oui, ils sont sortis mais à personne en particulier (Voir zombat's answer, il est envoyé au propriétaire de la crontask). Vous pouvez écrire la sortie de votre script dans un fichier via:

php myscript.php > /var/log/cronlog.log 

(En supposant que vous utilisez Linux puisque vous avez dit cron et tâche ne prévu)

+0

Et sont-ils tenus en mémoire ou quelque chose de mal comme ça? Ou oublie-t-on de commenter quelques échos sans importance? –

+1

@Alex: Ils vont dans le tampon STDOUT, donc oui, ils sont gardés en mémoire. Mais il est périodiquement rincé et a une taille maximale. La fuite de mem ne serait pas vos déclarations d'écho. – Eric

+0

Comme indiqué par zombat, la sortie est envoyée au propriétaire du travail cron. C'est généralement un compte système, et donc parfois difficile à trouver si vous avez des adresses virtuelles et autres. – DGM