언제부터 대본을 쓰기 시작했나요?

언제부터 대본을 쓰기 시작했나요?

내가 원하는 것은,

-bash-3.2$ ps -aef | grep 29137
jeeadm    9794  1190  0 09:22 pts/2    00:00:00 grep 29137
jeeadm   29137     1  0 Sep02 ?        00:00:21 Java

두 번째 행, 다섯 번째 열 항목. 출력에는 날짜만 표시되므로 전체 타임스탬프를 얻을 수 있습니까?

답변1

lstart다음 목적으로 이 필드를 사용할 수 있습니다 .

# ps -aefO lstart | head       
  PID                  STARTED S TTY          TIME COMMAND
31379 Sat Aug  2 21:31:11 2014 S pts/3    00:00:00 zsh
31399 Sat Aug  2 21:31:11 2014 S pts/3    00:00:00  \_ vim
27313 Sat Aug 30 13:19:27 2014 S pts/4    00:00:20 zsh
27193 Sat Aug 30 13:18:11 2014 S pts/2    00:00:19 zsh
25196 Wed Sep  3 22:37:57 2014 S pts/16   00:00:00 zsh
25231 Wed Sep  3 22:38:00 2014 S pts/16   00:00:00  \_ sudo
25241 Wed Sep  3 22:38:04 2014 S pts/16   00:00:02      \_ zsh
24642 Sat Aug 30 12:50:48 2014 S pts/0    00:00:20 zsh
23366 Thu Sep  4 08:47:30 2014 S pts/18   00:00:00 zsh

답변2

노력하다

ps -p 11517 -o stime

하루(자정) 이후 ps는 시간 대신 시작일을 표시합니다.

한 달 후에는 월요일과 연도를 얻게 됩니다.

1년이 지나면 1년이 시작됩니다.

답변3

프로세스가 시작된 타임스탬프를 찾으려면 몇 가지 계산을 수행해야 합니다. 다음 명령을 사용하십시오.

echo "$(date +%s) - $(ps -o etime --no-headers -p $pid | \
awk -F'[:-]' '{print ($4+($3*60)+($2*60*60)+($1*24*60*60))}')" | bc -l

값은 $pid프로세스 ID여야 합니다.

설명하다:

  • echo "$(date +%s): 현재 타임스탬프를 인쇄합니다.
  • ps -o etime --no-headers -p $pid: 제목 없이 프로세스의 실행 시간을 인쇄합니다.
  • awk -F'[:-]': 구분 기호를 및 awk로 설정 하면 시간이 다음 형식으로 인쇄됩니다.:-dd-hh:mm:ss
  • '{print ($4+($3*60)+($2*60*60)+($1*24*60*60))}'초 단위로 값을 계산합니다.
  • bc -l: 출력을 bc( timestamp_now - elapsed_seconds = timespamp_at_process_start) 로 파이프합니다.

예를 들어, 42일 동안 실행된 시스템의 init 프로세스를 사용하여 테스트했습니다. 출력은 1406124152, 즉 입니다 07 / 23 / 14 @ 2:02:31pm UTC.

관련 정보