带有iso日期格式的ps输出?

gue*_*tli 11 shell ps date

我想按lstart(过程开始)对此输出进行排序:

ps -eo lstart,pid,cmd 
Run Code Online (Sandbox Code Playgroud)

有没有办法以 YYYY-MM-DD HH:MM:SS 这样的 ISO 格式输出 lstart?

但仅靠排序并不能解决问题。我真的很想拥有 ISO 日期格式。

Rom*_*est 14

有没有办法以lstartISO格式输出YYYY-MM-DD HH:MM:SS

awk+date合作:

ps -eo lstart,pid,cmd --sort=start_time | awk '{ 
       cmd="date -d\""$1 FS $2 FS $3 FS $4 FS $5"\" +\047%Y-%m-%d %H:%M:%S\047"; 
       cmd | getline d; close(cmd); $1=$2=$3=$4=$5=""; printf "%s\n",d$0 }'
Run Code Online (Sandbox Code Playgroud)

使用ps etimes关键字的替代方法(自进程启动以来经过的时间,以秒为单位):

ps -eo etimes,pid,cmd --sort=etimes | awk '{ 
       cmd="date -d -"$1"seconds +\047%Y-%m-%d %H:%M:%S\047"; 
       cmd | getline d; close(cmd); $1=""; printf "%s\n",d$0 }' 
Run Code Online (Sandbox Code Playgroud)
  • date -d -"$1"seconds- 当前时间戳和elapsed时间的差值,会给出进程的时间戳

  • 如果你使用 ps 格式 `etimes` 而不是 `lstart`,你会得到以秒为单位的经过时间,这更容易传递给 `date -d -999seconds`。 (3认同)
  • 没有更简单的方法吗? (2认同)

Ipo*_*cer 4

您可以通过以下方式排序:

ps -eo lstart,pid,cmd --sort=start_time
Run Code Online (Sandbox Code Playgroud)