回答:
UNIXバリアントがプロセスアカウンティングをサポートしているかどうかを確認します。たとえば、Ubuntu(および他のほとんどのLinuxディストリビューション)では、これはacct
パッケージ Install acct http://bit.ly/software-smallによって提供されます。アカウンティングサブシステムが稼働している場合、lastcomm
完了したプロセスに関する情報が表示されます。これには、使用したプロセッサ時間(ウォールクロック時間が記録されていない)が含まれます。
特定のプログラムのタイミングが必要な場合は、を介して呼び出しtime
ます。
より正確な情報が必要な場合は、監査サブシステムなど、より洗練された監査パッケージを使用してください Linuxの。
apt.ubuntu.com
この質問とその答えを見る前に、少しbashスクリプトを作成しました。root権限がなく、acctがインストールされていない場合、またはコマンドを直接起動しない場合(これは、バックグラウンドプロセスのセットアップに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'
しないようにしましたが、それほど簡単で
はありません...常に機能するとは限りません...
egrep '$UID'
、私はそうのようなユーザーだけだとして:ps -eo uid,pid,etime | egrep $PID