คำถามติดแท็ก cron

Cron เป็นตัวจัดตารางงานตามเวลาในระบบปฏิบัติการคอมพิวเตอร์ Unix Cron ช่วยให้ผู้ใช้สามารถกำหนดเวลางาน (คำสั่งหรือเชลล์สคริปต์) ให้ทำงานเป็นระยะในบางช่วงเวลาหรือวันที่

1
ฉันจะทำให้ cron ทำงานทุกวันอาทิตย์ในวันอาทิตย์อื่น ๆ ได้อย่างไร
ฉันมีงาน cron ที่ทำงานที่ 0 0 * * 0/2 - คือทุก ๆ วันอาทิตย์ มันเพิ่งวิ่งตอนนี้เช่น อย่างไรก็ตามฉันต้องการให้มันทำงานในวันอาทิตย์อื่น ๆ - อาทิตย์ถัดไปมากกว่านี้ อีกวิธีในการวาง: ฉันคิดว่ามันทำงานในวันอาทิตย์เลขคู่ของปี แต่ฉันต้องการให้มันทำงานในวันอาทิตย์เลขคี่ ฉันไม่เห็นอะไรเลยใน "man 5 crontab" ที่จะช่วยฉันในเรื่องนี้ดังนั้นฉันจึงคิดว่าฉันต้องกลับไปใช้ cronjob ที่ 0 0 * * 0 จากนั้นทำบางสิ่งในคำสั่งที่ฉันเรียกใช้เพื่อตรวจสอบว่าวันอาทิตย์นั้น คือ. ทุกคนสามารถช่วยฉันด้วยกลอุบายบรรทัดคำสั่งที่เหมาะสมสำหรับเรื่องนี้? การทางพิเศษแห่งประเทศไทย: ได้ตระหนักว่า 0/2 ของฉันไม่ได้ทำในสิ่งที่ฉันคิดเดิม (ทุกวันอาทิตย์ที่สอง) เลย มันทำงานทุกวันอาทิตย์ตราบใดที่วันในสัปดาห์นั้นหารด้วยสองซึ่งแน่นอนว่าเป็น D'โอ้ อย่างไรก็ตามความต้องการขั้นพื้นฐานยังคงอยู่: รันคำสั่งในวันอาทิตย์เลขคี่
10 cron  date 

1
FreeBSD: คาบ (8) ดังเกินไป ฉันจะควบคุมระดับเสียงได้อย่างไร
FreeBSD & MacOSX มาพร้อมกับยูทิลิตี้เป็นระยะ (8)ซึ่งเป็นชุดยูทิลิตี้ที่จัดระเบียบอย่างเป็นระเบียบเพื่อเรียกใช้ฟังก์ชันของระบบเช่นการตรวจสอบระบบไฟล์ ZFS การตรวจสอบความปลอดภัยการตรวจสอบพอร์ตล้าสมัยเป็นต้น ปัญหาคือการส่งอีเมล์เป็นระยะมากเกินไปซึ่งมีข้อมูลฟุ่มเฟือยมากเกินไป สิ่งนี้ทำให้คนไม่สนใจอีเมลและเราพลาดปัญหามากมายที่เกิดขึ้นเป็นระยะ ๆ (8) อีเมลรายวันจะถูกส่งหนึ่งครั้งต่อวันอีเมลความปลอดภัยจะถูกส่งหนึ่งครั้งต่อวันและอีเมลรายสัปดาห์และรายเดือนจะถูกส่งเป็นระยะเช่นกัน อีเมลเหล่านี้มีหัวเรื่องเช่นหนึ่งใน: Subject: $HOSTNAME daily run output Subject: $HOSTNAME security run output Subject: $HOSTNAME weekly run output Subject: $HOSTNAME monthly run output ฉันจะลดจำนวนอีเมลที่ส่งจากงวด (8) ได้อย่างไร ฉันจะโพสต์คำตอบของฉันเองด้านล่าง แต่ฉันอยากจะเห็นสิ่งที่คนอื่นทำ หมายเหตุ : ฉันมีคำถามที่คล้ายกันเกี่ยวกับ Linux ที่Linux: logwatch (8) & cron.daily ดังเกินไป ฉันจะควบคุมระดับเสียงได้อย่างไร

