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

ใช้ใน bash / shell เพื่อฆ่ากระบวนการ

8
จะฆ่าได้ถ้ากระบวนการกำลังทำงานอยู่เท่านั้น?
ขณะนี้ฉันใช้บรรทัดเช่นนี้ในไฟล์สคริปต์ sh ของฉัน: kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'` แต่ฉันสงสัยว่าจะเรียกใช้เฉพาะเมื่อกระบวนการ ( myServerที่นี่) กำลังทำงานอยู่หรือไม่

4
ฉันจะทราบได้อย่างไรว่า jar-files java กำลังทำงานอยู่ในขณะนี้ (และ PID ของพวกเขา)
ฉันมี.jarไฟล์ที่มีชื่อเสียงสำหรับความผิดปกติ เมื่อเกิดความผิดปกติจะมีเพียงการรีสตาร์ทเท่านั้น ฉันมีวิธีการตรวจสอบว่าทำงานผิดปกติ (อ่านล็อกไฟล์ของกล่าวว่า.jar) ดังนั้นฉันต้องการที่จะเขียนสคริปต์ที่ฆ่ากระบวนการเมื่อใดก็ตามที่เกิดความผิดปกติ ปัญหาคือ: confus@confusion:~$ ps -A ... 4438 ? 00:00:00 java 4439 ? 00:00:00 java 4443 ? 00:00:00 java ... ชื่อกระบวนการของการรันทั้งหมด.jarนั้นเป็น "java" ตามธรรมชาติ ฉันจะรู้ได้อย่างไรว่า "java" - โปรเซสใดเป็นตัวที่ฉันต้องการฆ่านั่นคืออันที่ทำงานอยู่foobar.jar?
12 java  process  kill 

2
killall ไม่ได้ฆ่าทั้งหมดและไม่ค่อยฆ่าคำสั่งนั้นคืออะไร?
ฉันใช้killallคำสั่งเพื่อฆ่ากระบวนการเป็นครั้งคราว เหตุผลที่ฉันบอกว่าบางครั้งมันไม่ได้ผลสำหรับฉัน ตัวอย่างล่าสุดคือธันเดอร์เบิร์ดที่มีหน่วยความจำประมาณ 5 อินดังนั้นฉันจึงตัดสินใจใช้killallคำสั่ง มันฆ่า 2 กระบวนการและ 3 ถูกทิ้งไว้ในหน่วยความจำ พยายามอีกครั้งและทั้งสามยังคงอยู่ที่นั่น ดังนั้นฉันใช้kill -9คำสั่งด้วยตนเองเพื่อฆ่าแต่ละกระบวนการผ่าน pids ของพวกเขา ที่ได้ผล ฉันส่วนใหญ่ใช้kill -9คำสั่งตามที่ได้ผล killallคำสั่งมีให้ฉันลงหลายครั้งผมก็ไม่รำคาญใช้มัน แต่ต้องมีเหตุผลว่าทำไมมันไม่ทำงาน ฉันใช้ผิดหรือเปล่า? ฉันรู้ว่ามีคำสั่งอื่น ๆ เช่นpkillแต่ฉันจะขอบคุณที่เข้าใจว่าทำไมkillallคำสั่งไม่ทำงานตามที่คาดไว้ ฉันได้พยายามฆ่าเพียงแค่กระบวนการเดียวและมันก็เป็นเรื่องฮิตและคิดถึง แต่kill -9คำสั่งทำงานทุกครั้ง ความคิดใด ๆ PS: sudoไม่ได้สร้างความแตกต่าง
12 process  kill  killall 

2
ฉันจะเริ่มต้นกระบวนการด้วยชื่ออื่นได้อย่างไร
โดยทั่วไปฉันต้องการเริ่มต้นกระบวนการแบบไดนามิกซึ่งอาจสร้างกระบวนการลูก ๆ ของพวกเขาเองฉันยังต้องการฆ่ากลุ่มของกระบวนการที่ฉันเพิ่งสร้างเมื่อใดก็ตามที่ฉันต้องการ วิธีหนึ่งที่ฉันคิดได้ก็คือเริ่มกระบวนการด้วยชื่อ (เพื่อแยกความแตกต่างเป็นกลุ่ม) จากนั้นใช้pkillเพื่อฆ่าพวกเขาด้วยชื่อ คำถามคือวิธีเริ่มกระบวนการด้วยชื่อเพื่อให้ฉันสามารถใช้pkillเพื่อฆ่าพวกเขาด้วยชื่อ? ฉันเปิดให้โซลูชั่นอื่น ๆ เช่นกัน
12 process  kill 

