วิธีเขียนงาน cron ด้วย wget

ฉันกำลังพยายามเขียนงาน cron ที่ดึงข้อมูลจากเว็บเซิร์ฟเวอร์โดยใช้ wget

เพื่อให้เจาะจงมากขึ้น ฉันกำลังดึงข้อมูลจากศูนย์ข้อมูลแห่งชาติ (NDBC) จากสำนักงานบริหารมหาสมุทรและบรรยากาศแห่งชาติ (NOAA) ข้อมูลนี้เปิดเผยต่อสาธารณะฟรี

คำสั่งต่อไปนี้สร้างไฟล์ .txt ในไดเรกทอรีของฉันสำเร็จ:

wget https://www.ndbc.noaa.gov/data/realtime2/46237.spec

ตอนนี้ฉันกำลังพยายามทำให้คำสั่งนี้เป็นอัตโนมัติทุกๆ 30 นาทีโดยการเขียนงาน cron ฉันใช้ vim เพื่อเขียนโค้ดต่อไปนี้:

0,30 * * * * wget https://www.ndbc.noaa.gov/data/realtime2/46237.spec

ฉันยังตรวจสอบด้วยว่ามีงาน cron นี้อยู่ด้วยการเรียกใช้ "crontab -l"

ไม่มีใครรู้ว่าทำไมสิ่งนี้ถึงทำงานไม่ถูกต้อง?

ป.ล. ฉันยังใหม่กับการเขียนโปรแกรม โปรดแก้ไขฉันหากฉันใช้คำศัพท์ใด ๆ ในทางที่ผิด ขอบคุณ


person Connor Cantrell    schedule 21.12.2018    source แหล่งที่มา


คำตอบ (1)


อาจมีสาเหตุหลายประการ แต่เนื่องจากวิธีการทั่วไปจะเป็นการดีที่จะใช้เส้นทางที่แน่นอนและบังคับให้เปลี่ยนเส้นทางเอาต์พุตของ wget ไปยังไฟล์ที่ระบุ นอกจากนี้ เป็นการดีที่จะเพิกเฉยต่อการตรวจสอบใบรับรองเมื่อเข้าถึง https และ cron ของคุณจะกลายเป็นดังนี้:

0,30 * * * * /usr/bin/wget -O /tmp/my_result.file --no-check-certificate https://www.ndbc.noaa.gov/data/realtime2/46237.spec

เหนือสิ่งอื่นใดคือตัวอย่างเส้นทางและชื่อไฟล์!

แต่แนวทางปฏิบัติที่ดีที่สุดคือการสร้างเชลล์สคริปต์ (ในโฮมไดเร็กตอรี่ของคุณ เป็นต้น) และรันผ่าน cron สคริปต์นี้

person Romeo Ninov    schedule 21.12.2018
comment
$ /usr/sbin/cron เริ่มต้น cron: ไม่สามารถเปิดหรือสร้าง /var/run/cron.pid: การอนุญาตถูกปฏิเสธ - person Connor Cantrell; 26.12.2018
comment
ฉันแก้ไข cron ของฉันแล้ว แต่ยังไม่ได้รับอะไรเลย ฉันรัน /usr/sbin/cron start โปรดดูผลลัพธ์ด้านบน - person Connor Cantrell; 26.12.2018
comment
@ConnorCantrell, cron เริ่มต้นเป็น daemon และโดยปกติแล้วไม่จำเป็นต้องเริ่มด้วยมือเนื่องจากเริ่มต้นเมื่อระบบปฏิบัติการเริ่มทำงาน เพียงรอและตรวจสอบบันทึก - person Romeo Ninov; 26.12.2018