হোয়াইটস্পেস ছাড়াই 'পিএস' কমান্ড আউটপুট ফর্ম্যাট করুন


11

psকিছু বৈশিষ্ট্যের সাথে চলমান সমস্ত প্রক্রিয়াগুলির নির্দিষ্ট বৈশিষ্ট্য পেতে আমার কাছে নিম্নলিখিত কমান্ডটি রয়েছে:

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args"

আমি এটি CSV এ ফর্ম্যাট করতে চাই যাতে আমি এটি বিশ্লেষণ করতে পারি। দ্রষ্টব্য, পার্সিংকে সহজ করার জন্য আমি আরগগুলি শেষে রেখেছি; আমি মনে করি না যে ,অন্য কোনও কলামে একটি বিদ্যমান থাকবে - আমি ভুল হলে দয়া করে আমাকে সংশোধন করুন।

আমি সাদা স্থানটি কীভাবে সরিয়ে ফেলব?

উত্তর:


10

ম্যান পৃষ্ঠা থেকে:

-o format       user-defined format.
                format is a single argument in the form of a blank-separated or comma-separated list, which offers a
                way to specify individual output columns. The recognized keywords are described in the STANDARD FORMAT
                SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o comm=Command) as
                desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be
                output. Column width will increase as needed for wide headers; this may be used to widen up columns
                such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control
                (ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality;
                output may be one column named "X,comm=Y" or two columns named "X" and "Y". Use multiple -o options
                when in doubt. Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and
                DefBSD are macros that may be used to choose the default UNIX or BSD columns.

তাই চেষ্টা করুন:

/bin/ps -o uname:1,ppid:1,pid:1

আপনি কি গ্রহণযোগ্য উত্তর হিসাবে এটি নির্বাচন করতে আপত্তি করবেন? @ জেফ-স্ক্যাললার
ফিলিপ আলভারেজ

5

যেহেতু প্রথম 6 টি ক্ষেত্রে ফাঁকা অক্ষর থাকা উচিত নয় (যদি না আপনি তাদের ব্যবহারকারীর নামে অনুমতি না দেন), আপনি আউটপুট পোস্ট-প্রক্রিয়া করতে পারেন:

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args" | sed '
  s/[\"]/\\&/g
  s/  */,/;s/  */,/;s/  */,/;s/  */,/;s/  */,/;s/  */,"/
  s/$/"/'

এখানে "এস এবং \এসগুলি সহ পালানোর পরে সর্বশেষ ক্ষেত্রটি (অর্গগুলি) উদ্ধৃত করা \

যেমন একটি আউটপুট উত্পাদন করে:

stephane,3641,3702,10-00:20:24,0.1,0.3,"some cmd,and,args... VAR=foo\"bar"

2

আপনি sedসাথে ব্যবহার করতে পারেন ps। সুতরাং আপনি যা চান তা এখানে: -

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args" | sed 's/\ /,/g'

তবে আমি আশ্চর্য হই যে এটি কার্যকর হবে কিনা, কারণ psনিজেই আউটপুট প্রচুর পেয়েছে ,


যেমনটি আমি উল্লেখ করেছি, আমি বিশ্বাস করি যে আমি কেবল একটি কলাম বেছে ,নিয়েছি যা একটি শেষে থাকতে পারে যা আমি থাকতে পারি, তবে, এই সমাধানটি ,আমি চাই না যে কলামটি সরিয়ে ফেলবে ।
চিতা

উৎপন্ন আউটপুটটি দেখুন এবং আপনি যদি এটি পছন্দনীয় মনে করেন তবে আমাকে বলুন :) বিশেষত কমান্ড কলামটি লক্ষ্য করুন।
অলি

যে হিসাবে একই হবে tr ' ' ,। আপনি সম্ভবত tr -s ' ' ,এখানে চান ।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.