2
ฉันจะปิด * * Ctrl + Alt + Backspace ได้อย่างไร
อาคารในคำถามจาก 2010 (3 ปีที่ผ่านมา) ผมพยายามที่จะบรรลุตรงข้ามแน่นอน: ฉันต้องการที่จะปิดการใช้งานCtrl + Alt+ ←แป้นพิมพ์ลัดที่จะฆ่า X serverสำหรับฉันดูเหมือนว่าจะ ปิดการใช้งานSystem->Preferences->Keyboardแต่ในทางปฏิบัติมันยังคงทำงานอยู่ dontzapไม่ได้ดูเหมือนจะเป็น "งาน" (ในขณะที่การพัฒนาอย่างแข็งขัน) อย่างใดอย่างหนึ่งและดูเหมือนว่า counterintuitive ที่จะมีการติดตั้งเพื่อที่จะปิดการใช้งานคีย์คำสั่งผสม มีวิธีอื่นใดในการปิดการใช้งานทางลัดอย่างถูกต้องหรือไม่ PS: ผมคิดว่ามันเป็นข้อผิดพลาด PPS: บางเวลาที่ผ่านมาฉันเปิดใช้งานเพราะฉันคิดว่ามันค่อนข้างเย็น - ไม่ทราบว่ามันเป็นถนนเดินรถทางเดียวโดยไม่มีตัวเลือกการทำงาน / เชื่อถือได้เพื่อปิดการใช้งานอีกครั้ง

2
วิธีฆ่าแอปพลิเคชันเช่นบน Windows
ฉันค้นหาบน google แต่ฉันไม่พบว่ามีประโยชน์อะไร อย่างไรก็ตามฉันเล่น Crysis 2 (กับ PlayOnLinux) และเกมล้มเหลว แต่ฉันไม่สามารถฆ่ากระบวนการฉันลองCtrl+ Alt+ Tแต่ไม่มีอะไรนอกจากเกมปรากฏบนหน้าจอฉันต้องCtrl+ Alt+ Delและจบเซสชันด้วย สูญเสียงานของฉันทั้งหมด ใน Windows มีคีย์ Windows (ซึ่งเปิดแผงความสามัคคี) แต่ฉันไม่สามารถทำอะไรได้ และมีCtrl+ Alt+ Delซึ่งเปิดกระบวนการทั้งหมด (บน Windows) แต่เทอร์มินัลไม่แสดงขึ้นกับฉัน ( Ctrl+ Alt+ T) ฉันไม่สามารถฆ่ากระบวนการใด ๆ ความช่วยเหลือใด ๆ

2
อะไรคือสัญญาณการฆ่าฮ็อตท็อปที่แตกต่างกัน?
ฉันเพิ่งเริ่มใช้htopและฉันต้องการฆ่ากระบวนการ แต่เมื่อกดF9บนกระบวนการมันทำให้ฉันมีรายการตัวเลือกนี้ฉันเพิ่งเลือกตัวเลือกที่ถูกเลือกโดยค่าเริ่มต้น แต่ไม่รู้ว่าอะไร ที่จริงแล้วแม้ว่ามันจะดูเหมือนจะทำงาน: ดังนั้นคำถามของฉันคืออะไรตัวเลือกต่าง ๆ เหล่านี้คืออะไรและวิธีใดที่ดีที่สุดที่จะใช้เพื่อฆ่ากระบวนการ
9 process  kill  htop 

2
คำสั่ง Oneliner ใช้ kill กำหนดหมายเลขพอร์ต tcp แทน PID?
ฉันมักจะทำเช่น sudo netstat -lpn |grep :8088 ดูผลลัพธ์ tcp6 0 0 :::8088 :::* LISTEN 11189/java แล้ว sudo kill -kill 11189 ฉันต้องการคำสั่งที่สะดวกยิ่งขึ้นเหมือนกับkillatport 8088ที่ใช้หมายเลขพอร์ต tcp เป็นตัวแปรและฉันสามารถสร้างเป็นนามแฝงของไพพ์ไลน์ที่ทำในสิ่งที่ฉันต้องการได้ แต่ฉันจะรับ PID จากเอาต์พุตและไพพ์ได้อย่างไร ไปที่คำสั่ง kill หรือไม่? ฉันคิดว่าฉันอาจใช้ awk เพื่อรับ PID จากเอาต์พุตจาก netstat แต่ฉันจะป้องกันและสร้างพอร์ตที่ตรงกันได้อย่างไรเพื่อให้อินพุต 80 ไม่ตรงกับ 8080 และเช่นเดียวกัน ฉันควรทำให้โปรแกรม C เป็นโปรแกรมแทนหรือไม่ หรือมียูทิลิตี้ขนาดเล็กเช่นนี้แล้ว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.