Add cpu time to ps -l (#2507)

This commit is contained in:
Chris Gillespie
2020-09-06 22:02:45 -07:00
committed by GitHub
parent c9ffd6afc0
commit 3150e70fc7
4 changed files with 38 additions and 1 deletions

View File

@ -1,12 +1,14 @@
use futures::{StreamExt, TryStreamExt};
use heim::process::{self as process, Process, ProcessResult};
use heim::units::{information, ratio, Ratio};
use heim::units::{information, ratio, time, Ratio};
use std::usize;
use nu_errors::ShellError;
use nu_protocol::{TaggedDictBuilder, UntaggedValue, Value};
use nu_source::Tag;
use num_bigint::BigInt;
use std::time::Duration;
#[derive(Default)]
@ -68,6 +70,15 @@ pub async fn ps(tag: Tag, long: bool) -> Result<Vec<Value>, ShellError> {
UntaggedValue::filesize(memory.vms().get::<information::byte>()),
);
if long {
if let Ok(cpu_time) = process.cpu_time().await {
let user_time = cpu_time.user().get::<time::nanosecond>().round() as i64;
let system_time = cpu_time.system().get::<time::nanosecond>().round() as i64;
dict.insert_untagged(
"cpu_time",
UntaggedValue::duration(BigInt::from(user_time + system_time)),
)
}
if let Ok(parent_pid) = process.parent_pid().await {
dict.insert_untagged("parent", UntaggedValue::int(parent_pid))
}