cmdsubst>zshशेल द्वारा मुद्रित माध्यमिक संकेत है जब यह दर्ज किया जा रहा है कमांड प्रतिस्थापन के अंत की प्रतीक्षा कर रहा है।
यदि आपको केवल दर्ज करने के बाद वह संकेत मिलता है killl<Return>, तो एकमात्र उचित स्पष्टीकरण यह है कि आपके पास एक उपनाम (जो स्ट्रिंग मैक्रो विस्तार का कुछ रूप है) killlउस चीज के लिए फैलता है जिसमें एक अनिर्दिष्ट $(...)कमांड प्रतिस्थापन होता है, जैसे:
$ alias 'killl=echo $(lsof -ti'
$ killl :22
cmdsubst>
जहाँ zshआप उस $(...)कमांड प्रतिस्थापन को बंद करने के लिए कह रहे हैं ।
कुछ और नोट:
- का उत्पादन
lsofपिड द्वारा सॉर्ट किया जाता है। pid नंबर लिपटे हुए हैं, एक बड़ा pid इस बात की गारंटी नहीं है कि प्रक्रिया बाद में शुरू की गई थी।
-i:8080 टीसीपी या यूडीपी सॉकेट की रिपोर्ट करेगा, जिसमें स्रोत या गंतव्य पोर्ट के रूप में 8080 पोर्ट है, चाहे वह सुनने, स्वीकार करने या सॉकेट को जोड़ने के लिए हो।
- यदि आप केवल पीआईडी प्राप्त करना चाहते हैं, तो आप निम्न
-tविकल्प का उपयोग कर सकते हैं lsof:lsof -ti:8080 | tail -n2
kill -9है kill -s KILLजो एक संकेत है कि आवेदन शान से बाहर निकलने के लिए पर कार्रवाई नहीं कर सकते हैं भेजता है,। इसका उपयोग केवल अंतिम उपाय के रूप में किया जाना चाहिए।
सबसे हाल ही में शुरू की गई प्रक्रिया को मारने के लिए पोर्ट 8080 पर एक सॉकेट बाउंड (या तो अंत) है, आप यह कर सकते हैं:
#! /bin/sh -
unset IFS
pids=$(lsof -ti:8080) &&
LC_ALL=C ps -o pid=,lstart= -p $pids |
LC_ALL=C sort -k6,6n -k4,4M -k3,3n -k5,5 -k1,1n |
awk 'END{system("kill " $1)}'
(मानता है कि GNU sort(जैसा psकि lstartmacOS पर पाया जाता है) और एक कार्यान्वयन जो स्तंभ का समर्थन करता है (जैसे macOS ’और procps-ng, हालांकि कोड को एनपीएस के लिए अपडेट किया जाना होगा-जहां महीने और दिन खेतों की अदला-बदली होती है)।
killl?