পটভূমি
আমি একটি এসএসএইচ সার্ভার চালাচ্ছি এবং এই ব্যবহারকারীটিকে আমি মুছতে চাই। আমি এই ব্যবহারকারীকে মুছতে পারি না কারণ তিনি বর্তমানে কয়েকটি প্রসেস চালাচ্ছেন যা আমার প্রথমে খুন করা দরকার।
আমি বর্তমানে যে পাইপলাইনটি ব্যবহার করছি বর্তমানে ব্যবহারকারীর সমস্ত প্রক্রিয়া আইডির সন্ধান করতে আমি এটি ব্যবহার করছি:
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