장기간 실행되는 Linux 프로세스의 시작 시간을 얻는 방법은 무엇입니까? [닫은]
이전 실행 프로세스의 시작 시간을 얻을 수 있습니까? 것 같다 ps
올해 시작하지 않은 경우 오늘 시작하지 않은 경우 날짜 (시간이 아니라), 만 년을보고합니다. 오래된 프로세스에서 정밀도가 영원히 손실됩니까?
lstart
다음 명령과 같이 포맷터를 지정하고을 사용할 수 있습니다 .
ps -eo pid,lstart,cmd
위의 명령은 PID, 명령 실행 및 날짜 + 시간 시작을 얻기 위해 포맷터와 함께 모든 프로세스를 출력합니다.
예 (데비안 / Jessie 명령 행에서)
$ ps -eo pid,lstart,cmd
PID CMD STARTED
1 Tue Jun 7 01:29:38 2016 /sbin/init
2 Tue Jun 7 01:29:38 2016 [kthreadd]
3 Tue Jun 7 01:29:38 2016 [ksoftirqd/0]
5 Tue Jun 7 01:29:38 2016 [kworker/0:0H]
7 Tue Jun 7 01:29:38 2016 [rcu_sched]
8 Tue Jun 7 01:29:38 2016 [rcu_bh]
9 Tue Jun 7 01:29:38 2016 [migration/0]
10 Tue Jun 7 01:29:38 2016 [kdevtmpfs]
11 Tue Jun 7 01:29:38 2016 [netns]
277 Tue Jun 7 01:29:38 2016 [writeback]
279 Tue Jun 7 01:29:38 2016 [crypto]
...
ps
의 맨 페이지를 읽 거나 다른 포매터에 대해서는 Opengroup의 페이지 를 확인할 수 있습니다 .
ps 명령 (적어도 많은 Linux 배포에서 사용되는 procps 버전)에는 프로세스 시작 시간과 관련된 여러 형식 필드가 있으며 프로세스를 시작한 lstart
전체 날짜와 시간을 항상 포함 합니다.
# ps -p 1 -wo pid,lstart,cmd
PID STARTED CMD
1 Mon Dec 23 00:31:43 2013 /sbin/init
# ps -p 1 -p $$ -wo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,cmd
USER PID %CPU %MEM VSZ RSS TT STAT STARTED CMD
root 1 0.0 0.1 2800 1152 ? Ss Mon Dec 23 00:31:44 2013 /sbin/init
root 5151 0.3 0.1 4732 1980 pts/2 S Sat Mar 8 16:50:47 2014 bash
정보가 / proc 파일 시스템에 게시되는 방법에 대한 자세한 내용은 https://unix.stackexchange.com/questions/7870/how-to-check-how-long-a-process-has-been-running을 참조 하십시오.
(리눅스에서의 경험에서 / proc / 디렉토리의 타임 스탬프는 프로세스의 시작 시간이 아닌 가상 디렉토리에 최근에 액세스 한 순간과 관련이있는 것 같습니다.
# date; ls -ld /proc/1 /proc/$$
Sat Mar 8 17:14:21 EST 2014
dr-xr-xr-x 7 root root 0 2014-03-08 16:50 /proc/1
dr-xr-xr-x 7 root root 0 2014-03-08 16:51 /proc/5151
이 경우 약 16:50에서 "ps -p 1"명령을 실행 한 다음 새 bash 셸을 생성 한 다음 바로 그 셸 내에서 "ps -p 1 -p $$"명령을 실행했습니다. .)
ls -ltrh /proc | grep YOUR-PID-HERE
예를 들어 내 Chrome의 PID는 11583입니다.
ls -l /proc | grep 11583
dr-xr-xr-x 7 adam adam 0 2011-04-20 16:34 11583
의 후속으로 아담 마탄의 대답 은 /proc/<pid>
같은 디렉토리의 타임 스탬프는 반드시 직접 도움이되지 않습니다,하지만 당신은 사용할 수 있습니다
awk -v RS=')' 'END{print $20}' /proc/12345/stat
시스템 부팅 이후 시작 시간을 시계 틱으로 표시합니다. 1
이것은 약간 까다로운 단위입니다. 자세한 내용은 지프를 초로 변환 을 참조하십시오.
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print now - ($20/ticks) }' /proc/uptime RS=')' /proc/12345/stat
이것은 strftime()
(사람이 읽을 수있는 또는 다른 방법으로) 타임 스탬프를 얻기 위해 전달할 수있는 초를 제공해야합니다 .
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print strftime("%c", systime() - (now-($20/ticks))) }' /proc/uptime RS=')' /proc/12345/stat
주석에서 Stephane Chazelas의 일부 수정 사항으로 업데이트되었습니다. 언제나처럼 감사합니다!
Mawk 만있는 경우 시도해보십시오.
awk -v ticks="$(getconf CLK_TCK)" -v epoch="$(date +%s)" '
NR==1 { now=$1; next }
END { printf "%9.0f", epoch - (now-($20/ticks)) }' /proc/uptime RS=')' /proc/12345/stat |
xargs -i date -d @{}
1 명의 남자 proc ; starttime을 검색하십시오 .
ps -eo pid,etime,cmd|sort -n -k2
ps -eo pid,cmd,lstart | grep YOUR-PID-HERE
'IT story' 카테고리의 다른 글
팬더-주어진 열의 첫 번째 행 값 가져 오기 (0) | 2020.04.21 |
---|---|
정규식-특정 문자를 포함하지 않습니다 (0) | 2020.04.21 |
SSH 원격 명령이 수동으로 실행될 때 환경 변수가 더 적은 이유는 무엇입니까? (0) | 2020.04.21 |
ostream에 << 연산자를 올바르게 오버로드하는 방법은 무엇입니까? (0) | 2020.04.21 |
GitHub 저장소에 파일과 폴더를 추가하려면 어떻게합니까? (0) | 2020.04.21 |