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

kill - ส่งสัญญาณที่ระบุไปยังกระบวนการหรือกลุ่มกระบวนการ

1
ทำไมฉันไม่ควรใช้ 'kill -9' / SIGKILL
การโพสต์คำถามนี้เพราะฉันรู้สึกประหลาดใจที่ไม่พบคำตอบโดยตรง ขอโทษถ้านี่เป็นสิ่งที่ซ้ำ - ฉันดู! ฉันเคยได้ยินสิ่งนั้นkill -9หรือkill -SIGKILLไม่ดี แต่ฉันไม่เข้าใจว่าทำไม ถ้าฉันไม่ควรkill -9สิ่งที่ควรฉันทำเพื่อฆ่ากระบวนการหรือไม่?
14 process  kill 

2
วิธีการฆ่าแต่ละด้ายภายใต้กระบวนการใน linux?
เหล่านี้เป็นเธรดแต่ละตัวของกระบวนการรับแพ็คเก็ต มีวิธีใดที่จะฆ่าเธรดเดี่ยว ๆ หรือไม่? Linux มีคำสั่งเฉพาะใด ๆ ที่สามารถฆ่าหรือส่งสัญญาณหยุดไปยังเธรดใด ๆ ภายใต้กระบวนการได้หรือไม่?
13 linux  kill  thread 

3
ฆ่าบริการใด ๆ ที่ทำงานอยู่ที่พอร์ตเฉพาะ
ฉันพยายามเขียนสคริปต์ที่ฆ่าบริการที่ทำงานที่พอร์ตเฉพาะ นี่คือสคริปต์ของฉัน: a=$(ps ax | grep 4990 | grep java | awk '{print $1}') kill -9 $a มันเป็นโปรแกรมจาวา สคริปต์นี้ใช้งานได้บางครั้ง แต่ล้มเหลวอย่างลึกลับส่วนใหญ่ มีวิธีอื่นในการฆ่าบริการที่ทำงานบนพอร์ตหรือไม่? 4990พอร์ตของฉันคือ
13 process  kill  tcp 

1
ทำไมการเรียกใช้ `killall init` ในฐานะผู้ใช้ออกจากระบบฉัน?
ในคอมพิวเตอร์หลายเครื่องที่ใช้ Ubuntu 14.XX ฉันรันคำสั่ง "killall init" ในฐานะผู้ใช้และออกจากระบบทันที ฉันสามารถเข้าสู่ระบบอีกครั้งโดยไม่มีปัญหา ทำไมนี้ เบื้องหลังเกิดอะไรขึ้น
12 kill  init  logout 

4
จะค้นหาแหล่งที่มาของกระบวนการวางไข่ได้อย่างไร
ฉันมีกระบวนการ Java ที่ทำงานบนอินสแตนซ์ RedHat Linux ปัญหาคือมันปรากฏขึ้นอีกครั้งหลังจากที่ฉันฆ่ามัน ฉันไม่แน่ใจว่าจะมองที่ไหน ฉันไป crontab แล้ว แต่ไม่มีโชค ฉันดู PPID แล้ว แต่มันก็ชี้ไปที่ init (1) ความคิดใดที่ฉันสามารถค้นหาแหล่งที่มา?
12 process  kill 

3
เทอร์มินัลอีมูเลเตอร์จะฆ่าลูกของพวกเขาได้อย่างไรหลังจากได้รับ SIGKILL?
จากสิ่งที่ฉันเข้าใจ SIGKILL ไม่สามารถถูกจับได้ นี่หมายความว่ากระบวนการไม่มีเวลาฆ่าเด็ก ๆ ก่อนที่ระบบปฏิบัติการจะทำลายมัน สิ่งนี้สามารถแสดงให้เห็นได้ด้วยเชลล์สคริปต์ #! /bin/bash trap : SIGTERM SIGINT SIGKILL # SIGKILL is pointless. mplayer video.avi ฆ่าด้วย SIGKILL ทำให้ mplayer ทำงาน $ kill -9 $pid แต่เมื่อใช้เทอร์มินัลอีมูเลเตอร์ (xterm เทอร์มินัล ... ) เด็ก ๆ จะถูกฆ่าพร้อมกับมัน เป็นไปได้อย่างไร? $ mplayer และฆ่ามัน: $ kill -9 $terminal_pid และ mplayer ลงไปกับเรือ เทอร์มินัลอีมูเลเตอร์จับ SIGKILL …

