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

Cron เป็นตัวกำหนดเวลางานที่อนุญาตให้ผู้ใช้เรียกใช้คำสั่งเป็นระยะ

3
ฉันจะดูรายการงาน cron ทั้งหมดที่กำหนดไว้ในเครื่องของฉันได้อย่างไร
ดูแลระบบของฉันตั้งค่างาน cron จำนวนมากบนเครื่องของฉัน ฉันต้องการที่จะรู้ว่าสิ่งที่กำหนดไว้สำหรับเวลาอะไร ฉันจะรับรายการนั้นได้อย่างไร
201 linux  cron  scheduling 

7
'ไดเรกทอรีทำงาน' คืออะไรเมื่อ cron ประมวลผลงาน?
ฉันมีสคริปต์ที่ทำงานเมื่อฉันเรียกใช้จากบรรทัดคำสั่ง แต่เมื่อฉันกำหนดเวลาด้วยcronฉันพบข้อผิดพลาดที่ไม่สามารถค้นหาไฟล์หรือคำสั่งได้ คำถามของฉันคือสองเท่า: เมื่อฉันจัดตารางเวลางาน cron โดยใช้crontab -eมันใช้ ID ผู้ใช้ของฉันเป็นพื้นฐานสำหรับการอนุญาตหรือไม่ หรือว่าจะใช้ ID ผู้ใช้ cron ของบางประเภทและสิทธิ์ที่เกี่ยวข้อง? เมื่อเปิดใช้งาน cron แล้วไดเรคทอรี่การทำงานคืออะไร? เป็นไดเรกทอรีที่ฉันระบุสคริปต์ให้เรียกใช้หรือไดเรกทอรีอื่นหรือไม่ นี่คืองาน cron ของฉัน: 15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh นี่คือสคริปต์จริง: vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`" echo "$vIP_ADDR" sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt ssmtp XXXXX@gmail.com < emailmsg.txt นี่คือข้อผิดพลาดที่ฉันได้รับเมื่อฉันดูmailข้อความที่ผลิตโดยcron: sed: can't read template.txt: No such file or …


3
ฉันจะทำให้ cron ทำงานได้อย่างไรในตอนนี้สำหรับการทดสอบ / การดีบัก โดยไม่ต้องเปลี่ยนกำหนดการ!
ฉันมีงาน cron ที่กำหนดให้ทำงานทุกวันนอกเหนือจากการเปลี่ยนกำหนดเวลามีวิธีอื่นที่จะทำการทดสอบคำสั่งทันทีเพื่อดูว่ามันทำงานได้ตามที่ตั้งใจหรือไม่?
133 cron  debugging 

6
ฉันจะเรียกใช้งาน 'date' ภายในงาน cron tab ได้อย่างไร?
ฉันต้องการสร้างไฟล์บันทึกสำหรับสคริปต์ cron ที่มีชั่วโมงปัจจุบันในชื่อไฟล์บันทึก นี่คือคำสั่งที่ฉันพยายามใช้: 0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log น่าเสียดายที่ฉันได้รับข้อความนี้เมื่อทำงาน: /bin/sh: -c: line 0: unexpected EOF while looking for matching ``' /bin/sh: -c: line 1: syntax error: unexpected end of file ฉันพยายามหนีdateส่วนต่างๆด้วยวิธีต่าง ๆ แต่ไม่มีโชคมาก เป็นไปได้ไหมที่จะทำให้สิ่งนี้เกิดขึ้นแบบอินไลน์ในไฟล์ crontab หรือฉันจำเป็นต้องสร้างเชลล์สคริปต์เพื่อทำสิ่งนี้?

11
ฉันจะรันคำสั่ง cron ด้วยตัวแปรสภาวะแวดล้อมที่มีอยู่ได้อย่างไร?
ฉันจะรันคำสั่ง cron ด้วยตัวแปรสภาวะแวดล้อมที่มีอยู่ได้อย่างไร? ถ้าฉันอยู่ที่พรอมต์เชลล์ฉันสามารถพิมพ์echo $ORACLE_HOMEและรับเส้นทาง ~/.profileนี้เป็นหนึ่งในตัวแปรด้านสิ่งแวดล้อมของฉันที่ได้รับการตั้งค่าในของฉัน อย่างไรก็ตามดูเหมือน~/.profileว่าไม่ได้โหลดสคริปต์ fron cron และสคริปต์ของฉันล้มเหลวเนื่องจาก$ORACLE_HOMEไม่ได้ตั้งค่าตัวแปร ในคำถามนี้ผู้เขียนกล่าวถึงการสร้าง~/.cronfileโปรไฟล์ที่ตั้งค่าตัวแปรสำหรับ cron แล้วเขาก็หาวิธีแก้ปัญหาเพื่อโหลดคำสั่ง cron ทั้งหมดของเขาลงในสคริปต์ที่เขาเก็บไว้ใน~/Cronไดเรกทอรีของเขา ไฟล์เช่น~/.cronfileเสียงดูเหมือนเป็นความคิดที่ดี แต่คำตอบที่เหลือดูเหมือนจะยุ่งยากเล็กน้อยและฉันก็หวังว่าจะมีคนบอกวิธีที่ง่ายกว่าในการได้รับผลลัพธ์เดียวกัน ฉันคิดว่าเมื่อเริ่มต้นสคริปต์ของฉันฉันสามารถเพิ่มสิ่งที่ชอบsource ~/.profileแต่ที่ดูเหมือนว่ามันจะซ้ำซ้อน ดังนั้นฉันจะทำให้สคริปต์ cron ของฉันโหลดตัวแปรจากโปรไฟล์ interactive-shell ได้อย่างไร

4
วันของสัปดาห์ {0-7} ใน crontab มี 8 ตัวเลือก แต่เรามีเพียง 7 วันในหนึ่งสัปดาห์
วันของสัปดาห์: อนุญาตช่วง 0 - 7. วันอาทิตย์เป็น 0 หรือ 7 ฉันพบสิ่งนี้หลังจาก Googling คำถามของฉันคือทำไมค่าทั้งสอง (0,7) ควรตรงกับวันอาทิตย์
113 cron  date 

2
วิธีการเปลี่ยนเส้นทางการส่งออกไปยังไฟล์จากภายใน cron?
ฉันมีสคริปต์การสำรองข้อมูลที่ฉันจำเป็นต้องใช้ในเวลาใดเวลาของวันเพื่อให้ฉันใช้cronสำหรับงานนี้และจากภายใน cron logfileกำลังยังพยายามที่จะเปลี่ยนเส้นทางการส่งออกของสคริปต์การสำรองข้อมูลไปยัง crontab -e */1 * * * * /home/ranveer/backup.sh &>> /home/ranveer/backup.log ในรายการ cron ด้านบนฉันกำลังเปลี่ยนเส้นทางทั้งสองstderr and stdoutไปยังไฟล์บันทึก งาน cron ด้านบนดำเนินการได้ดีตามsyslog และทำงานที่กล่าวถึงในbackup.shไฟล์ แต่ไม่ได้เขียนอะไรลงในไฟล์บันทึก /var/log/syslog Oct 19 20:26:01 ranveer CRON[15214]: (ranveer) CMD (/home/ranveer/backup.sh &>> /home/ranveer/backup.log) เมื่อฉันเรียกใช้สคริปต์จาก cli มันทำงานได้ตามต้องการและเอาท์พุทจะถูกเขียนลงในล็อกไฟล์ ranveer@ranveer:~$ ./backup.sh &>> backup.log ranveer@ranveer:~$ cat backup.log Fri Oct 19 20:28:01 IST 2012 …

2
Cron vs systemd ตัวจับเวลา
เมื่อเร็ว ๆ นี้ชี้ให้ฉันเห็นว่ามีทางเลือกอื่นสำหรับ cron คือ systemd timers อย่างไรก็ตามฉันไม่รู้อะไรเลยเกี่ยวกับตัวจับเวลา systemd หรือ systemd ฉันใช้ cron แล้วเท่านั้น มีเล็ก ๆ น้อย ๆ คือการอภิปรายใน Arch วิกิพีเดีย อย่างไรก็ตามฉันกำลังมองหาการเปรียบเทียบรายละเอียดระหว่างcronและตัวจับเวลา systemd โดยเน้นไปที่ข้อดีและข้อเสีย ฉันใช้ Debian แต่ฉันต้องการเปรียบเทียบโดยทั่วไปสำหรับทุกระบบที่มีตัวเลือกสองตัวเลือกนี้ ชุดนี้อาจรวมถึงการกระจาย Linux เท่านั้น นี่คือสิ่งที่ฉันรู้ Cron มีอายุมากย้อนกลับไปในช่วงปลายทศวรรษ 1970 ผู้แต่งดั้งเดิมของ cron คือ Ken Thompson ผู้สร้าง Unix Vixie cron ซึ่ง crons ในการแจกแจงลินุกซ์รุ่นใหม่เป็นรุ่นที่สืบทอดโดยตรงตั้งแต่ปี 1987 Systemd ใหม่กว่ามากและค่อนข้างขัดแย้ง Wikipedia …

4
เปิดหน้าต่างบนจอแสดงผล X ระยะไกล (ทำไม“ ไม่สามารถเปิดจอแสดงผล”)
กาลครั้งหนึ่ง, DISPLAY=:0.0 totem /path/to/movie.avi หลังจากเข้าสู่เดสก์ท็อปจากแล็ปท็อปของฉันจะทำให้โทเท็มเล่นmovie.aviบนเดสก์ท็อป ตอนนี้มันทำให้เกิดข้อผิดพลาด: No protocol specified Cannot open display: ฉันติดตั้ง Debian squeeze ใหม่อีกครั้งเมื่อมันเสถียรในคอมพิวเตอร์ทั้งสองเครื่องและฉันเดาว่าตัวเองยากจน config ฉันทำสิ่งนี้และไม่สามารถใช้ชีวิตของฉันเพื่อค้นหาสิ่งที่ฉันควรจะทำ (VLC มีอินเตอร์เฟส HTTP ที่ใช้งานได้ แต่ไม่สะดวกเท่ากับ ssh) ปัญหาเดียวกันเกิดขึ้นเมื่อฉันพยายามเรียกใช้จากงาน cron
81 ssh  x11  cron 

4
ฉันจะปิดเสียง cronjob ให้เป็น / dev / null / ได้อย่างไร
บน Ubuntu-Desktop และบนเดเบียนเซิร์ฟเวอร์ของฉันฉันมีสคริปต์ที่ต้องดำเนินการทุกนาที (สคริปต์ที่เรียกนาทีของการเรียกดูออนไลน์ในพื้นที่ของฉัน) ปัญหาคือว่าใน debian derivates cron จะเข้าสู่ระบบ/var/log/syslogทุกครั้งที่ดำเนินการ ฉันเห็นข้อความที่ถูกประหารซ้ำแล้วซ้ำอีกใน/var/log/syslog: Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1) ฉันรู้ว่าเพื่อที่จะระงับการส่งออกของโปรแกรมฉันสามารถเปลี่ยนเส้นทางไปยัง/dev/nullเช่นซ่อนข้อผิดพลาดและข้อความเตือนจากโปรแกรมฉันสามารถสร้างบรรทัดใน crontab เช่นนี้ * * * * * root /usr/local/sbin/mycommand.sh > /dev/null แต่ฉันต้องการเรียกใช้ cronjob และตรวจสอบว่าเอาต์พุตหรือข้อผิดพลาดที่สร้างขึ้นทั้งหมดถูกไพพ์ไปที่ NULL ดังนั้นจึงไม่สร้างข้อความใด ๆ ใน syslog และไม่สร้างอีเมลใด ๆ แก้ไข: มีวิธีแก้ปัญหาในการเปลี่ยนเส้นทางบันทึก cron เป็นบันทึกแยกต่างหากเช่นเสนอที่นี่โดยการเปลี่ยน/etc/syslog.conf แต่ข้อเสียเปรียบก็คือว่าผลลัพธ์ทั้งหมดของ …

1
วิธีการเปลี่ยนเปลือก cron (sh เพื่อทุบตี)?
มันเป็นไปได้ที่จะทำให้คำสั่งใน crontab รันด้วย bash แทน sh หรือไม่? ฉันรู้ว่าคุณสามารถส่งคำสั่งเพื่อทุบตีด้วย-cแต่ที่น่ารำคาญและฉันไม่เคยใช้ SH อย่างไรก็ตาม
70 shell  cron 

13
แก้ไขการล็อคในเชลล์สคริปต์หรือไม่
บางครั้งคุณต้องตรวจสอบให้แน่ใจว่ามีเพียงหนึ่งอินสแตนซ์ของเชลล์สคริปต์เท่านั้นที่ทำงานพร้อมกัน ตัวอย่างเช่นงาน cron ซึ่งดำเนินการผ่าน crond ที่ไม่มีการล็อคด้วยตนเอง (เช่น Solaris crond เริ่มต้น) รูปแบบทั่วไปที่จะใช้การล็อคคือรหัสดังนี้: #!/bin/sh LOCK=/var/tmp/mylock if [ -f $LOCK ]; then # 'test' -> race begin echo Job is already running\! exit 6 fi touch $LOCK # 'set' -> race end # do some work rm $LOCK แน่นอนรหัสดังกล่าวมีสภาพการแข่งขัน มีหน้าต่างเวลาที่การประมวลผลของทั้งสองอินสแตนซ์สามารถเลื่อนไปข้างหลังบรรทัดที่ 3 ก่อนที่จะสามารถแตะ$LOCKไฟล์ได้ สำหรับงาน …

8
@reboot ของ crontab ใช้งานได้กับรูทเท่านั้นหรือ
man 5 crontab ค่อนข้างชัดเจนในการใช้ crontab เพื่อเรียกใช้สคริปต์ในการบูต: These special time specification "nicknames" are supported, which replace the 5 initial time and date fields, and are prefixed by the `@` character: @reboot : Run once after reboot. ดังนั้นฉันจึงเพิ่มบรรทัดเดียวใน crontab ของฉัน (ภายใต้บัญชีผู้ใช้ของฉันไม่ใช่รูท): @reboot /home/me/myscript.sh แต่ด้วยเหตุผลบางอย่าง myscript.sh จะไม่ทำงานในการรีบูตเครื่อง (ทำงานได้ดีถ้าฉันเรียกใช้จากบรรทัดคำสั่งดังนั้นจึงไม่ใช่ปัญหาสิทธิ์) ฉันพลาดอะไรไป อัปเดตเพื่อตอบคำถามของ @ Anthon: เวอร์ชันของ …
64 cron  reboot 


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