งาน cron สำหรับราง: แนวปฏิบัติที่ดีที่สุด?


295

วิธีที่ดีที่สุดในการใช้งานที่กำหนดเวลาไว้ในสภาพแวดล้อม Rails คืออะไร Script / วิ่ง? คราด? ฉันต้องการทำงานทุกสองสามนาที


149
สำหรับผู้ที่มาที่นี่จาก Google ให้มองหาคำตอบที่ดีกว่า
jrdioko

4
เมื่อใดก็ตามที่คำตอบดูเหมือนสมเหตุสมผลกว่าคำตอบที่ยอมรับซึ่งเป็นแฮ็กเก่า
Rob

2
โปรดระวังด้วยว่าอย่างน้อยหนึ่งคำตอบจะถือว่าคุณได้ติดตั้งอัญมณีไว้แล้ว
Tass

คู่ของ (สิ่งที่ผมพบจะ) แนวปฏิบัติที่ดีมีรายละเอียดที่นี่wisecashhq.com/blog/writing-reliable-cron-jobs
Thibaut Barrere

ในหลายกรณีงาน cron เป็นกลิ่นเหม็น เขียนตารางเวลาได้ดีขึ้นผ่าน sidekiq / resque (หรือผู้ทำงานเบื้องหลังอื่น ๆ ) หรือเขียน daemon (ทำงานได้น้อยกว่าและสามารถตรวจสอบได้) งานของ Cron มีสิ่งเลวร้ายอย่างน้อย: 1) การล็อคอินสแตนซ์หนึ่ง ๆ เป็นความเจ็บปวด 2) การตรวจสอบไม่สามารถทำได้อย่างง่ายดาย 3) การจัดการข้อยกเว้นควรเขียนด้วยตนเองอีกครั้ง; 4) ไม่ใช่เรื่องง่ายที่จะเริ่มต้นใหม่; 5) ปัญหาทั้งหมดข้างต้นสามารถแก้ไขได้อย่างง่ายดายโดยพนักงานพื้นหลัง
Dmitry Polushkin

คำตอบ:


110

ฉันใช้วิธีการคราด (ตามที่herokuสนับสนุน)

ด้วยไฟล์ชื่อ lib / task / cron.rake ..

task :cron => :environment do
  puts "Pulling new requests..."
  EdiListener.process_new_messages
  puts "done."
end

ในการดำเนินการจากบรรทัดคำสั่งนี่เป็นเพียง "rake cron" คำสั่งนี้สามารถวางบนระบบปฏิบัติการ cron / task scheduler ได้ตามต้องการ

อัปเดตนี่เป็นคำถามและคำตอบที่ค่อนข้างเก่า! ข้อมูลใหม่บางส่วน:

  • บริการ c heroku ที่ฉันอ้างอิงได้ถูกแทนที่ด้วย Heroku Scheduler
  • สำหรับงานที่ต้องทำบ่อย ๆ (โดยเฉพาะในกรณีที่คุณต้องการหลีกเลี่ยงค่าใช้จ่ายในการเริ่มต้นสภาพแวดล้อมของ Rails) วิธีที่ฉันต้องการคือการใช้ระบบ cron เพื่อเรียกสคริปต์ที่จะ (a) กระตุ้น webhook API ที่ปลอดภัย / เป็นส่วนตัว หรือ (b) จัดคิวงานบนระบบคิวที่คุณเลือกโดยตรง

รายการ cron ควรเป็นเช่นไรในกรณีนี้ระบบปฏิบัติการจึงรู้เส้นทางที่ถูกต้องไปยังภารกิจคราด
jrdioko

13
หมายเหตุ: วันนี้ฉันใช้ทุกครั้ง (ดูคำตอบของ Jim Garvin) แต่รายการ cron ดิบเพื่อใช้งาน rake จะเป็นเช่น: 30 4 * * * / bin / bash -l -c 'cd / opt / railsapp && RAILS_ENV = การผลิตคราด cron
--silent

