답변:
Linux에서는 최소한 다음을 수행 할 수도 있습니다.
ps -o lstart= -p the-pid
더 유용한 시작 시간을 갖기 위해
그러나 프로세스 가 시작된 시간 이며 현재 실행중인 명령 이 호출 된 시간 일 필요는 없습니다 . 프로세스는 일생 동안 둘 이상의 명령을 실행할 수 있습니다 (일반적으로 수행합니다). 명령은 때때로 다른 프로세스를 생성합니다.
/proc
Linux 에서 파일의 mtimes (적어도)는 일반적으로 해당 파일이 인스턴스화 된 날짜이며, 처음 파일에 액세스하거나 디렉토리 내용을 나열하려고 시도한 날짜입니다.
예를 들어 :
$ sh -c 'date +%T.%N; sleep 3; echo /proc/"$$"/xx*; sleep 3; stat -c %y "/proc/$$/cmdline"'
13:39:14.791809617
/proc/31407/xx*
2013-01-22 13:39:17.790278538 +0000
확장 /proc/$$/xx*
하면 셸 /proc/$$
에서 cmdline
파일을 인스턴스화 한 내용을 읽었습니다 .
proc 은 가상 파일 시스템이므로 파일 상태 정보에 의존하지 않습니다.
프로세스의 시작 시간은 / proc / PID / stat 열 22에 있습니다. 시스템 부팅 후 지프에 제공됩니다. 이것을 초로 변환하려면 대부분의 시스템에서 sysconf(_SC_CLK_TCK)
100 으로 나눠야합니다 (모두는 아닙니다!).
시스템 부팅 시간을 얻으려면 현재 가동 시간 (초)을 / proc / uptime 의 첫 번째 값으로 결정하십시오 .
이 두 숫자를 사용하면 두 번째 숫자에서 첫 번째 숫자를 빼고 프로그램을 시작한 후 몇 초가 지났습니까?
예 ( pidgin의 경우 ) :
PID=$(pidof pidgin)
STARTTIME=$(awk '{print int($22 / 100)}' /proc/$PID/stat)
UPTIME=$(awk '{print int($1)}' /proc/uptime)
NOW=$(date +%s)
DIFF=$((NOW - (UPTIME - STARTTIME)))
date -d @$DIFF
참고 :이 간단한 예제는 여러 pidof
PID를 반환하면 작동하지 않습니다 .