2
ทำไม cronjobs ถึงทำงานผิดเวลา?
ฉันมี cronjobs setup ที่จะทำงานทุกวันบนเซิร์ฟเวอร์ Ubuntu ของฉัน เช่น. 0 4 * * * คำสั่ง พวกเขากำลังทำงานยกเว้นพวกเขากำลังทำงาน 8 ชั่วโมงก่อน เมื่อตั้งค่าเซิร์ฟเวอร์ แต่เดิมนั้นถูกตั้งค่าเป็นเวลา UTC ฉันวิ่งsudo dpkg-reconfigure tzdataไปตั้งเซิร์ฟเวอร์เป็น CST ซึ่งเป็นเวลา 6 ชั่วโมงหลัง UTC น่าสนใจฉันอยู่ใน PST ซึ่งเป็นเวลา 8 ชั่วโมงหลัง UTC แต่ฉันไม่เห็นว่าเซิร์ฟเวอร์รู้ได้อย่างไร ถ้าฉันรันคำสั่งdateมันจะแสดงเวลาเป็น CST จะต้องมีสถานที่ที่กำหนดเวลาผิด ฉันจะแก้ไขปัญหานี้ได้อย่างไร

3
รับ cron เพื่อส่งอีเมลในรูปแบบ html
ฉันมีโปรแกรมสถิติที่ทำงานบนไฟล์บันทึกผ่าน cron โปรแกรมสถิติสามารถส่งออก HTML ตอนนี้ฉันพึ่งพากลไก MAIL_TO ใน crontab MAILTO=my@email.addr 55 23 * * * /usr/bin/htmlstats ปัญหาคือฉันต้องการให้ส่งอีเมลเพื่อแสดงเป็น HTML ไม่ใช่ข้อความธรรมดา Cron วางส่วนหัวต่อไปนี้ในอีเมล: Content-Type: text/plain; charset="UTF-8" ความคิดใด ๆ ที่ฉันจะเปลี่ยนเป็น: Content-Type: text/html; charset="UTF-8"
10 email  cron 

1
logrotate ตามขนาด - ฉันต้องเปลี่ยน cron หรือไม่
การกำหนดค่า logrotate ปัจจุบันของฉันมีลักษณะเช่นนี้ (ใช้ logrotate 3.8.7) "/var/log/haproxy.log" { daily size 250M rotate 1 create 644 root root missingok compress notifempty copytruncate } มันทำงานได้สำเร็จวันละครั้ง แต่เมื่อขนาดเกิน 250M จะไม่หมุน ดังนั้นมันจะรอจนถึงสิ้นวันที่จะหมุนโดยไม่คำนึงถึงขนาด ผมเคยอ่านว่ามีตัวเลือก maxsize และหลังจากที่เปลี่ยนsize 250Mไปmaxsize 250Mก็ยังไม่ได้ทำงาน ฉันต้องตั้งค่า cron ให้เรียกใช้ logrotate แบบรายชั่วโมงหรือไม่หรือ logrotate จะทำงานโดยอัตโนมัติเพราะกำลังฟังขนาดไฟล์นั้นและฉันมีสิ่งผิดปกติเกิดขึ้นหรือไม่
10 cron  logrotate 

3
find -delete ทำงานได้ดี แต่ไม่ใช่ cron
โปรดทราบ : ฉันได้อ่านคำถามที่คล้ายกันทั้งหมดแล้ว cron, พา ธ , ตัวแปร env และอื่น ๆ แต่ไม่พบใครที่เสนอวิธีแก้ปัญหาเฉพาะของฉัน ฉันมีสคริปต์ที่ทำให้ MySQL ทิ้งและลบไฟล์เก่าแบบนี้: /usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -delete ( คำสั่งด้านบนได้รับการแก้ไขจากคำสั่งเดิมของฉันโดยคำแนะนำจากความคิดเห็น ) อย่างไรก็ตามไฟล์จะไม่ถูกลบเมื่อ cron รันสคริปต์นี้ ผู้ใช้ cron คือรูท การดีบักโน้ต ถ้าฉันเรียกใช้สคริปต์ด้วยตนเองซึ่งคำสั่งปรากฏขึ้นมันจะลบออกตามที่คาดไว้ หากฉันรันคำสั่ง find ด้านบนด้วยตัวเองจากบรรทัดคำสั่งในฐานะรูทคำสั่งจะลบมันตามที่คาดไว้ (และด้วย -print จะส่งคืนรายการไฟล์ที่เก่ากว่า 5 วันตามที่คาดไว้) ฉันยังได้เพิ่มคำสั่งพา ธ ที่ชัดเจนไปยัง crontab ของรูท แต่ นั่นไม่เปลี่ยนแปลงอะไรเลย Cron ส่งข้อผิดพลาดไม่และถ้าฉันไปป์การดำเนินการค้นหาไปยังแฟ้มบันทึก …
10 cron 