1
คุณเรียกสิ่งนี้จากคอนโซลได้อย่างไร ฉันไม่ได้load "#{Rails.root}/lib/tasks/cron.rake"และrake cronแต่มี NameError: ตัวแปรท้องถิ่นไม่ได้กำหนดหรือวิธี `cron สำหรับหลัก: วัตถุ
B เจ็ด

3
ปัญหาด้วยวิธีนี้คือการ:environmentพึ่งพา เรามีโปรแกรมที่มีทางรถไฟหนักมากที่ใช้เวลานานในการเริ่มต้นขึ้นคราดของเราจะเรียกว่าทุกนาทีและใช้ทรัพยากรมากขึ้นเริ่มต้นขึ้นสภาพแวดล้อมทางรถไฟที่ดำเนินการงาน ฉันชอบที่จะมีอยู่แล้วเริ่มต้นขึ้นสภาพแวดล้อมทางรถไฟที่จะเรียกว่าผ่าน cron ที่จะต้องมีบางสิ่งบางอย่างระหว่างควบคุมวิธีการและสภาพแวดล้อมในการเสาะหาหนึ่ง
fguillen

ระยะเวลาของงานนี้คืออะไร? ฉันกำลังใช้เงื่อนไข if ฉันต้องการที่จะรู้ว่ามันทำงานเป็นประจำ ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับสิ่งนี้ในเว็บไซต์ heroku
Shubham Chaudhary

254

ฉันเคยใช้งานเมื่อใดก็ตามที่เป็นที่นิยมอย่างมากในโครงการที่ต้องพึ่งพางานที่กำหนดไว้มากและมันยอดเยี่ยม มันช่วยให้คุณมี DSL ที่ดีในการกำหนดงานที่กำหนดไว้ของคุณแทนที่จะต้องจัดการกับรูปแบบ crontab จาก README:

เมื่อใดก็ตามที่เป็นอัญมณีทับทิมที่ให้บริการไวยากรณ์ที่ชัดเจนสำหรับการเขียนและการปรับใช้งาน cron

ตัวอย่างจาก README:

every 3.hours do
  runner "MyModel.some_process"       
  rake "my:rake:task"                 
  command "/usr/bin/my_great_command"
end

every 1.day, :at => '4:30 am' do 
  runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end

22
หากมีการเรียกใช้ทุกนาทีสภาพแวดล้อมจะเริ่มใหม่ทุกครั้งซึ่งอาจมีค่าใช้จ่ายสูง ดูเหมือนว่าgithub.com/ssoroka/scheduler_daemonหลีกเลี่ยงสิ่งนี้
lulalala

3
+1 สำหรับการคงการกำหนดค่า cron ไว้ในระบบควบคุมเวอร์ชันของคุณ
brittohalloran

3
ฉันคิดว่านี่เป็นทางออกที่ดีที่สุด หากคุณกำลังใช้รางฉันคิดว่าดีกว่าที่จะเขียนทุกอย่างในราง ด้วยวิธีการนี้คุณสามารถลืมงาน cron เมื่อเปลี่ยนเซิร์ฟเวอร์มันจะย้ายไปที่แอพ
Adrian Matteo

มีRailscastที่ยอดเยี่ยมเกี่ยวกับเมื่อใดก็ตามที่เป็นประโยชน์จริง ๆ (เวอร์ชั่นฟรีที่เก่ากว่านั้นมีให้เช่นกัน)
aceofbassgreg

@Tony เมื่อใดก็ตามที่เป็นภาษาเฉพาะโดเมนสำหรับการเขียนงาน cron มันรวบรวมเป็นไวยากรณ์ cron ปกติบนเซิร์ฟเวอร์ของคุณและ cron คือสิ่งที่เรียกใช้งานที่คุณระบุ
เกร็ก

19

ในโครงการของเราเราใช้เป็นครั้งแรกเมื่ออัญมณี แต่เผชิญหน้ากับปัญหาบางอย่าง

จากนั้นเราเปลี่ยนเป็นอัญมณีRUFUS SCHEDULERซึ่งกลายเป็นเรื่องง่ายและน่าเชื่อถือสำหรับการจัดตารางงานใน Rails

เราได้ใช้มันเพื่อส่งจดหมายรายสัปดาห์และรายวันและแม้กระทั่งสำหรับการทำงานคราดเป็นระยะหรือวิธีการใด ๆ

รหัสที่ใช้ในการนี้เป็นเช่น:

    require 'rufus-scheduler'

    scheduler = Rufus::Scheduler.new

    scheduler.in '10d' do
      # do something in 10 days
    end

    scheduler.at '2030/12/12 23:30:00' do
      # do something at a given point in time
    end

    scheduler.every '3h' do
      # do something every 3 hours
    end

    scheduler.cron '5 0 * * *' do
      # do something every day, five minutes after midnight
      # (see "man 5 crontab" in your terminal)
    end

หากต้องการเรียนรู้เพิ่มเติม: https://github.com/jmettraux/rufus-scheduler


1
ใช้งานรูฟัสอย่างที่ฉันเคยใช้กับโครงการทับทิมเรียบง่ายหรือแอพพลิเคชั่นแบบรางเต็มรูปแบบ
เปาโล Fidalgo

8
คุณจะเจาะจงเกี่ยวกับประเด็นที่คุณพบเจอได้มากขึ้นเมื่อใด?
Duke

คำตอบที่ดีที่สุดที่เคย
Darlan Dieterich

17

สมมติว่างานของคุณใช้เวลาไม่นานในการทำให้เสร็จสมบูรณ์เพียงแค่สร้างคอนโทรลเลอร์ใหม่พร้อมแอ็คชั่นสำหรับแต่ละงาน ใช้ตรรกะของงานเป็นรหัสควบคุมจากนั้นตั้งค่า cronjob ที่ระดับระบบปฏิบัติการที่ใช้ wget เพื่อเรียก URL ของตัวควบคุมและการกระทำนี้ในช่วงเวลาที่เหมาะสม ข้อดีของวิธีนี้คือคุณ:

  1. สามารถเข้าถึงวัตถุ Rails ของคุณได้อย่างเต็มที่เช่นเดียวกับในคอนโทรลเลอร์ปกติ
  2. สามารถพัฒนาและทดสอบเช่นเดียวกับที่คุณทำปกติ
  3. ยังสามารถเรียกใช้งานของคุณ adhoc จากหน้าเว็บง่าย ๆ
  4. อย่าใช้หน่วยความจำอีกต่อไปด้วยการเพิ่มกระบวนการ ruby ​​/ rails เพิ่มเติม

12
จะป้องกันผู้อื่นจากการเข้าถึงภารกิจนี้อย่างไร? หากงานที่ใช้ CPU และเรียกมันบ่อยครั้งจะทำให้เกิดปัญหา
sarunw

44
ฉันรู้ว่าเมื่อไม่นานมานี้ แต่นี่ไม่ใช่วิธีที่ดีที่สุดในการทำงาน cron อีกต่อไป ทำไมต้องผ่านเว็บอินเตอร์เฟสซึ่งละเมิดสิ่งที่เป็นตัวแทนของอินเทอร์เฟซเมื่อมีวิธีอื่นมากมายในการเข้าถึงสภาพแวดล้อมของ Rails
Matchu

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

77
คำถามเก่านี้เป็นผลการค้นหา google อันดับต้น ๆ สำหรับ "rails cron" คำตอบนี้อยู่ไกลจากวิธีที่ดีที่สุด โปรดดูคำตอบอื่น ๆ สำหรับคำแนะนำที่มีสติมากขึ้น
Jim Garvin

2
ไม่ใช่วิธีที่ดีที่สุด คุณมีวิธีอื่น ๆ ในการเข้าถึง Rails env ผ่านงาน cron โดยไม่ต้องเรียกใช้บริการ REST วิธีการเขี่ยจะดีกว่าแน่นอน
Shine

10

งาน script / runner และ rake นั้นสมบูรณ์แบบที่จะทำงานเป็น cron

นี่คือสิ่งสำคัญอย่างหนึ่งที่คุณต้องจำไว้เมื่อเรียกใช้งาน cron พวกเขาอาจจะไม่ถูกเรียกจากไดเรกทอรีรากของแอปของคุณ ซึ่งหมายความว่าสิ่งที่คุณต้องการสำหรับไฟล์ทั้งหมด (ตรงข้ามกับไลบรารี) ควรทำด้วยพา ธ ที่ชัดเจน: เช่น File.dirname (__ FILE__) + "/ other_file" นอกจากนี้ยังหมายความว่าคุณต้องทราบวิธีการเรียกพวกเขาอย่างชัดเจนจากไดเรกทอรีอื่น :-)

ตรวจสอบว่ารหัสของคุณรองรับการเรียกใช้จากไดเรกทอรีอื่นด้วย

# from ~
/path/to/ruby /path/to/app/script/runner -e development "MyClass.class_method"
/path/to/ruby /path/to/rake -f /path/to/app/Rakefile rake:task RAILS_ENV=development

นอกจากนี้งาน cron อาจไม่ทำงานเหมือนคุณดังนั้นอย่าพึ่งทางลัดใด ๆ ที่คุณใส่ไว้ใน. bashrc แต่นั่นเป็นเพียงปลาย cron มาตรฐาน ;-)


คุณสามารถรันงานเป็นผู้ใช้ใด ๆ (เพียงตั้งค่ารายการ crontab สำหรับผู้ใช้ที่คุณต้องการ) แต่ถูกต้องที่โปรไฟล์และสคริปต์การเข้าสู่ระบบจะไม่ทำงานและคุณจะไม่เริ่มในโฮมไดเร็กตอรี่ของคุณ ดังนั้นจึงเป็นเรื่องธรรมดาที่จะเริ่มคำสั่งด้วย "cd" ดังที่แสดงในความคิดเห็นของ @ luke-franci
Tom Wilson

10

ปัญหาที่เกิดขึ้นเมื่อใดก็ตาม (และ cron) ก็คือมันจะโหลดสภาพแวดล้อมทางรถไฟทุกครั้งที่มีการดำเนินการซึ่งเป็นปัญหาจริงเมื่องานของคุณเป็นประจำหรือมีงานเริ่มต้นจำนวนมากที่ต้องทำ ฉันมีปัญหาในการผลิตเนื่องจากสิ่งนี้และต้องเตือนคุณ

ตัวจัดกำหนดการ Rufus ทำเพื่อฉัน ( https://github.com/jmettraux/rufus-scheduler )

เมื่อฉันมีงานที่ต้องใช้เวลานานฉันจะใช้มันกับ delay_job ( https://github.com/collectiveidea/delayed_job )

ฉันหวังว่านี่จะช่วยได้!


10

ฉันเป็นแฟนตัวยงของResque / ตารางเวลา Resque คุณไม่สามารถเรียกใช้งานที่เหมือน cron ซ้ำ แต่ยังทำงานตามเวลาที่กำหนด ข้อเสียคือต้องใช้เซิร์ฟเวอร์ Redis


10

ที่น่าสนใจไม่มีใครกล่าวถึงSidetiq มันเป็นการเพิ่มเติมที่ดีถ้าคุณใช้ Sidekiq อยู่แล้ว

Sidetiq จัดเตรียม API อย่างง่ายสำหรับการกำหนดคนทำงานประจำสำหรับ Sidekiq

งานจะมีลักษณะเช่นนี้:

class MyWorker
  include Sidekiq::Worker
  include Sidetiq::Schedulable

  recurrence { hourly.minute_of_hour(15, 45) }

  def perform
    # do stuff ...
  end
end

8

ทั้งสองจะทำงานได้ดี ฉันมักจะใช้สคริปต์ / นักวิ่ง

นี่คือตัวอย่าง:

0 6 * * * cd /var/www/apps/your_app/current; ./script/runner --environment production 'EmailSubscription.send_email_subscriptions' >> /var/www/apps/your_app/shared/log/send_email_subscriptions.log 2>&1

คุณยังสามารถเขียนสคริปต์ pure-Ruby เพื่อทำสิ่งนี้หากคุณโหลดไฟล์ config ที่เหมาะสมเพื่อเชื่อมต่อกับฐานข้อมูลของคุณ

สิ่งหนึ่งที่ต้องระลึกไว้เสมอว่าหน่วยความจำมีค่าคือ script / Runner (หรืองาน Rake ที่ขึ้นอยู่กับ 'environment') จะโหลดสภาพแวดล้อมของ Rails ทั้งหมด หากคุณต้องการแทรกระเบียนลงในฐานข้อมูลจะใช้หน่วยความจำที่คุณไม่จำเป็นต้องใช้จริงๆ หากคุณเขียนสคริปต์ของคุณเองคุณสามารถหลีกเลี่ยงสิ่งนี้ ฉันยังไม่จำเป็นต้องทำสิ่งนี้ แต่ฉันกำลังพิจารณาอยู่


8

ใช้Craken (rake centric cron jobs)


1
การเขียนงาน cron นั้นยากมากดาวน์โหลดอัญมณีให้ดีกว่านี้
f0ster

1
มันไม่ใช่เรื่องยาก - แต่การเก็บไว้ในระบบคอมไพล์และการปรับใช้ที่ทันสมัยอยู่เสมอเป็นข้อดีอย่างมากเมื่อทำงานในทีม
Thibaut Barrère

5

ฉันใช้ backgroundrb

http://backgroundrb.rubyforge.org/

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


3

นี่คือวิธีการตั้งค่างาน cron ของฉัน ฉันมีหนึ่งที่จะทำการสำรองข้อมูลรายวันของฐานข้อมูล SQL (ใช้ rake) และอื่น ๆ เพื่อหมดอายุแคชเดือนละครั้ง เอาต์พุตใด ๆ ถูกบันทึกไว้ในล็อกไฟล์ / cron_log crontab ของฉันมีลักษณะเช่นนี้:

crontab -l # command to print all cron tasks
crontab -e # command to edit/add cron tasks

# Contents of crontab
0 1 * * * cd /home/lenart/izziv. whiskas.si/current; /bin/sh cron_tasks >> log/cron_log 2>&1
0 0 1 * * cd /home/lenart/izziv.whiskas.si/current; /usr/bin/env /usr/local/bin/ruby script/runner -e production lib/monthly_cron.rb >> log/cron_log 2>&1

ภารกิจ cron แรกทำให้การสำรองข้อมูล db รายวัน เนื้อหาของ cron_tasks มีดังต่อไปนี้:

/usr/local/bin/rake db:backup RAILS_ENV=production; date; echo "END OF OUTPUT ----";

ภารกิจที่สองถูกตั้งค่าในภายหลังและใช้สคริปต์ / นักวิ่งเพื่อหมดอายุแคชเดือนละครั้ง (lib / month_cron.rb):

#!/usr/local/bin/ruby
# Expire challenge cache
Challenge.force_expire_cache
puts "Expired cache for Challenges (Challenge.force_expire_cache) #{Time.now}"

ฉันเดาว่าฉันสามารถสำรองฐานข้อมูลด้วยวิธีอื่นได้ แต่จนถึงตอนนี้มันใช้งานได้สำหรับฉัน :)

เส้นทางที่จะเสาะหาและทับทิมสามารถแตกต่างกันบนเซิร์ฟเวอร์ที่แตกต่างกัน คุณสามารถดูว่าพวกเขาอยู่ที่ไหนโดยใช้:

whereis ruby # -> ruby: /usr/local/bin/ruby
whereis rake # -> rake: /usr/local/bin/rake

3

การใช้สิ่งที่ Sidekiq หรือ Resque เป็นทางออกที่แข็งแกร่งกว่า พวกเขาทั้งสองสนับสนุนงานลองใหม่ความพิเศษกับล็อค REDIS การตรวจสอบและการกำหนดเวลา

โปรดทราบว่า Resque เป็นโครงการที่ตายแล้ว (ไม่ได้รับการบำรุงรักษาอย่างแข็งขัน) ดังนั้น Sidekiq จึงเป็นทางเลือกที่ดีกว่า นอกจากนี้ยังมีประสิทธิภาพมากกว่า: Sidekiq ทำงานหลายคนในกระบวนการมัลติเธรดเดียวในขณะที่ Resque เรียกใช้แต่ละคนงานในกระบวนการแยกต่างหาก


นั่นเป็นคำตอบที่ถูกต้อง หลายคนสามารถลืมเกี่ยวกับคุณสมบัติที่ดีที่ sidekiq หรือ Resque จะให้เหมือนเว็บอินเตอร์เฟสสำหรับการตรวจสอบสิ่งที่เกิดขึ้น: จำนวนของงานที่ทำงานล้มเหลวหรือกำหนดเวลาเริ่มต้นใหม่ได้อย่างง่ายดายล็อคสำหรับคนงานที่ไม่ซ้ำกัน, การควบคุมปริมาณและการ จำกัด ฯลฯ
มิทรี Polushkin

3

ฉันเพิ่งสร้างงาน cron บางอย่างสำหรับโครงการที่ฉันทำงานอยู่

ฉันพบว่าClockworkอัญมณีมีประโยชน์มาก

require 'clockwork'

module Clockwork
  every(10.seconds, 'frequent.job')
end

คุณสามารถกำหนดเวลางานพื้นหลังของคุณโดยใช้อัญมณีนี้ สำหรับเอกสารและความช่วยเหลือเพิ่มเติมอ้างอิงhttps://github.com/Rykian/clockwork



2

เมื่อฉันต้องทำการตัดสินใจแบบเดียวกันและฉันมีความสุขมากกับการตัดสินใจในวันนี้ ใช้ตัวกำหนดตารางเวลา resqueเนื่องจากไม่เพียง แต่ redis ที่แยกจากกันจะนำภาระออกจาก db ของคุณคุณยังสามารถเข้าถึงปลั๊กอินจำนวนมากเช่น resque-web ซึ่งมีส่วนต่อประสานผู้ใช้ที่ยอดเยี่ยม ในขณะที่ระบบของคุณพัฒนาคุณจะมีงานมากขึ้นในการกำหนดเวลาดังนั้นคุณจะสามารถควบคุมงานได้จากที่เดียว


1

อาจเป็นวิธีที่ดีที่สุดในการใช้ rake เพื่อเขียนงานที่คุณต้องการและเพียงแค่รันมันผ่านทางบรรทัดคำสั่ง

คุณสามารถดูวิดีโอที่มีประโยชน์มากได้ที่ railscasts

ดูทรัพยากรอื่น ๆ ด้วย:


ฉันพยายามใช้ไวยากรณ์ในบทช่วยสอนนี้ไม่สำเร็จ งานไม่ได้ถูกดำเนินการ
Tass

1

ฉันใช้อัญมณีนาฬิกาและมันทำงานได้ดีสำหรับฉัน นอกจากนี้ยังมีclockworkdอัญมณีที่อนุญาตให้สคริปต์รันเป็น daemon


0

ฉันไม่แน่ใจจริง ๆ ฉันคิดว่ามันขึ้นอยู่กับงานว่าต้องวิ่งบ่อยแค่ไหนซับซ้อนเท่าไหร่และต้องมีการสื่อสารโดยตรงกับโครงการรถไฟมากแค่ไหน ฯลฯ ฉันเดาว่าถ้ามี"One Best Way"ที่จะทำบางสิ่งบางอย่าง จะไม่มีวิธีที่แตกต่างมากมายที่จะทำ

ในงานสุดท้ายของฉันในโครงการ Rails เราจำเป็นต้องสร้างจดหมายเชิญแบบแบทช์ (คำเชิญสำรวจไม่ใช่สแปม) ซึ่งควรส่งจดหมายตามแผนเมื่อใดก็ตามที่เซิร์ฟเวอร์มีเวลา ฉันคิดว่าเราจะใช้เครื่องมือภูตเพื่อเรียกใช้งาน rake ที่ฉันสร้างขึ้น

น่าเสียดายที่ บริษัท ของเราประสบปัญหาด้านเงินและถูก "ซื้อ" โดยคู่แข่งหลักดังนั้นโครงการจึงไม่เสร็จสมบูรณ์ดังนั้นฉันจึงไม่รู้ว่าเราจะใช้อะไรในที่สุด


0

ฉันใช้สคริปต์เพื่อเรียกใช้ cron ซึ่งเป็นวิธีที่ดีที่สุดในการเรียกใช้ cron นี่คือตัวอย่างของ cron

เปิด CronTab -> sudo crontab -e

และวางเส้นร้อง:

00 00 * * * wget https: // your_host / some_API_end_point

นี่คือรูปแบบ cron บางส่วนจะช่วยคุณ

::CRON FORMAT::

ตารางรูปแบบ cron

Examples Of crontab Entries
15 6 2 1 * /home/melissa/backup.sh
Run the shell script /home/melissa/backup.sh on January 2 at 6:15 A.M.

15 06 02 Jan * /home/melissa/backup.sh
Same as the above entry. Zeroes can be added at the beginning of a number for legibility, without changing their value.

0 9-18 * * * /home/carl/hourly-archive.sh
Run /home/carl/hourly-archive.sh every hour, on the hour, from 9 A.M. through 6 P.M., every day.

0 9,18 * * Mon /home/wendy/script.sh
Run /home/wendy/script.sh every Monday, at 9 A.M. and 6 P.M.

30 22 * * Mon,Tue,Wed,Thu,Fri /usr/local/bin/backup
Run /usr/local/bin/backup at 10:30 P.M., every weekday. 

หวังว่านี่จะช่วยคุณ :)

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