2016-07-07 48 views
1

我有很長的運行shell腳本(運行超過24小時)。 這是非常簡單的腳本。它只是從dir中讀取xml文件,並對文件內容執行sed操作。目錄中有1百萬個xml文件。PS命令​​不顯示正在運行的進程

我的腳本名稱是一樣runDataManipulation.sh

當我運行以下命令

ps -ef | grep "runDa*" 

然後有時我看到我的過程

username 34535 1 48 11:42:01 - 224:22 /usr/bin/ksh ./runDataManipulation.sh 

但是,如果我運行後完全相同的命令幾秒鐘,然後我根本沒有看到上述過程。

由於我的進程一直在運行,所以我期望ps命令始終顯示進程。

如果我在我的劇本一樣的進程ID做grep ..

ps -ef | grep 34535 

那麼一段時間我看到像導致

username 34535 1 51 11:42:01 - 229:22 [ksh] 

有時我看到像導致

username 45678 34535 0 14:12:11 - 0:0 [sed] 

我的主要問題是......爲什麼當我爲我的公關我grep時看不到我的流程使用腳本名稱進行操作。我正在使用AIX 6.1

+0

查看'runDataManipulation.sh'腳本的內容將非常有用,因爲它必須做一些事情來讓它的流程列表發生變化。值得注意的是,在AIX上,您可以修改'* argv []'的內容(使用C語言),並且您的更改將反映在進程列表中。並非所有的Unix操作系統都允許這樣。 –

回答

0

它在我看來像一個腳本是在另一個過程中產生的腳本。

如果你看下面的ps命令的結果,第一行顯示34535的進程ID,這是主ID(稱爲父ID)。

用戶名34535 1 51 11點42分01秒 - 229:22 [KSH]

該處理進而被髮射了另一個過程,這可以如下所示,通知父進程的id(34535)在下面的行中提到,第一個數字是主進程Id,第二個數字是調用進程。

用戶名45678 34535

如果你改變了你的ps命令包括sed命令你應該總是看到一些成果,如果你的腳本仍在運行!

+0

謝謝。我完全理解我的腳本爲sed命令產生了一個新進程,新的sed進程會有一個新的pid,其ppid(父pid)將會有我的主腳本pid(34535)。但是,當我的父進程產生新進程時,它並不會死亡,所以我總是期望我的主進程(runDataManipulation.sh)出現在ps -ef輸出中。這是我的主要問題。,,爲什麼我的父進程在運行時不會出現在ps -ef命令輸出中。 – RaksJ

相關問題