ฉันมีงาน cron ที่กำหนดให้ทำงานทุกวันนอกเหนือจากการเปลี่ยนกำหนดเวลามีวิธีอื่นที่จะทำการทดสอบคำสั่งทันทีเพื่อดูว่ามันทำงานได้ตามที่ตั้งใจหรือไม่?
cronรันมันอาจได้รับผลกระทบจาก ENV หรือสิ่งเฉพาะเปลือก ( ~ขยาย) หรือสิ่งที่เป็นเจ้าของและสิทธิ์หรือ ...
ฉันมีงาน cron ที่กำหนดให้ทำงานทุกวันนอกเหนือจากการเปลี่ยนกำหนดเวลามีวิธีอื่นที่จะทำการทดสอบคำสั่งทันทีเพื่อดูว่ามันทำงานได้ตามที่ตั้งใจหรือไม่?
cronรันมันอาจได้รับผลกระทบจาก ENV หรือสิ่งเฉพาะเปลือก ( ~ขยาย) หรือสิ่งที่เป็นเจ้าของและสิทธิ์หรือ ...
คำตอบ:
เท่าที่ฉันรู้ไม่มีทางที่จะทำเช่นนั้นโดยตรงเพราะ cron มีจุดประสงค์พิเศษ - การรันคำสั่งกำหนดการในเวลาที่กำหนด ดังนั้นสิ่งที่ดีที่สุดคือการสร้างรายการ crontab ด้วยตนเองหรือเขียนสคริปต์ที่ลบและรีเซ็ตสภาพแวดล้อม
คุณสามารถบังคับให้ crontab รันด้วยคำสั่งต่อไปนี้:
run-parts /etc/cron.daily
run-parts /etc/cron.dailyเป็น ฉันกำลังต่อสู้กับข้อผิดพลาดนี้ในขณะที่สคริปต์ของฉันจะทำงานได้ดีrun-partsแต่ล้มเหลวเมื่อทำงานภายใต้ผู้ใช้ cron
คุณสามารถจำลองสภาพแวดล้อม cron ผู้ใช้ตามที่อธิบายใน"วิ่งงาน cron ตนเองและทันที" สิ่งนี้จะช่วยให้คุณสามารถทดสอบงานได้เมื่อมันจะทำงานในฐานะผู้ใช้ cron
ตัดตอนมาจากลิงค์:
ขั้นตอนที่ 1 : ฉันวางบรรทัดนี้ชั่วคราวใน crontab ของผู้ใช้:
* * * * * /usr/bin/env > /home/username/tmp/cron-env
จากนั้นนำออกมาเมื่อไฟล์ถูกเขียน
ขั้นตอนที่ 2 : ทำให้ตัวเองเป็นสคริปต์ทุบตี run-as-cron เล็กน้อยที่มี:
#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"
ดังนั้นในฐานะผู้ใช้ที่เป็นปัญหาฉันสามารถ
run-as-cron /the/problematic/script --with arguments --and parameters