पृष्ठभूमि
मैं 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'
प्रश्न
मैं सोच रहा हूं कि इनपुट की पहली पंक्ति को हटाने के लिए एक साधारण यूनिक्स कमांड होना चाहिए।
मुझे पता है कि मैं इसके लिए उपयोग कर सकता हूं, tail
लेकिन मैं यह नहीं गिनना चाहता कि इनपुट में कितनी लाइनें हैं, यह जानने के लिए कि मैं कितना प्रदर्शित करना चाहता हूं।
मैं कुछ ऐसा रहा हूँ head
या tail
लेकिन उल्टे (बजाय प्रदर्शित करने में केवल पहले / धारा के अंतिम भाग में यह प्रदर्शित करता है सब कुछ, लेकिन धारा के प्रारंभ / समाप्ति)।
ध्यान दें
मैं | grep [[:digit:]]
अपने awk
आदेश के बाद जोड़कर इस मुद्दे को हल करने में कामयाब रहा, लेकिन मैं अभी भी एक फ़ाइल की पहली पंक्ति को हटाने का एक तरीका ढूंढ रहा हूं क्योंकि मुझे लगता है कि अन्य परिदृश्यों में यह काफी उपयोगी होगा।
awk
कमांड) कैसे काम करता है।
NR
उदाहरण के लिए हेडर रिकॉर्ड (लाइन) का उपयोग कर सकते हैंawk 'NR>1 {print $1;}'
। बेहतर अभी तक - का उपयोग करेंpgrep -u
याpkill -u