5
วิธีการฆ่าอย่างงดงาม
หลังจากสคริปต์ทุบตีของฉันทำกับเซิร์ฟเวอร์ซีลีเนียมแล้วสคริปต์ก็จะฆ่าแบบนี้: kill `ps -ef | grep selenium | awk '{ print $2 }'` ในขณะที่มันใช้งานได้และมันจะฆ่าสคริปต์ซีลีเนียมมันก็พยายามที่จะฆ่ากระบวนการสำหรับgrep seleniumดังนั้นตามเวลาที่หมายเลขกระบวนการกลับไปที่คำสั่ง kill กระบวนการจะหายไปดังนั้นจึงสิ้นสุดการสร้างข้อความแสดงข้อผิดพลาด (ในคำอื่น ๆ : มันจบลงด้วยการฆ่าสองกระบวนการหนึ่งในนั้นคือเซิร์ฟเวอร์ซีลีเนียมจริงอีกกระบวนการหนึ่งเป็นกระบวนการที่หายวับไปซึ่งเป็นผลข้างเคียงของวิธีที่ฉันทำตามคำสั่งนี้) มีวิธีที่สง่างามกว่าในการฆ่ากระบวนการที่ไม่มีผลข้างเคียงนี้หรือไม่? (FWIW หนึ่งความคิดที่ฉันมี: สคริปต์เดียวกันนี้เริ่มต้นขึ้นในซีลีเนียมก่อนหน้านี้ในสคริปต์ดังนั้นอาจจะมีวิธีที่ฉันสามารถจับ PID ได้เมื่อฉันเริ่มต้นซีลีเนียมฉันสามารถเก็บมันไว้และฆ่ามันโดยตรงแทนที่จะเป็น grepping ID กระบวนการปัญหาคือฉันไม่รู้วิธีรับ PID นั้นวิธีใช้ตัวแปรเพื่อเก็บมันและวิธีอ้างอิงในสคริปต์ในภายหลัง แต่วิธีนี้เป็นวิธีที่ดีกว่าหรือไม่)
12 process  search  kill 

1
คำสั่ง pkill -USR1 -n -x dd หมายความว่าอย่างไร
ฉันใช้ddเพื่อถ่ายโอนข้อมูลภาพดิสก์ไปยังการ์ด sd บน BeagleBone ของฉัน การใช้pkill -USR1 -n -x ddการเชื่อมต่อ ssh กับ BeagleBone นี้ทำให้ฉันได้รับการอัพเดตสถานะของกระบวนการถ่ายโอนซึ่งยอดเยี่ยมมาก ฉันแค่อยากรู้ว่ามันใช้งานได้จริงอย่างไรเพื่อที่ฉันจะสามารถใช้มันได้อย่างมีประสิทธิภาพในอนาคต หลังจากอ่านman pkillแล้วมันยังไม่ได้อธิบายอย่างสมบูรณ์ถึงวิธีการpkill -USR1 -n -x ddทำงานเพื่อให้การอัปเดตสถานะนี้มีประโยชน์มากกับฉัน
12 kill  dd  signals 


4
ฆ่าแผนผังกระบวนการใน top / htop
ฮ็อปช่วยให้ฉันเห็นต้นไม้ของกระบวนการภายในเปลือก ฉันสามารถฆ่ากระบวนการด้วยการกดF9 (KILL)และจากนั้นเลือกสัญญาณ (เช่น15 SIGTERM) ฉันต้องการส่งงานไปฆ่า อย่างไรก็ตามนี่ช่วยให้ฉันสามารถฆ่าหนึ่งกระบวนการในเวลาเดียว มีวิธีฆ่าต้นไม้เต็มของกระบวนการใช้htopหรือไม่
12 kill  top  htop 

4
การฆ่าเชลล์สคริปต์ทำงานในพื้นหลัง
ฉันได้เขียนเชลล์สคริปต์เพื่อตรวจสอบไดเรกทอรีโดยใช้ยูทิลิตี้ inotifywait ของ inotifyt-tools ฉันต้องการให้สคริปต์ทำงานอย่างต่อเนื่องในพื้นหลัง แต่ฉันยังต้องการที่จะหยุดมันเมื่อต้องการ เพื่อให้มันทำงานอย่างต่อเนื่องฉันใช้while true; แบบนี้: while true; do #a set of commands that use the inotifywait utility end ฉันได้บันทึกไว้ในไฟล์/binและทำให้สามารถใช้งานได้ เพื่อให้มันทำงานในพื้นหลังฉันใช้nohup <script-name> &และปิดสถานี ฉันไม่รู้ว่าฉันจะหยุดสคริปต์นี้ได้อย่างไร ฉันได้ดูคำตอบที่นี่และเป็นคำถามที่เกี่ยวข้องอย่างใกล้ชิดมากที่นี่ อัปเดต 1: บนพื้นฐานของคำตอบของ @InfectedRoot ด้านล่างฉันสามารถแก้ปัญหาของฉันโดยใช้กลยุทธ์ต่อไปนี้ ใช้ครั้งแรก ps -aux | grep script_name และใช้sudo kill -9 <pid>เพื่อฆ่ากระบวนการ จากนั้นฉันต้องpgrep inotifywaitและใช้sudo kill -9 <pid>อีกครั้งสำหรับรหัสที่ส่งคืน ใช้งานได้ แต่ฉันคิดว่านี่เป็นวิธีที่ยุ่งฉันกำลังมองหาคำตอบที่ดีกว่า …
12 bash  shell  kill  inotify 

