ทำไม cron บันทึกที่ / รูทเมื่อควรที่ / var / www


1

ทำไม cron ของฉัน */1 * * * * /usr/bin/php /var/www/query/query.php &> /root/querylog.log บันทึกเอาต์พุต query.php ใน / root / โฟลเดอร์?

(สคริปต์นี้จะบันทึก * .txt ที่ตำแหน่งของมัน)

It should do so at /var/www

เจ้าของโฟลเดอร์ของ var/www/query/ คือ web-data.

ทำงานบน Debian Squeeze 6.0


จากความอยากรู้ผลลัพธ์ของ query.php คืออะไร บางทีคุณควรระบุเส้นทางที่ถูกต้องของผลลัพธ์ในรหัส PHP ของคุณ?

cron ผู้ใช้คืออะไร
danio

คำตอบ:


3

querylog.log ไฟล์ถูกบันทึกใน /root ไดเรกทอรีเพราะนั่นคือสิ่งที่คุณได้ระบุไว้ว่าควรจะถูกบันทึกไว้

หากคุณต้องการเปลี่ยนตำแหน่งเพียงแก้ไขเส้นทางไปยังตำแหน่งที่คุณต้องการเช่น /var/www/querylog.log.


บันทึก output.php คือ 2 * .txt ไฟล์ เมื่อถูกไล่ออกที่เครื่องของฉันพวกมันจะถูกสร้างขึ้นที่ dir เดียวกับ query.php แต่ cron จะช่วยพวกเขาที่นั่นบันทึกนั้นถูกบันทึกไว้ - ทำไม? (เอาท์พุทและบันทึกไฟเป็น 2 สิ่งแยกต่างหาก btw)
Szymon Toda

ฉันคิดว่าเขาไม่ได้พูดถึงไฟล์. log แต่เอาท์พุทของ query.php, log ไปในรากตามที่เขาต้องการให้ทำ

1

สิ่งนี้เกิดขึ้นเนื่องจากงาน cron ที่ถูกเรียกใช้ในฐานะผู้ใช้รูทดังนั้นจะถูกดำเนินการที่ $ HOME ของผู้ใช้รูทนั่นคือ /root.

หากคุณต้องการให้งาน cron รันในตำแหน่งอื่นเพื่อสร้างผลลัพธ์ที่นั่นคุณควรย้ายไปที่นั่นก่อนเช่นการเขียนสคริปต์ที่ทำทุกอย่างและเรียกใช้จาก cron:

my_query.bash

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

และเส้น cron จะกลายเป็น

*/1 * * * * /bin/bash /path/to/script/my_query.bash

ฉันไม่เข้าใจคะแนนโหวตที่ลดลงของคำตอบนี้: ดูเหมือนว่ากำลังเกิดอะไรขึ้น (query.php บันทึกเอาต์พุตไปยังไดเรกทอรีที่รันจาก cron รันเป็นรูทดังนั้นสคริปต์จะทำงานใน. รู
danio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.