Root crontab ไม่ทำงาน


10

ด้วยเหตุผลบางอย่างรูต crontab ของฉันดูเหมือนจะไม่ทำงาน

พยายามรีบู๊ตอุปกรณ์ทุกคืนในเวลาเที่ยงคืน

ควรเป็นดังต่อไปนี้เป็น root:

crontab -e

จากนั้นเพิ่ม:

0 0 * * * /sbin/shutdown -r now

เมื่อฉันทดสอบโดยใช้บางค่าปิดเวลาปัจจุบันไม่มีอะไรเกิดขึ้น ฉันติดตั้ง NTP และทำให้แน่ใจว่าเขตเวลาถูกต้อง ฉันกำลังระบุด้วยการใช้นาฬิกา 24 ชั่วโมง ตัวอย่างเช่นในการทดสอบบรรทัดนี้ตอนนี้ (5:35 PM) ฉันลองป้อนข้อมูลต่อไปนี้:

36 17 * * * /sbin/shutdown -r now

ฉันตรวจสอบเวลาด้วยวันที่แล้ว -R เวลาสำหรับ crontab ที่จะเรียกใช้จะมาและผ่านไปและระบบจะไม่รีบูต ฉันหายไปนี่อะไร


เพียงเพื่อให้แน่ใจว่าคุณกำลังปิด crontab หลังจากแก้ไขใช่ไหม นอกจากนี้คุณ "ทำงานเหมือนรูต" ได้อย่างไร? อะไรคือผลลัพธ์ของsudo crontab -l | grep -v '#'?
terdon

นี่คือแท็กทำไมเดเบียน ? ถ้าเรื่องนี้เป็นเรื่องเกี่ยวกับ Debian และ Ubuntu ไม่ได้กรุณาสอบถามในUnix และ Linux
muru

เพราะเดเบียนเป็นหัวใจสำคัญของอูบุนตูฉันเชื่อว่า
Atomiklan

คำตอบ:


11

ฉันมีคำแนะนำการแก้ปัญหาสามข้อสำหรับคุณ

  1. เรียกใช้ crontab ด้วย crontab -e -u root

  2. ตรวจสอบให้แน่ใจว่าคุณมีบรรทัดว่างที่ท้ายไฟล์ cronjob ซึ่งหมายความว่าทุกบรรทัดลงท้ายด้วยบรรทัดใหม่

  3. คุณอาจต้องเปลี่ยนเส้นทางผลลัพธ์ไปที่ devnull: shutdown -r now > /dev/null

ต่อไปนี้เป็นเว็บเพจที่มีประโยชน์สำหรับ cronjobs:

เครื่องทดสอบ CRON

เครื่องกำเนิด CRON

นอกจากนี้คุณยังสามารถจัดการ cronjobs อย่างเรียบร้อยด้วยwebmin

นอกจากนั้นคุณมีวิธีอย่างน้อยสองวิธีในการรีสตาร์ทคอมพิวเตอร์ในเวลาเที่ยงคืน

หนึ่งคือการเรียกใช้คำสั่งปิดระบบเป็นสคริปต์โดยอัตโนมัติเมื่อเข้าสู่ระบบ แต่มีเวลาที่ระบุเป็นพารามิเตอร์แทน "ตอนนี้":

shutdown -r 00:00

อย่างไรก็ตามสิ่งนี้จะให้ข้อความออกอากาศของการปิดระบบที่จะเกิดขึ้นทุกครั้งที่ลงชื่อเข้าใช้ (อาจไม่ใช่เรื่องเลวร้ายเลย) ทีนี้คุณสามารถทำให้มันรันตอนบูทได้โดยการเพิ่มสคริปต์ใน init.d แต่ก็ยังยอมให้ข้อความได้

อีกประการหนึ่งคือการใช้atคำสั่ง:

at 0am

ป้อนคำสั่งshutdown -r nowและบันทึกด้วย ctrl + d หรือทำสคริปต์สำหรับคำสั่งและทำ:

at -f restart_script.sh 0am

หวังว่าสิ่งเหล่านี้จะช่วยให้คุณได้รับผลลัพธ์ที่คุณต้องการ


ทางออกคือการส่งออกเพื่อ dev null ฉันสงสัยว่าทำไม?
Atomiklan

มันเป็นเพราะงาน cron มีสภาพแวดล้อมของตัวเองซึ่งไม่มีระบบอินพุต / เอาท์พุตมาตรฐานที่คุณคาดหวังและกระบวนการล้มเหลวเพราะมันพยายามที่จะสตรีมข้อความไปยังไพพ์เอาต์พุตที่ขาดหายไป งาน Cron นั้นแตกต่างกันมากเมื่อเทียบกับการรันคำสั่งในเทอร์มินัลในฐานะผู้ใช้ ดีใจที่ได้ยินว่าคุณทำให้มันทำงานได้
Ahti Komu

0

งาน Cron ของระบบถูกแสดงรายการในไฟล์ / etc / crontab ดังนั้นการแก้ไขไฟล์นี้โดยตรงจะช่วยให้คุณสามารถรันคำสั่ง reboot ในฐานะรูท

ดังนั้น,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

ตรวจสอบให้แน่ใจว่าคุณตรวจสอบไฟล์บันทึกของ Cron หลังจากแก้ไข crontab เพราะจะแจ้งให้คุณทราบหากติดตั้ง cron เรียบร้อยแล้ว

ฉันได้ทำการทดสอบแล้วและมันก็ใช้ได้ผลสำหรับฉัน เริ่มระบบของฉันใหม่เมื่อเวลา 20:23 น

โชคดี!


-3

36 17 * * * ฯลฯ

36 17 ไม่ใช่วิธีที่จะระบุเวลาที่เหมาะสมใน cron ของคุณ

ตรวจสอบคำสั่งผ่านวันที่เพื่อดูว่าระบบของคุณทำงานในเวลาสหรัฐอเมริกาหรือเวลาในยุโรปหรือไม่

ใช้ 17 36 ถ้าเวลา europ และถ้าระบบของคุณใช้เวลา 24 ชั่วโมงหรือ 5 36 ถ้าระบบของคุณใช้ US TIME และ 12 H time


ไม่จริง! Cron ไม่ได้ใช้รูปแบบเวลา 12 ชั่วโมงและรูปแบบคือ mm hh DD MM WD เสมอ
Ahti Komu

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