यह सेकंड में पहली बार धर्मान्तरित होता है:
ps -p $PROCID -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
एक उदाहरण के रूप में, ps कमांड का उत्पादन होता है:
$ ps -p 5403 -o cputime,etimes
TIME ELAPSED
01:33:38 1128931
awk
आदेश संसाधित करता है कि और रिटर्न:
ps -p 5403 -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
5618 1128931
व्याख्या
-F'[: ]+'
यह awk को कॉलोन और रिक्त स्थान दोनों को क्षेत्र विभाजक मानने के लिए कहता है। इस तरह, घंटे, मिनट और सेकंड अलग-अलग फ़ील्ड के रूप में दिखाई देते हैं।
/:/ {t=$3+60*($2+60*$1); print t,$NF}
प्रारंभिक /:/
केवल उन लाइनों पर काम करने के लिए कोड को प्रतिबंधित करता है जिनमें एक बृहदान्त्र शामिल है। यह हेडर लाइनों को हटा देता है। सेकंड की संख्या की गणना घंटे, मिनट, सेकंड से होती है t=$3+60*($2+60*$1)
। इसके बाद के परिणामी मूल्य को t
समय बीतने के साथ मुद्रित किया जाता है।
दिनों को संभालना
अगर ps
दिन, घंटे, मिनट, सेकंड का उत्पादन होता है:
2-03:01:33
फिर, इस कोड का उपयोग करें:
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ {t=$4+60*($3+60*($2+24*$1)); print t,$NF}'
यदि दिन आउटपुट के लिए पूर्व निर्धारित किया जा सकता है या नहीं हो सकता है, तो इस संयोजन कमांड का उपयोग करें:
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ && NF==5 { t=$4+60*($3+60*($2+24*$1)); print t,$NF} /:/ && NF==4 {t=$3+60*($2+60*$1); print t,$NF}'