พื้นหลัง
ฉันใช้เซิร์ฟเวอร์ SSH และมีผู้ใช้ที่ฉันต้องการลบ ฉันไม่สามารถลบผู้ใช้รายนี้ได้เนื่องจากเขากำลังใช้งานกระบวนการบางอย่างที่ฉันต้องฆ่าเสียก่อน
นี่คือขั้นตอนที่ฉันใช้อยู่ในขณะนี้เพื่อค้นหารหัสกระบวนการทั้งหมดของผู้ใช้ที่ฉันกำลังใช้:
ps -u user | awk '{print $1;}'
ผลลัพธ์มีลักษณะดังนี้:
PID
2121
2122
2124
2125
2369
2370
ฉันต้องการไปป์นี้เพื่อkill -9
ฆ่ากระบวนการทั้งหมดเพื่อให้ฉันสามารถลบผู้ใช้ที่โง่เช่นนี้:
ps -u user | awk '{print $1;}' | sudo xargs kill -9
แต่สิ่งนี้ไม่ทำงานเนื่องจากPID
หัวข้อ:
kill: failed to parse argument: 'PID'
คำถาม
ฉันคิดว่าจะต้องมีคำสั่ง Unix ง่าย ๆ เพื่อลบบรรทัดแรกของอินพุต
ฉันรู้ว่าฉันสามารถใช้ tail
สิ่งนี้ได้ แต่ฉันไม่ต้องการนับจำนวนบรรทัดที่อินพุตมีเพื่อคำนวณจำนวนที่ฉันต้องการแสดง
ฉันกำลังมองหาบางสิ่งที่ชอบhead
หรือtail
คว่ำ แต่แทนที่จะแสดงเฉพาะส่วนแรก / สุดท้ายของสตรีมที่แสดงทุกอย่างยกเว้นส่วนเริ่มต้น / สิ้นสุดของสตรีม
บันทึก
ฉันจัดการเพื่อแก้ไขปัญหานี้ได้โดยเพียงเพิ่มคำสั่ง| grep [[:digit:]]
ของฉันawk
แต่ฉันยังคงมองหาวิธีการลบบรรทัดแรกของไฟล์เพราะฉันคิดว่าจะมีประโยชน์มากในสถานการณ์อื่น ๆ
awk
คำสั่ง)
NR
awk 'NR>1 {print $1;}'
ยังดีกว่า - ใช้งานpgrep -u
หรือpkill -u