วิธีการลบหรือลบงาน cron เดียวโดยใช้คำสั่ง linux?


39

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

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

ผลลัพธ์ใด:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

ตอนนี้ฉันต้องการลบหรือลบงาน cron เดียวจากเซิร์ฟเวอร์ของฉันผ่านคำสั่ง ตัวอย่างเช่นฉันต้องการลบงาน cron " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" ออกจากเซิร์ฟเวอร์

ฉันลองcrontab -rคำสั่งที่ลบงาน cron ทั้งหมดออกจากเซิร์ฟเวอร์ของฉัน แต่ฉันต้องการลบงาน cron เฉพาะ

คุณช่วยฉันแก้ปัญหาได้มั้ย

คำตอบ:


61
  1. ในการเพิ่มงานใน crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. ในการลบงานออกจาก crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. ลบทุกอย่างออกจาก crontab:

    crontab -r
    

ไม่มีอะไรที่ยุ่งยาก: -เป็น STDOUT ใน Linux!


1
Greg:ยินดีต้อนรับสู่ถาม Ubuntu! ;-)คุณช่วยทบทวนการแก้ไขของฉันและทบทวนความช่วยเหลือในการแก้ไขเพื่อปรับปรุงการอ่านคำตอบของคุณในอนาคต ... ;-)
Fabby

4
โปรดแทนที่ 1. เพื่อเพิ่มงานใน crontab ด้วย (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (อ้างอิง: stackoverflow.com/questions/4880290/… )
Yasiru G

1
@YasiruG ฉันคิดว่าcrontab -l 2 > /dev/nullจำเป็นเท่านั้นถ้าคุณไม่ต้องการเห็นข้อความno crontab for <user>หากไม่มีงาน cron อยู่ อย่างไรก็ตามเราไม่ต้องการตัวเลือก-u mobmanหากเราต้องการเพิ่มงาน cron สำหรับผู้ใช้ปัจจุบัน
baptx

21

จากประเภทพร้อมต์รูท

crontab -e

ตอนนี้คุณสามารถแก้ไขไฟล์และลบบรรทัดที่คุณต้องการลบ คุณสามารถใช้สิ่งนี้เพื่อแก้ไข crontab สำหรับผู้ใช้หากคุณมีพรอมต์สำหรับผู้ใช้นั้น

โดยวิธีการที่: ฉันชอบที่จะเพิ่ม cronjobs /etc/crontabไป ดูเหมือนว่าจะยืดหยุ่นกว่าฉันเล็กน้อย


ดูเหมือนว่าจะง่ายกว่าและใช้งานได้ดีกว่าตัวช่วยสร้างสคริปต์ แต่ฉันหวังว่าฉันจะเป็นพ่อมดมากกว่า
Jason Sebring

ยอดเยี่ยมสำหรับการเปลี่ยนแปลงด้วยตนเอง แต่สำหรับระบบอัตโนมัติให้ตรวจสอบสคริปต์ด้านบน -
AFP_555

7

ดูผู้ใช้ Cronjob

ใช้ไวยากรณ์ต่อไปนี้เพื่อดูcronjob ของผู้ใช้waqleh :

crontab -u waqleh -l

ดูผู้ใช้รูท Cronjob

เพียงพิมพ์คำสั่งต่อไปนี้:

crontab -l

นี่ควรแสดงรายการเนื้อหาของสคริปต์ crontab

ดู / etc / crontab

cronjob สามารถรันได้จากไฟล์ / etc / crontab หากต้องการดูให้ป้อน:

less /etc/crontab

ลบงาน cron ทั้งหมด

ถ้าหากคุณต้องการหยุดงาน cron ทั้งหมดคุณสามารถลบงานทั้งหมดด้วย:

crontab -r

สิ่งนี้จะลบไฟล์ crontab ทั้งหมดดังนั้นโปรดระวังหากคุณมีงาน cron อื่นที่ระบุไว้ในนั้น!

ลบงาน cron ที่เฉพาะเจาะจง

เปิดไฟล์ cron และลบ cron ที่คุณต้องการลบ

crontab -e

แต่ละบรรทัดแสดงถึงงาน cron คุณสามารถลบ cron ใด ๆ ได้โดยใช้ ctrl + k จากนั้นบันทึกและออก


1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l แสดงรายการงาน crontab ปัจจุบัน

grep -v กรองบางบรรทัด

crontab - เพิ่มสิ่งที่พิมพ์ทั้งหมดลงในไฟล์ crontab


0

คุณสามารถรันcrontabโดยไม่มีอาร์กิวเมนต์และป้อน crontab ใหม่ผ่าน stdin


@qeirha .. ฉันต้องการลบงาน cron เฉพาะออกจากเซิร์ฟเวอร์ของฉัน
anumavu

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