3
หยุดกระบวนการโดยไม่ฆ่ามัน
ดังนั้นฉันจึงมีโปรแกรมถาวรที่ทำงานอยู่เบื้องหลัง การฆ่ามันเพียงแค่ทำให้มันเริ่มต้นใหม่ด้วย PID ที่แตกต่างกัน ฉันต้องการที่จะระงับ (ทำให้นอนโดยไม่ฆ่ามัน) kill -9 ทำสิ่งนี้หรือไม่ ถ้าไม่ควรทำอย่างไร?
11 process  kill 

2
รับสัญญาณก่อนที่กระบวนการจะถูกฆ่าโดย OOM killer / cgroups
ในกลุ่มของเราเรากำลัง จำกัด ทรัพยากรกระบวนการของเราเช่นหน่วยความจำ ( memory.limit_in_bytes) ฉันคิดว่าในท้ายที่สุดแล้วมันก็จัดการผ่าน OOM killer ในเคอร์เนลลินุกซ์ (ดูเหมือนว่าโดยการอ่านซอร์สโค้ด ) มีวิธีรับสัญญาณก่อนที่กระบวนการของฉันจะถูกฆ่าหรือไม่? (เช่นเดียวกับ-notifyตัวเลือกสำหรับSGEqsubซึ่งจะส่งSIGUSR1ก่อนที่กระบวนการจะถูกฆ่า) ฉันอ่านเกี่ยวกับ/dev/mem_notify ที่นี่แต่ฉันไม่มี - ทุกวันนี้มีอย่างอื่นอีกไหม? ฉันอ่านสิ่งนี้ซึ่งดูเหมือนว่าจะค่อนข้างเกี่ยวข้อง ฉันต้องการอย่างน้อยก็ทิ้งร่องรอยกองเล็ก ๆ และบางทีข้อมูลการแก้ปัญหาที่มีประโยชน์อื่น ๆ - แต่บางทีฉันสามารถกู้คืนได้โดยการเพิ่มหน่วยความจำ หนึ่งแก้ปัญหาฉันกำลังใช้อยู่นี้สคริปต์เล็ก ๆซึ่งการตรวจสอบบ่อยถ้าผมสนิท (95%) เพื่อขีด จำกัด SIGUSR1และถ้าเป็นเช่นนั้นก็จะส่งกระบวนการ ใน Bash ฉันกำลังเริ่มต้นสคริปต์นี้ในพื้นหลัง ( cgroup-mem-limit-watcher.py &) เพื่อที่จะคอยดู procs อื่น ๆ ใน cgroup เดียวกันและจะหยุดทำงานโดยอัตโนมัติเมื่อกระบวนการ Bash หลักตาย

2
`kill -p` ใช้ได้ผลจริงหรือ
ในหน้า man ของkillมันเขียนดังต่อไปนี้ สรุป kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals. แต่เมื่อฉันลองทั้งสองครั้งทั้ง RH และ RHEL คำสั่งkill -s …

4
วิธีการฆ่ากระบวนการที่ไม่สามารถฆ่าได้โดยไม่ต้องรีบูตเครื่อง?
มี 5 กระบวนการที่ไม่สามารถฆ่าได้kill -9 $PIDและการดำเนินการcat /proc/$PID/cmdlineจะหยุดเซสชันปัจจุบัน บางทีพวกมันเป็นกระบวนการซอมบี้ การดำเนินการps -ef or htopจะหยุดเซสชันปัจจุบัน แต่topและps -eทำงานได้ดี ดังนั้นดูเหมือนว่ามีปัญหาสองประการที่ระบบไฟล์ไม่ตอบสนอง นี่เป็นเครื่องจักรที่ใช้งานจริงที่ใช้งานเครื่องเสมือนดังนั้นการรีบูตจึงไม่ใช่ตัวเลือก รหัสกระบวนการต่อไปนี้ไม่ทำงาน: 16181 16765 5985 7427 7547 พาเรนต์ของกระบวนการเหล่านี้เริ่มต้น ├─collectd(16765)─┬─{collectd}(16776) │ ├─{collectd}(16777) │ ├─{collectd}(16778) │ ├─{collectd}(16779) │ ├─{collectd}(16780) │ └─{collectd}(16781) ├─collectd(28642)───{collectd}(28650) ├─collectd(29868)─┬─{collectd}(29873) │ ├─{collectd}(29874) │ ├─{collectd}(29875) │ └─{collectd}(29876) และหนึ่งในกระบวนการ qemu ไม่ทำงาน |-qemu-system-x86(16181)-+-{qemu-system-x86}(16232) | |-{qemu-system-x86}(16238) | |-{qemu-system-x86}(16803) | …

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