Dlaczego cron zapisuje w / root, a kiedy w / var / www?

1

Dlaczego mój cron */1 * * * * /usr/bin/php /var/www/query/query.php &> /root/querylog.logzapisuje dane wynikowe query.php w folderze / root /?

(ten skrypt powinien zapisać * .txt w swojej lokalizacji)

It should do so at /var/www

Właścicielem folderu var/www/query/jest web-data.

Uruchamianie go w Debian Squeeze 6.0

Szymon Toda
źródło
Z ciekawości jaki jest wynik zapytania query.php? Może powinieneś podać poprawną ścieżkę wyjścia w kodzie php?
Jakim użytkownikiem jest uruchomiony cron?
danio

Odpowiedzi:

3

querylog.logPlik jest zapisywany w /rootkatalogu, ponieważ to jest dokładnie, gdzie zostały określone powinny być zapisane.

Jeśli chcesz zmienić jego lokalizację, po prostu edytuj ścieżkę do wybranej lokalizacji, np /var/www/querylog.log.

Michael Hampton
źródło
zapisuje dane wyjściowe query.php to 2 pliki * .txt. Gdy są uruchamiane na mojej lokalnej maszynie, są tworzone w tym samym katalogu co query.php. Ale cron je tam zapisuje, gdzie zapisywany jest dziennik - dlaczego? (wyjście i ogień z bali to dwie osobne rzeczy)
Szymon Toda
Myślę, że nie mówi on o pliku .log, ale raczej o wynikach zapytania query.php, log przechodzi do katalogu głównego tak, jak tego chce.
1

Dzieje się tak, ponieważ zadanie cron jest uruchamiane jako użytkownik root, więc jest wykonywane w $ HOME użytkownika root, tj /root.

Jeśli chcesz, aby zadanie cron działało w innym miejscu, aby generować tam dane wyjściowe, powinieneś się tam najpierw przenieść, np. Napisać skrypt, który robi wszystko i uruchomić go z crona:

my_query.bash

cd /var/www
/var/www/query/query.php &> /root/querylog.log

I staje się linia cron

*/1 * * * * /bin/bash /path/to/script/my_query.bash
iamc
źródło
Nie rozumiem głosów negatywnych za tę odpowiedź: wydaje się, że mówi dokładnie, co się dzieje (query.php zapisuje dane wyjściowe w katalogu, z którego jest uruchamiane, cron uruchamia je jako root, więc skrypt działa w .roo
danio