यह जाँचने के लिए कि कोई प्रक्रिया कब तक पूरी हुई?


14

वर्तमान में मैं यह जांचने के लिए निम्नलिखित का उपयोग कर रहा हूं कि वास्तव में कितनी देर तक चलने वाली प्रक्रिया है:

ps -eo uid,pid,etime | egrep '^ *MY_ID' | egrep 'PID_OF_PROCESS'

और वह निम्न आउटपुट देता है:

MY_ID PID_OF_PROCESS       00:16

हालाँकि, इस प्रक्रिया के समाप्त होने के बाद मैं यह पता लगाना चाहता हूं कि यह वास्तव में कितनी देर तक चला लेकिन मुझे वह जानकारी नहीं मिल सकी।

जवाबों:


15

मुझे नहीं लगता कि प्रक्रिया समाप्त होने के बाद ऐसी जानकारी प्राप्त करना संभव है।

यदि आप पहले से जानते हैं कि आपको उस जानकारी की आवश्यकता होगी, तो आप कमांड को चला सकते हैं

time <command>

जैसे

~> time sleep 1

real        0m1.003s
user        0m0.002s
sys         0m0.001s

7

जांचें कि क्या आपका यूनिक्स संस्करण प्रक्रिया लेखांकन का समर्थन करता है । उदाहरण के लिए, उबंटू (और अधिकांश अन्य लिनक्स वितरण) पर, यह acctपैकेज स्थापित करें acct http://bit.ly/software-small द्वारा प्रदान किया गया है । यदि अकाउंटिंग सबसिस्टम ऊपर और चल रहा है, तो lastcommसमाप्त प्रक्रियाओं के बारे में जानकारी दिखाता है, जिसमें उन्होंने कितना प्रोसेसर समय का उपयोग किया है (दीवार घड़ी का समय रिकॉर्डिंग नहीं है)।

यदि आपको किसी विशिष्ट कार्यक्रम के लिए समय की आवश्यकता है, तो इसके माध्यम से आह्वान करेंtime

यदि आपको अधिक सटीक जानकारी की आवश्यकता है, तो एक कट्टर ऑडिटिंग पैकेज का उपयोग करें, उदाहरण के लिए लिनक्स के तहत ऑडिट सबसिस्टम


इस उत्तर ने अपनी छवि खो दी है।
Mattdm

@mattdm ओह, यह लिंक है जो कि लिंक उबंटू के लिए लिंक करने के लिए मानक था , और फिर छवि को imgur से हटा दिया गया। मैंने इसे एसई के सैकड़ों बार इस्तेमाल किया होगा और मैं उन सभी को संपादित करने की संभावना को फिर से याद नहीं करता। मैं अभी भी एसई के लिए एक स्वचालित प्रतिस्थापन कर रहा हूं, जो वे तब तक नहीं करेंगे जब तक कि वे सभी जावा प्रलेखन स्थानांतरित नहीं हुए। apt.ubuntu.com
गिल्स एसओ- बुराई को रोकना '

1

इससे पहले कि मैं इस सवाल और इसके जवाबों को देखूं, मैंने थोड़ी बैश स्क्रिप्ट बनाई। यह अभी भी उपयोगी है, यदि आपके पास रूट अधिकार नहीं है और एसक्यूटी स्थापित नहीं है या आप सीधे अपने आदेश को लागू नहीं करते हैं (मेरे मामले में: मैं पृष्ठभूमि प्रक्रियाओं को स्थापित करने के लिए एक gui का उपयोग करता हूं)। आपको चलाने से पहले PID प्राप्त करने की आवश्यकता है (कोई भी इसे स्क्रिप्ट में जोड़ने में दिलचस्पी रखता है? :)

#!/bin/bash

echo "Checking run time"
read -p "What is the pid? " PID

while true; do
    # sleep needed! used to reduce cpu usage and mass of output
    sleep 5
    ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done

इसके साथ, PROCESS_NAME का PID ढूंढें

ps aux | awk 'NR == 1 || /PROCESS_NAME/'

वास्तव में मैंने स्क्रिप्ट को गैर-अस्पष्ट बनाने के लिए USER-ID और PID के संयोजन की कोशिश की, लेकिन यह इतना आसान नहीं है ... ps -eo uid,pid,etime | egrep '$UID[[:space:]]$PID'यह काम नहीं लगता ...


मुझे जिस चीज की जरूरत थी! मैंने पाया कि Centos 6.8 पर मुझे '$ PID' के आसपास के उद्धरणों को छोड़ना होगा और स्किप करना होगा egrep '$UID'क्योंकि मैं केवल ऐसा उपयोगकर्ता हूं:ps -eo uid,pid,etime | egrep $PID
क्रिस एडम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.