ฉันเคยได้ยิน crontab เป็นตัวเลือกที่ดี แต่ฉันจะเขียนบรรทัดได้อย่างไรและฉันจะวางไว้บนเซิร์ฟเวอร์ได้อย่างไร
ฉันเคยได้ยิน crontab เป็นตัวเลือกที่ดี แต่ฉันจะเขียนบรรทัดได้อย่างไรและฉันจะวางไว้บนเซิร์ฟเวอร์ได้อย่างไร
คำตอบ:
นี่คือบทแนะนำที่ดีเกี่ยวกับ crontab และวิธีการใช้บน Ubuntu บรรทัด crontab ของคุณจะมีลักษณะดังนี้:
00 00 * * * ruby path/to/your/script.rb
( 00 00
ระบุเที่ยงคืน - 0 นาทีและ 0 ชั่วโมง - และ*
ค่าเฉลี่ยทุกวันทุกเดือน)
ไวยากรณ์: คำสั่ง mm hh dd mt wd มิลลิเมตรนาที 0-59 ชั่วโมงชั่วโมง 0-23 วันที่ของเดือนที่ 1-31 mt เดือน 1-12 wd วันในสัปดาห์ 0-7 (วันอาทิตย์ = 0 หรือ 7) คำสั่ง: สิ่งที่คุณต้องการเรียกใช้ ค่าตัวเลขทั้งหมดสามารถถูกแทนที่ด้วย * ซึ่งหมายถึงทั้งหมด
/etc/crontab
(บน Ubuntu) แต่เมื่อคุณเรียกใช้crontab -e
คุณกำลังแก้ไข crontab เฉพาะผู้ใช้ซึ่งไม่อนุญาตให้คอลัมน์นี้ IIRC Ubuntu กีดกันการออก/etc/crontab
ด้วยตนเองเนื่องจากอาจถูกเขียนทับ ดูที่นี่: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
จากหน้าคน
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
มันเป็นการดีที่จะทราบ "ชื่อเล่น" พิเศษที่สามารถใช้ (บันทึกไว้ในหน้าคน) โดยเฉพาะ "@reboot" ซึ่งไม่มีทางเลือกเวลาและวันที่
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
คุณยังสามารถใช้เคล็ดลับนี้เพื่อเรียกใช้งาน cron ของคุณหลายครั้งต่อนาที
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
ในการเพิ่มงาน cron คุณสามารถทำหนึ่งในสามสิ่งต่อไปนี้
เพิ่มคำสั่งให้กับ crontab ของผู้ใช้ดังที่แสดงด้านบน (และจาก crontab, ส่วนที่ 5, man page)
crontab -e -u <username>
crontab -e
EDITOR
ตัวแปรสภาพแวดล้อม
env EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
สร้างสคริปต์ / โปรแกรมเป็นงาน cron และเพิ่มลงใน/etc/cron.*ly
ไดเรกทอรีanacron ของระบบ
chmod a+x /etc/cron.daily/script_runs_daily.sh
- ทำให้ปฏิบัติการได้man anacron
chmod a+x <file>
/etc/crontab
หรือ/etc/anacrontab
ให้ทำงานตามเวลาที่กำหนด/etc/anacrontab
และกำหนด cron.hourly/etc/cron.d/0hourly
หรือหนึ่งสามารถสร้างระบบ crontables /etc/cron.d
มา
/etc/cron.d
ไม่จำเป็นต้องสามารถเรียกใช้งานได้someuser
และการใช้งาน/bin/bash
เป็นเชลล์จะถูกบังคับ File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
บางครั้งคุณจะต้องระบุ PATH และ GEM_PATH โดยใช้ crontab กับ rvm
แบบนี้:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
คู่มือฉบับย่อเพื่อตั้งค่างาน cron
สร้างไฟล์ข้อความใหม่ตัวอย่าง: mycronjobs.txt
สำหรับแต่ละวันงาน (00:00, 03:45), บันทึกบรรทัดกำหนดการในmycronjobs.txt
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
ส่งงานไปที่ cron (ทุกครั้งที่คุณเรียกใช้งาน cron จะลบสิ่งที่ถูกจัดเก็บและอัปเดตด้วยข้อมูลใหม่ในmycronjobs.txt )
crontab mycronjobs.txt
ข้อมูลที่เป็นประโยชน์เพิ่มเติม
ดูงาน cron ปัจจุบัน
crontab -l
ลบงาน cron ทั้งหมด
crontab -r
คุณสามารถรันเชลล์สคริปต์ได้สองวิธีโดยใช้งาน cron หรือโดยการเขียนเชลล์สคริปต์
สมมติว่าชื่อสคริปต์ของคุณคือ "yourscript.sh"
ขั้นแรกให้ตรวจสอบสิทธิ์ของผู้ใช้ของสคริปต์ ใช้คำสั่งด้านล่างเพื่อตรวจสอบสิทธิ์ของผู้ใช้สคริปต์
ll script.sh
หากสคริปต์อยู่ในรูทให้ใช้คำสั่งด้านล่าง
sudo crontab -e
ที่สองถ้าสคริปต์เก็บผู้ใช้ "อูบุนตู" จากนั้นใช้คำสั่งด้านล่าง
crontab -e
เพิ่มบรรทัดต่อไปนี้ใน crontab ของคุณ: -
55 23 * * * /path/to/yourscript.sh
อีกวิธีหนึ่งในการทำเช่นนี้คือการเขียนสคริปต์และเรียกใช้ในแบ็คกราวด์
นี่คือสคริปต์ที่คุณต้องใส่ชื่อสคริปต์ของคุณ (เช่น: - youscript.sh) ซึ่งจะทำงานในเวลา 23:55 น. ทุกวัน
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
บันทึกไว้ในไฟล์ (ให้ชื่อมันว่า "every-day.sh")
sleep 1d - หมายถึงมันรอหนึ่งวันแล้วมันจะทำงานอีกครั้ง
ตอนนี้ให้สิทธิ์แก่คุณ script.use ด้านล่างคำสั่ง: -
chmod + x every-day.sh
ตอนนี้รันเชลล์สคริปต์นี้ในพื้นหลังโดยใช้ "nohup" การดำเนินการนี้จะทำให้สคริปต์ทำงานต่อไปแม้ว่าคุณจะออกจากระบบแล้วก็ตาม
ใช้คำสั่งด้านล่างเพื่อรันสคริปต์
nohup ./every-day.sh &
หมายเหตุ: - หากต้องการเรียกใช้ "yourscript.sh" เวลา 23:55 น. ทุกวันคุณต้องเรียกใช้งานสคริปต์ "every-day.sh" เวลา 23:55 น.
ใส่ประโยคนี้ในไฟล์ crontab: 0 0 * * * / usr / local / bin / python /opt/ByAccount.py> /var/log/cron.log 2> & 1