วิธีรันคำสั่งทุก ๆ 10 วินาที (ไม่มี cron)


35

เมื่อฉันรันcronฉันได้รับข้อผิดพลาดนี้

cron: ไม่สามารถเปิดหรือสร้าง /var/run/crond.pid: การอนุญาตถูกปฏิเสธ

ดังนั้นจะทำอย่างไรโดยไม่cron?

PS ฉันต้องการตรวจสอบว่าไฟล์ใน svn มีการเปลี่ยนแปลงและฉันมีสคริปต์พิเศษสำหรับมัน


หากคุณไม่ได้รับอนุญาตแล้วลองวิ่ง cron sudoกับ
ไม่ระบุชื่อ

4
จำไว้ว่า cron จะไม่ทำอะไรทุก ๆ 10 วินาทีเม็ดละเอียดที่สุดที่ได้รับคือหนึ่งครั้งต่อนาที
Cesium

หากคุณต้องการสร้าง cronjobs คุณต้องเรียกใช้crontab -eเพื่อเริ่มตัวแก้ไข ในการแสดงรายการ crons ปัจจุบันให้เรียกใช้crontab -l
Lekensteyn

@ ไม่ระบุชื่อฉันไม่ทราบรหัสผ่านรูทดังนั้น sudo จะไม่ช่วยฉัน
UAdapter

คำตอบ:


59

ในการเข้าถึงการcronกำหนดค่าส่วนบุคคลของคุณคุณควรใช้คำสั่งcrontab -e(เพื่อแก้ไขตาราง cron ของคุณ)

ทางเลือกคือwatchคำสั่ง:

watch -n10 command args

สุดท้ายเพื่อตรวจสอบเหตุการณ์ระบบไฟล์อย่างมีประสิทธิภาพยิ่งขึ้นคุณสามารถใช้inotifywaitจากinotify-toolsแพ็คเกจ


1
เป็นที่น่าสังเกตว่าบางทีคุณควรห่อคำสั่งของคุณในเครื่องหมายคำพูดคู่หรือมิฉะนั้นคุณอาจท้ายด้วยผลลัพธ์ที่ไม่คาดคิด watch -n<timeout> "command(s) arg(s)"เช่นwatch -n2 "ps ux | grep ss5"
Achilles

ฉันพบว่ามันยากที่watchจะยอมรับคำสั่งที่ยาวและซับซ้อนโดยใช้ไพพ์และเครื่องหมายคำพูด ขณะที่ลูปด้านล่างใช้งานได้ แต่แน่นอนว่าคนเราควรนอนก่อนเสมอเพื่อหลีกเลี่ยงการหลบหนี
rjurney

@rjurney: มันควรจะเพียงพอที่จะห่อคำสั่งทั้งหมดในอัญประกาศคู่เดียวหรือดีกว่า:watch -n10 "ls -l | grep $foo"
enzotib

@enzotib ปัญหาเกิดขึ้นเมื่อมีอัญประกาศในคำสั่งเนื่องจากเครื่องหมายคำพูดในเครื่องหมายคำพูดภายใน (พระเจ้าช่วยฉัน) คำพูดเป็นไปไม่ได้ในการทุบตี ในทางทฤษฎีแล้วมันควรจะเป็นไปได้ แต่ฉันก็ไม่ค่อยได้ราคาที่ซ้อนกันใน bash โดยไม่ยอมแพ้และไปในเส้นทางอื่น
rjurney

31

คุณสามารถเขียนเชลล์สคริปต์ที่มีsleepในขณะที่ลูป

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done

5
while trueไม่ต้องใช้วงเล็บเหลี่ยมมิฉะนั้นจะตีความ "true" เป็นสตริงและทุกสตริงจะดีเท่ากับ "true"
enzotib

1
@enzotib ดังนั้นคุณอาจเขียนในขณะที่อยู่รอบ ๆ
Eduard Florinescu

ในขณะที่ใช้งานได้คุณควรนอนหลับก่อนเสมอเพราะบางสิ่งบางอย่างอาจเกิดขึ้นทำให้ไม่สามารถไปถึงขั้นตอนการนอนหลับได้ซึ่งในกรณีนี้คุณมี pid ที่ควบคุมไม่ได้ทำให้เกิดน้ำท่วม
rjurney

4

gnome-schedule (คลิกที่ปุ่มเพื่อInstall now!ใช้ศูนย์ซอฟต์แวร์ของคุณ)
เป็นส่วนต่อประสานผู้ใช้แบบกราฟิกที่ใช้ประโยชน์จากพลังของ vixie-cron, dcron และที่เพื่อจัดการไฟล์ crontab ของคุณและให้วิธีที่ง่ายในการกำหนดเวลางานบนคอมพิวเตอร์ของคุณ สนับสนุนงานที่เกิดซ้ำ (ตามงวด) และงานที่เกิดขึ้นเพียงครั้งเดียวในอนาคต มันเขียนใน Python โดยใช้ pygtk

คุณสมบัติที่ยอดเยี่ยม

  • รองรับชื่อและไอคอนที่กำหนดเองสำหรับงานของคุณเพื่อให้ง่ายต่อการติดตาม
  • เทมเพลตรองรับเพื่อให้คุณไม่ต้องสร้างงานเดิมซ้ำแล้วซ้ำอีก เหล่านี้จะถูกบันทึกใน gconf และอาจจัดส่งได้อย่างง่ายดายพูดกระจาย Linux
  • หากทำงานเป็นรูทคุณสามารถแก้ไขงาน crontab ของผู้ใช้และงาน "at"
  • สตริงที่มนุษย์อ่านได้เช่น "ทุก ๆ ชั่วโมง" แทนที่จะเป็น "0 * * * *"
  • โหมดขั้นสูงสำหรับผู้เชี่ยวชาญ crontab
  • จัดให้มี "แผงแอปเพล็ต" ที่คุณสามารถจัดการงานได้จากเมนูแบบเลื่อนลง
  • นิพจน์ทั่วไปที่กำหนดไว้ล่วงหน้าเช่น: ทุกนาทีทุกสัปดาห์พรุ่งนี้และสัปดาห์หน้าปฏิทินช่วยให้คุณสามารถเลือกวันที่คุณต้องการทำงาน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.