2011-05-26 31 views
2

我試圖啓動一個進程,雖然ps -ef | grep myprocessname沒有顯示它正在運行,但當我調用腳本啓動它時,它表示進程已經在運行,正在退出。linux - 進程已經在運行的錯誤

我搜索了大約一個小時的互聯網,我找不到任何答案。誰能幫忙?謝謝。

@TILO:在/ var/run下沒有名稱甚至接近我的進程的文件。還有其他建議嗎?

@VKRAM:這是第三方軟件。有什麼建議麼?

+1

過程是怎樣的,你正在運行?相關? – vkrams 2011-05-26 03:03:15

+0

由於這是第三方程序(=最終用戶支持),因此可能屬於超級用戶 - 已投票遷移 – bdonlan 2011-05-26 03:21:10

+1

此外,具體是哪個程序? – bdonlan 2011-05-26 03:21:23

回答

2

如果您嘗試啓動的進程存在.pid文件,請在/ var/run下進行檢查。

例如/var/run/mysqld/mysqld.pid就是這樣一個文件。

該文件包含進程的PID ...

運行 PS -edaf | grep的PID#你在文件中找到PID

如果過程沒有找到,你可以刪除PID文件 - 然後再嘗試啓動您的進程再次

1

嘗試使用上有問題的程序strace的:

strace yourprogram 

不久就終止之前,你應該看到的系統調用它來確定另一個實例正在運行,並且可以從那裏反向工程它正在使用的方法。

0

你說你不能找到PID文件...

  1. 如果你不能找到PID文件(也許是因爲一些在/ var /目錄運行的是深層嵌套) , 試試這個,看看在那裏所有的PID文件的列表:

    查找/ var/run中型的F -name '* .pid'

    查找/無功型的F -name「*。 pid'

    也許喲你會看到一個與你試圖啓動的進程名稱相似的文件名。 或者您也可以在該行的末尾加上grep,並嘗試grep列表中的進程名稱。

  2. 一些程序把也使用鎖文件 - 這些都可以在/ var /鎖/或/ var /鎖/子系統

  3. 通常被發現如果不幫助,嘗試一下在開始 - 你正在使用的腳本,例如詳細/etc/init.d/中 看它下,尋找類似LOCK_FILE或PID_FILE

相關問題