Crontab - เรียกใช้ในไดเรกทอรี


170

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

อย่างไรก็ตามฉันสามารถบอกให้ crontab เรียกใช้จากไดเรกทอรีเฉพาะได้หรือไม่

คำตอบ:


318

งานทั้งหมดจะถูกดำเนินการโดยเชลล์ดังนั้นให้เริ่มต้นข้อมูลโค้ดโดยคำสั่งเพื่อเปลี่ยนไดเรกทอรี

cd /path/to/directory && ./bin/myapp

เกี่ยวกับการใช้ของ&&แทน;: ปกติก็ไม่ได้สร้างความแตกต่าง แต่ถ้าcdคำสั่งล้มเหลว (เช่นเพราะไดเรกทอรีไม่อยู่) กับ&&แอพลิเคชันที่ไม่ได้ดำเนินการในขณะที่มี;ก็ดำเนินการ ( แต่ไม่ได้อยู่ในไดเรกทอรีที่ตั้งใจไว้ )


แทนที่จะเพิ่มคำตอบที่ซ้ำกันส่วนใหญ่ให้ฉันแค่เพิ่มว่าคุณสามารถเลือกเปลือกที่ (ถ้าคุณต้องการทุบตีมากกว่า SH ตัวอย่าง) โดยการตั้งค่าSHELLใน crontab ของคุณ
Edd Steel

12
+1 วิธีแก้ปัญหาของคำถามที่เกี่ยวข้องอื่น ๆ คือเขียนสคริปต์ใหม่ด้วยพา ธ สัมบูรณ์ นี่คือสิ่งที่ฉันต้องการ
Conrad.Dean

2
คุณสามารถใช้เซมิโคลอน;แทนแอมป์แซนด์คู่&&ได้หรือไม่ และทำไม?
Joshua Pinter

32
@JoshPinter ปกติมันไม่ได้สร้างความแตกต่าง แต่ถ้าcdคำสั่งล้มเหลว (เช่นเนื่องจากไม่มีไดเรกทอรี) ด้วย&&จะไม่มีการดำเนินการกับแอปพลิเคชัน ด้วย;มันจะดำเนินการ (แต่ไม่ได้อยู่ในไดเรกทอรีตั้งใจ)
Gilles 'หยุดความชั่วร้าย'

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