2014-09-26 103 views
0

我試圖通過cterminal工作再上一個PID的信息(我非常希望得到這兩種方法,多種方法)獲取有關PID

我有一個PID,想弄清楚它聲稱的時間。聲稱我的意思是當一個程序開始使用它。或者,如果PID被重新使用,那麼當使用它的最新程序開始使用它時。

在Linux中我所做的是lstat "/proc/PID_HERE/exe"lstat "/proc/PID_HERE/cmdline"但我不知道如何在Mac OS上執行此操作。

注:我從stat更改爲lstat,因爲單個exe與命令行參數一起使用以打開多個實例。所以每個實例都會得到一個新的pid,所以我需要該特定實例的信息,因此在Linux上我必須使用lstat。因此,任何lstat等同於在Mac OS上獲得pid信息?

+0

PS -ef | tail -n +1 | awk'{print $ 5;}'? – mfro 2014-09-26 07:36:05

+2

「C或終端」就像「法語或打字機」。該終端是一個應用程序,可以顯示一些文字的窗口。這不是一種語言,也不是一種編程環境。你想'bash'。 – 2014-09-26 09:07:03

+0

Thanks @ n.m。我不知道!非常有用的信息。謝謝mfro!我會測試一下! – Noitidart 2014-09-26 10:46:29

回答

1

我想你的意思是這樣的:

ps -p <PID> -o start= 
10:22am 

,你在你的PID替代。 start=選擇開始時間並抑制標題行。如果您想報頭,使用

ps -p <PID> -o start 
STARTED 
10:22am 

或者,你可以得到格式化更充分地像這樣的開始時間:

ps -p <PID> -o lstart= 
Fri 26 Sep 10:22:50 2014 

順便說一句,如果你想要的關鍵字列表(如startlstart以上),則可以涉水通過管理,或者更簡單地說,只要給一個無效的關鍵字,它會告訴你所有的那些它喜歡:-)

ps -o %rubbish 
ps: %rubbish: keyword not found 
ps: no valid keywords; valid keywords: 
%cpu %mem acflag acflg args blocked caught comm command cpu cputime etime f flags gid group ignored 
inblk inblock jobc ktrace ktracep lim login logname lstart majflt minflt msgrcv msgsnd ni nice nivcsw 
nsignals nsigs nswap nvcsw nwchan oublk oublock p_ru paddr pagein pcpu pending pgid pid pmem ppid pri 
pstime putime re rgid rgroup rss ruid ruser sess sig sigmask sl start stat state stime svgid svuid 
tdev time tpgid tsess tsiz tt tty ucomm uid upr user usrpri utime vsize vsz wchan wq wqb wql wqr xstat 
+0

哇這麼好謝謝你!是否有任何'c'功能可以在mac os中執行此操作?像linux一樣,我們有'lstat'。 'c'函數運行速度比'bash'快得多,因爲我們必須運行它然後讀取它。 – Noitidart 2014-09-26 10:47:26

+0

哦,我也不明白你的意思是「順便說一句」的東西,你可以請你解釋一下,請多一點。 – Noitidart 2014-09-26 10:48:48

+1

要在程序中獲取此信息,請參閱此處http://stackoverflow.com/questions/220323/determine-process-info-programmatically-in-darwin-osx – 2014-09-26 11:03:24