2
crontab แสดงรายการหรือแก้ไขผลลัพธ์ใน fopen: การอนุญาตถูกปฏิเสธ
เมื่อเร็ว ๆ นี้งานที่กำหนดค่าให้เรียกใช้จาก crontab ของผู้ใช้หยุดการดำเนินการ เมื่อพยายามที่จะแสดงรายการหรือแก้ไข crontab สำหรับผู้ใช้ผลลัพธ์คือ: user@host:~$ crontab -l crontabs/user/: fopen: Permission denied user@host:~$ crontab -e crontabs/user/: fdopen: Permission denied เห็นได้ชัดว่าเป็นสิทธิ์ที่เกี่ยวข้องแม้ว่าฉันจะไม่แน่ใจว่าสิทธิ์มีการเปลี่ยนแปลงอย่างไรและที่สำคัญกว่านั้นคือสิ่งที่ควรตั้งค่า สิทธิ์บน / usr / bin / crontab: $ ll /usr/bin/crontab -rwxr-sr-x 1 root libuuid 35896 Aug 24 2010 /usr/bin/crontab* สิทธิ์ในไดเรกทอรี / var / spool / cron / …

3
ทำไม CentOS logrotate ของฉันถึงทำงานแบบสุ่ม?
ฉันใส่logrotateไฟล์การกำหนดค่า/etc/logrotate.d/และคาดว่าบันทึกจะหมุนในเวลาที่สอดคล้องกัน อย่างไรก็ตามพวกเขาไม่ ... เวลาการหมุนของบันทึกจะสุ่ม +/- หนึ่งชั่วโมง เหตุใดการหมุนของบันทึกจึงเริ่มต้นขึ้นแบบสุ่มและฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร ข้อมูล: ไฟล์กำหนดค่า logrotate ของฉันมีลักษณะเช่นนี้ ... /opt/backups/network/*.conf { copytruncate rotate 30 daily create 644 root root dateext maxage 30 missingok notifempty compress delaycompress postrotate ## Create symbolic links in daily/ PATH=`/usr/bin/dirname $1`; FILE=`/bin/basename $1`; /bin/ln -s $1 $PATH/daily/$FILE endscript }
10 linux  centos  cron  logrotate 

1
คุณจะตั้งค่าตัวแปร DATE เพื่อใช้ในบันทึกสำหรับเอาต์พุต crontab ได้อย่างไร?
ฉันกำลังเล่น aroudn ด้วยการเปลี่ยนแปลงบางอย่างเช่น DATE = $(date) แต่นั่นก็ไม่ได้ผลเช่นกัน crontab -e CRONLOG=/tmp/log/crontab.log DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S` * * * * * echo $DATEVAR >> /tmp/log/crontab.log */2 * * * * echo "$DATEVAR hello" >> ${CRONLOG} */1 * * * * echo 'every minute' >> ${CRONLOG} นี่แค่แสดงผลข้อความตามที่เป็น ... ฉันต้องการสร้างรายการบันทึกใน crontab.log พร้อมเวลาประทับในการอัพเดทแต่ละครั้ง ฉันจะทำสิ่งนี้บน CentOS 6 ได้อย่างไร …
10 centos  logging  cron  centos6  date 

2
รันภารกิจทุกๆ 90 นาทีด้วย cron
พยายามปรับงาน cron ให้ทำงานทุก 90 นาที ก่อนหน้านี้มันทำงานทุก ๆ 20 นาทีซึ่งเป็นงาน cron อย่างง่าย: */20 * * * * whatever หากต้องการเปลี่ยนเป็นทุกๆ 90 ดูเหมือนว่าฉันต้องแบ่งมันออกเป็น 2 งานฉันได้ทำไปแล้ว: 0 0,3,6,9 * * * whatever 30 1,4,7,10 * * * whatever ถูกต้องหรือไม่ ดูเหมือนว่างานจะไม่เริ่มต้น

