[Home](https://kellyjonbrazil.github.io/jc/)
# jc.parsers.time
jc - JSON CLI output utility `/usr/bin/time` command output parser
Output from `/usr/bin/time` is sent to `STDERR`, so the `-o` option can be
used to redirect the output to a file that can be read by `jc`.
Alternatively, the output from `/usr/bin/time` can be redirected to `STDOUT`
so `jc` can receive it.
Note: `/usr/bin/time` is similar but different from the Bash builtin
`time` command.
Usage (cli):
$ /usr/bin/time -o timefile.out sleep 2; cat timefile.out | \\
jc --time -p
Usage (module):
import jc
result = jc.parse('time', time_command_output)
or
import jc.parsers.time
result = jc.parsers.time.parse(time_command_output)
Schema:
Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage
https://man7.org/linux/man-pages/man1/time.1.html
{
"real_time": float,
"user_time": float,
"system_time": float,
"elapsed_time": string,
"elapsed_time_hours": integer,
"elapsed_time_minutes": integer,
"elapsed_time_seconds": integer,
"elapsed_time_centiseconds": integer,
"elapsed_time_total_seconds": float,
"cpu_percent": integer, # null if ?
"average_shared_text_size": integer,
"average_unshared_data_size": integer,
"average_unshared_stack_size": integer,
"average_shared_memory_size": integer,
"maximum_resident_set_size": integer,
"block_input_operations": integer, # [0]
"block_output_operations": integer, # [1]
"major_pagefaults": integer,
"minor_pagefaults": integer,
"swaps": integer,
"page_reclaims": integer,
"page_faults": integer,
"messages_sent": integer,
"messages_received": integer,
"signals_received": integer,
"voluntary_context_switches": integer,
"involuntary_context_switches": integer
"command_being_timed": string,
"average_stack_size": integer,
"average_total_size": integer,
"average_resident_set_size": integer,
"signals_delivered": integer,
"page_size": integer,
"exit_status": integer
}
[0] aka File system inputs
[1] aka File system outputs
**Examples**:
$ /usr/bin/time --verbose -o timefile.out sleep 2; cat timefile.out | \\
jc --time -p
{
- `"command_being_timed"` - "sleep 2",
- `"user_time"` - 0.0,
- `"system_time"` - 0.0,
- `"cpu_percent"` - 0,
- `"elapsed_time"` - "0:02.00",
- `"average_shared_text_size"` - 0,
- `"average_unshared_data_size"` - 0,
- `"average_stack_size"` - 0,
- `"average_total_size"` - 0,
- `"maximum_resident_set_size"` - 2084,
- `"average_resident_set_size"` - 0,
- `"major_pagefaults"` - 0,
- `"minor_pagefaults"` - 72,
- `"voluntary_context_switches"` - 2,
- `"involuntary_context_switches"` - 1,
- `"swaps"` - 0,
- `"block_input_operations"` - 0,
- `"block_output_operations"` - 0,
- `"messages_sent"` - 0,
- `"messages_received"` - 0,
- `"signals_delivered"` - 0,
- `"page_size"` - 4096,
- `"exit_status"` - 0,
- `"elapsed_time_hours"` - 0,
- `"elapsed_time_minutes"` - 0,
- `"elapsed_time_seconds"` - 2,
- `"elapsed_time_centiseconds"` - 50,
- `"elapsed_time_total_seconds"` - 2.5
}
$ /usr/bin/time --verbose -o timefile.out sleep 2; cat timefile.out | \\
jc --time -p -r
{
- `"command_being_timed"` - "\"sleep 2\"",
- `"user_time"` - "0.00",
- `"system_time"` - "0.00",
- `"cpu_percent"` - "0",
- `"elapsed_time"` - "0:02.00",
- `"average_shared_text_size"` - "0",
- `"average_unshared_data_size"` - "0",
- `"average_stack_size"` - "0",
- `"average_total_size"` - "0",
- `"maximum_resident_set_size"` - "2084",
- `"average_resident_set_size"` - "0",
- `"major_pagefaults"` - "0",
- `"minor_pagefaults"` - "72",
- `"voluntary_context_switches"` - "2",
- `"involuntary_context_switches"` - "0",
- `"swaps"` - "0",
- `"block_input_operations"` - "0",
- `"block_output_operations"` - "0",
- `"messages_sent"` - "0",
- `"messages_received"` - "0",
- `"signals_delivered"` - "0",
- `"page_size"` - "4096",
- `"exit_status"` - "0"
}
## info Objects
```python
class info()
```
Provides parser metadata (version, author, etc.)
#### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
**Arguments**:
- `data` - (string) text data to parse
- `raw` - (boolean) unprocessed output if True
- `quiet` - (boolean) suppress warning messages if True
**Returns**:
Dictionary. Raw or processed structured data.
## Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)