วิธีการหยุดงาน cron ที่กำลังทำงานอยู่?


45

ฉันจะหยุดงาน cron ที่กำลังทำงานอยู่ได้อย่างไร


2
คำตอบสามข้อด้านล่างตีความคำถามนี้ในสามวิธี @GURU คุณช่วยอธิบายสิ่งที่คุณต้องการจะทำอย่างไร คุณต้องการที่จะฆ่ากระบวนการที่เริ่มต้นโดย cron ที่กำลังทำงานอยู่หรือคุณต้องการป้องกันไม่ให้งานทำงานในอนาคตหรือไม่
jcrawfordor

คำตอบ:


29

คุณสามารถทำเช่นเดียวกับที่คุณหยุดกระบวนการใด ๆ

หากต้องการหยุดงานที่กำลังดำเนินอยู่cronคุณสามารถเลือกทำอย่างใดอย่างหนึ่งต่อไปนี้:

pkill process-name

หรือถ้าคุณรู้ PID (คุณสามารถตรวจสอบได้โดยการเรียกใช้ps):

kill 1234

(แทน PID จริง)


1
วิธีการแสดงรายการที่กำลังทำงาน cron?
UWU_SANDUN

5
@UWU_SANDUN: คุณสามารถใช้pgrepหรือการส่งออกของgrep ไม่มีอะไรพิเศษเกี่ยวกับการดำเนินการดำเนินการจากps cronคุณเพียงแค่ค้นหากระบวนการภายใต้ชื่อของมันเอง นอกจากนี้คุณยังสามารถทำps fauxww | grep -A 1 '[C]RON'และสายใต้เส้น (s) cronจะแสดงงานที่ถูกเรียกใช้โดย คุณสามารถปรับหมายเลข 1 ที่สูงขึ้นเพื่อดูกระบวนการย่อยได้ถ้ามี
Dennis Williamson

หมายเหตุคุณต้องใช้งาน cygwin ในฐานะผู้ดูแลระบบเพื่อฆ่ากระบวนการ ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนั้น
takanuva15

ใช้ Ubuntu ฉันพิมพ์สิ่งที่ @ takanuva15 แนะนำ, ps fauxww | grep -A 1 '[C]RON'. นี่แสดงรายการงาน cron ปัจจุบันที่กำลังทำงานดังนั้นหลังจากนั้นคุณสามารถบันทึก PID ลงและดำเนินการ# kill -9 PIDได้ ขอบคุณ!
russellhoff

@russellhoff: -9ควรใช้เป็นทางเลือกสุดท้ายเนื่องจากจะป้องกันไม่ให้กระบวนการทำความสะอาดใด ๆ เมื่อมีการออก
Dennis Williamson

17

หากต้องการหยุดการเรียกใช้งาน cron ขั้นแรกรับรหัสกระบวนการของคำสั่งของคุณด้วย

top -p $(pgrep -d',' your_command)

เช่น:-

top -p $(pgrep -d',' httpd)

และเรียกใช้

kill PIDแทนที่PIDด้วย ID กระบวนการ


14

แปลกไม่มีใครพูดถึงวิธีนี้:

$ crontab -e

ในตัวแก้ไขที่เปิดอยู่ให้ลบบรรทัดของงานที่คุณต้องการหยุดหรือแทรก#เครื่องหมายบันทึกและออก

เช่น

ก่อน

* * * * * some_script1
* * * * * some_script2

หลังจาก

* * * * * some_script1
#* * * * * some_script2

หรือ

* * * * * some_script1

เริ่มบริการใหม่หลังจากทำการเปลี่ยนแปลงโดย

sudo service cron reload

16
สิ่งนี้ไม่หยุดงาน cron ที่กำลังทำงานอยู่ แต่จะหยุดงาน cron ในอนาคตที่จะเปิดใช้โดย cron
อีวาน

10

หากคุณใช้ Redhat (RHEL) / Fedora Core / Cent OS Linux ให้ใช้คำสั่งต่อไปนี้:

/etc/init.d/crond stop

หากคุณใช้ Debian หรือ Ubuntu Linux คำสั่งต่อไปนี้:

/etc/init.d/cron stop

PS: คุณควรรูทเพื่อทำสิ่งเหล่านี้


2
ฉันคิดว่ามันจะหยุด crons ทั้งหมดเพื่อหยุด cron โดยเฉพาะฉันอาจรู้คำสั่ง

ได้โปรดแนะนำคำสั่ง Sen

ฉันไม่คิดว่ามันเป็นไปได้ในทางตรง .. บางทีเราควรไปแฮ็ก
Sen

6

พิมพ์ครั้งแรกps auxเพื่อดูว่ากระบวนการทั้งหมดกำลังทำงานอยู่

จากนั้นจดบันทึกPIDแต่ละกระบวนการที่คุณต้องการหยุด

จากนั้นพิมพ์

kill {PID} สำหรับแต่ละกระบวนการ

ยังดูที่ลิงค์เหล่านี้ (ลิงค์ superuser):

ตรวจสอบที่-a-cron-งานได้เสร็จ

PS-aux-เอาท์พุทความหมาย


3

คุณสามารถแก้ไขตาราง cron และแสดงความคิดเห็นงานที่เป็นปัญหา สลับไปยังผู้ใช้ที่ควบคุมงานส่งออกตัวแก้ไขที่คุณเลือกลงในสภาพแวดล้อมจากนั้นใช้crontab -l:

$ su - root
...
# EDITOR=vi; export EDITOR
# crontab -l

1
ที่แสดงรายการ crontab ใช้crontab -eเพื่อแก้ไข สำหรับระบบที่มีมันก็ยังดีกว่าที่จะใช้แทนsudo suนอกจากนี้crontab -eจะทำงานสำหรับผู้ใช้ (หรือราก) crontab แต่ไม่ crontab ระบบ (เช่น/etc/cron*)
เดนนิสวิลเลียมสัน

1

crontab -r

จะลบ crontabs ทั้งหมดที่กำลังทำงานอยู่หรือคุณสามารถคอมเม้นท์คำสั่งใน crontab ที่ต้องหยุดทำงาน


0

ก่อนอื่นให้ตรวจสอบกระบวนการทำงานด้วยคำสั่งนี้

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

เอาต์พุตของคำสั่งนี้คือ

599  599 cron
4288  599 \_ CRON

และตอนนี้ฆ่ากระบวนการด้วยคำสั่งนี้

pkill -s 4288

0

ทำงานให้ฉันเพื่อ linux

pkill -9 crontab

ฆ่ากระบวนการทั้งหมดที่มีชื่อกระบวนการcrontab

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