4
ดำเนินการคำสั่งเมื่อไฟล์มีการเปลี่ยนแปลง
ฉันมีสถานการณ์ที่ฉันกำลังอัปโหลดไฟล์. csv ไปยังโฟลเดอร์เฉพาะ / tmp / data_upload ทุกวันและไฟล์เก่าจะถูกแทนที่ด้วยไฟล์ใหม่ ฉันต้องเรียกใช้สคริปต์ Python เมื่ออัปโหลดข้อมูลแล้ว สำหรับเรื่องนี้ฉันมีความคิดที่จะสร้างงาน cron และตรวจสอบการเปลี่ยนแปลงในไฟล์ ฉันพยายามใช้ inotify แต่ฉันไม่ค่อยเข้าโดเมน Unix ฉันจะทำสิ่งนั้นได้อย่างไร ฉันต้องรันสคริปต์ test.py เมื่อมีการเปลี่ยนแปลงวันที่ของไฟล์ในโฟลเดอร์อัพโหลดตัวอย่างเช่น / tmp / data_upload

3
หนีตัวละครใน cron
การทำงานต่อไปนี้เป็นไปตามที่คาดไว้จากพรอมต์คำสั่ง แต่มันไม่ทำงานจาก cron mysqldumpslow <(tail -1000 `mysqladmin variables \ | grep slow_query_log_file | awk '{print $4}'`) \ | mail -s "slow log from `hostname` sorted by time" shantanu.oak`hostname`@gmail.com \ > /root/slow_succ.txt 2> /root/slow_err.txt ฉันได้รับข้อผิดพลาดต่อไปนี้: /bin/sh: -c: line 0: syntax error near unexpected token `(' อักขระบางตัวจำเป็นต้องถูกหลบหนีด้วย cron หรือไม่? หรือเป็นปัญหากับ subshell ใน …
9 cron 

5
การตั้งค่างาน cron ที่ทำ chmod / chown
ฉันต้องการตั้งค่างาน cron ที่ทำซ้ำ chmod / chown ในไดเรกทอรี (ไดเรกทอรี dropbox) ซ้ำ ๆ มันจะทำงานเมื่อฉันรันคำสั่งด้วยตนเองเช่น: sudo chown -R $USER ~/Dropbox sudo chmod -R u+rw ~/Dropbox ฉันพยายามแปลงให้เป็นงาน cron แบบนี้: 10 * * * * sudo chown -R $USER ~/Dropbox แต่ดูเหมือนจะไม่ทำงาน ทำอย่างไร

4
วิเคราะห์และเพิ่มประสิทธิภาพ crontabs [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา มีเครื่องมือในการทำกราฟวิเคราะห์และช่วยเพิ่มประสิทธิภาพการทำงานของ crontab หรือไม่? เพื่อชี้แจงฉันคิดว่าเป็นเครื่องมือที่จะสร้างกราฟของเมื่องาน cron จะถูกดำเนินการและช่วยดูแลระบบการจัดระเบียบพวกเขาอย่างชาญฉลาด
9 linux  unix  cron 

5
cron อย่างน้อยมั่นใจได้เพียงตัวอย่างเดียว
มีวิธีการเรียกใช้สคริปต์ทุกนาที (หรือ 2 หรือ 5 หรืออื่น ๆ ) แต่ถ้ามันไม่ได้ทำงานอยู่แล้ว? เรามีชุดสคริปต์ที่จำเป็นต้องเรียกใช้ทุกนาที บางครั้งพวกเขาอาจเริ่มและเสร็จในไม่กี่วินาทีเวลาอื่น ๆ พวกเขาอาจจะไปเป็นเวลา 5 นาที วิธีการหลีกเลี่ยงการประหารชีวิตพร้อมกันในปัจจุบันของเราคือการตั้งค่าis_runningสถานะในแต่ละสคริปต์และออกหากยังเปิดใช้งานอยู่ แต่นี่เป็นสิ่งที่ไม่น่าเชื่อถือเล็กน้อย (เช่นข้อผิดพลาดร้ายแรงจะทำให้การตั้งค่าสถานะยังคงเปิดใช้งานแม้ว่าสคริปต์จะหยุดทำงาน) เราสามารถเขียนผู้จัดการเล็ก ๆ ของเราเอง แต่ฉันสงสัยว่ามีวิธีการแก้ปัญหาที่ทันสมัยมากขึ้นที่มีอยู่แล้ว
9 linux  cron 

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