Score:1

งาน cron ของฉันไม่ทำงานเมื่อพยายามบันทึกเอาต์พุตสคริปต์เป็นไฟล์ txt

ธง ng

ฉันกำลังพยายามให้สคริปต์ไพทอนทำงานวันละสองครั้ง ครั้งแรกเวลา 8.00 น. และอีกครั้งเวลา 20.00 น. ความหวังของฉันคือการจัดเก็บเอาต์พุตของสคริปต์ไปยังไฟล์ txt บนคอมพิวเตอร์ของฉันชื่อ LOG_{date-time}.txt ดังนั้นฉันจึงสามารถดูไฟล์ "บันทึก" ได้ในกรณีที่มีสิ่งผิดปกติเกิดขึ้นกับสคริปต์ ฉันตั้งค่างาน cron ต่อไปนี้:

0 8,20 * * * python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(วันที่ +"%d-%m-%Y")".txt

หลังจากตั้งค่า cron job แล้ว ฉันตรวจสอบสคริปต์หลัง 20:00 น. และสังเกตเห็นว่าสคริปต์ของฉันยังไม่ทำงาน (ฉันได้ตั้งค่าให้อัปเดตไฟล์สเปรดชีตและทิ้งการประทับเวลาไว้หลังจากการอัปเดตแต่ละครั้ง)

ฉันได้แก้ไขปัญหาเล็กน้อยด้วยตัวเองและพบว่าถ้าฉันรันงาน cron โดยไม่มีส่วนเอาต์พุตของงาน มันจะใช้งานได้ (ฉันยังพบว่าบันทึกงาน cron แสดงเป็น UTC แทนที่จะเป็นเวลาระบบของฉัน แต่นั่น เป็นปัญหาสำหรับเวลาอื่น):

0 8,20 * * * python3 /script/working/directory/Script.py

มีบางอย่างที่ฉันขาดหายไปที่นี่หรือไม่? สิ่งนี้ไม่ควรเก็บสคริปต์ที่ส่งออกไปยังไฟล์หรือไม่ ฉันค่อนข้างใหม่กับสิ่งต่าง ๆ ที่นี่และพยายามเรียนรู้ในขณะที่ทำสิ่งนี้ แต่ฉันไม่แน่ใจว่าจะทำอย่างไรกับสิ่งนี้จะเป็นการดีหากสามารถจัดเก็บผลลัพธ์ของสคริปต์ของฉันเพื่อจุดประสงค์ในการดีบัก

Wayne Vosberg avatar
bd flag
ลองลบเครื่องหมายคำพูดพิเศษออก เช่น `/LOG_$(date+'%d-%m-%Y').txt` นอกจากนี้ คุณหมายถึง `>>` แทน `>` หรือไม่
Wayne Vosberg avatar
bd flag
ความคิดอื่น - ตรวจสอบให้แน่ใจว่าผู้ใช้ที่รันงาน cron สามารถเข้าถึง `/script/working/directory/logs`
hr flag
อักขระ `%` เป็นอักขระพิเศษใน crontab และต้องใช้ Escape ดูตัวอย่าง [ไม่สามารถเรียกใช้คำสั่งใน cron](https://askubuntu.com/questions/829818/unable-to-execute-command-in-cron)
Pocketmouse avatar
ng flag
ฉันจัดรูปแบบผิดเล็กน้อย มันควรจะเป็น `/"LOG_$(date +'%d-%m-%Y').txt"`
Score:1
ธง cn

สาเหตุหลักที่ฉันสันนิษฐานได้คือไม่มีเส้นทางบันทึกหรือคุณไม่มีสิทธิ์เขียนไปยังเส้นทางบันทึก

ลองดำเนินการคำสั่งด้วยตนเองแทน cron

python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(date +"%d-%m-%Y")".txt

คุณมักจะเห็นข้อผิดพลาดในเทอร์มินัลของคุณ

Pocketmouse avatar
ng flag
กรณีนี้ไม่ได้.
Pocketmouse avatar
ng flag
ฉันเข้าไปแก้ไขและเพิ่งรู้ว่ายังไม่ได้บันทึก ตอนนี้แก้ไขไม่ได้: กรณีนี้ไม่ได้. เมื่อฉันเรียกใช้สคริปต์ด้วยตนเองทั้งในบรรทัดคำสั่งและผ่านไฟล์ .sh มันทำงานได้โดยไม่มีปัญหาฉันได้ตั้งค่าทั้ง `Script.py` และ `Script.sh` ให้มีสิทธิ์ปฏิบัติการด้วย `chmod +x script.py` ฉันได้ตรวจสอบเพิ่มเติมและพบว่าหากฉันใช้คำขอ "รับ" ฉันต้องมีสภาพแวดล้อมเสมือนจริงที่ต้องเรียกใช้ใน cron เพื่อให้สคริปต์นี้ทำงาน ฉันไม่แน่ใจว่าสิ่งนี้หมายถึงอะไรหรือจะใช้งานอย่างไรในปัจจุบัน แต่อย่างที่ฉันบอกว่าฉันกำลังอ่านอยู่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา