監控程序結束 - Linux

Dinah avatar
By Dinah
at 2013-10-19T18:17

Table of Contents

不知道用什麼關鍵字,找了一陣子了,
才上來問...如果這問題太蠢了請鞭小力點 Orz


我想要監控程序結束執行與否,來決定要不要繼續執行下一批資料

舉個例子:
$ matlab (程序) &

我用 for + if 控制開超過十個就暫停 (sleep)
但程式執行的時間很難抓,如果暫停的時間太短會大當機。

而程序每次都是自動開的,不會先知道 PID
我也沒辦法靠查詢 ps 去看有沒有結束(是嗎)?

請各位指教我該怎麼監督他是否執行完畢?

--
Tags: Linux

All Comments

Lily avatar
By Lily
at 2013-10-20T21:42
我是 CentOS
Belly avatar
By Belly
at 2013-10-22T01:14
ps -A|grep matlab|wc -l 抓數量?
Isla avatar
By Isla
at 2013-10-26T16:25
寫過類似功能的 script,就是用樓上那樣抓數量
Mary avatar
By Mary
at 2013-10-28T17:58
然後每幾秒就抓一次數量,小於某值才繼續開
Ina avatar
By Ina
at 2013-10-30T01:55
會寫C嗎? 用C寫個小的主程式負責run需要數量的matlab,然後
Linda avatar
By Linda
at 2013-10-30T06:39
處理 SIGCHLD 就知道有matlab跑完了,再決定後續動作
Elma avatar
By Elma
at 2013-11-01T03:37
sorry I don't know C, I'll try 2nd & 3rd floor's
Kumar avatar
By Kumar
at 2013-11-02T00:37
way ! thank for all of you !
Tristan Cohan avatar
By Tristan Cohan
at 2013-11-05T12:11
shell(ex.bash)也可以trap signal啊
Dora avatar
By Dora
at 2013-11-09T22:44
bash的 $! 可以抓前一個丟到背景的pid
Brianna avatar
By Brianna
at 2013-11-14T10:35
要處理多個child process結束SIGCHLD需要精確的signal
George avatar
By George
at 2013-11-19T02:41
handling(例如signal block), 才不會signal lost,我不確定
Kumar avatar
By Kumar
at 2013-11-23T17:17
bash有沒有sigblock(.)對應的相關功能,還要bitwise or 來
Joe avatar
By Joe
at 2013-11-23T21:24
產生sigmask等,還是用c比較簡單
Delia avatar
By Delia
at 2013-11-27T19:17
需不需要考慮別人也跑 matlab, 或 matlab 再 fork 出 matlab?
Daph Bay avatar
By Daph Bay
at 2013-11-28T16:39
如果答案為是, 那就應使用 ps 算數量的方式. 如果答案為否,
Anonymous avatar
By Anonymous
at 2013-12-02T05:13
那就用 for 產生十個背景的 while sub-shell, matlab 直接跑:
Franklin avatar
By Franklin
at 2013-12-06T05:46
for ...; do (while true; do matlab; done) & done
Necoo avatar
By Necoo
at 2013-12-10T00:23
這樣應該就沒有 SIGCHLD 或抓背景 pid 的問題.
Andrew avatar
By Andrew
at 2013-12-13T08:30
如果別人也需要跑,大家的總和是N,更需要用c,用ps之類方式,
Hardy avatar
By Hardy
at 2013-12-17T21:31
會有race condition,用c的話可以用semaphore來確保總數量
Bennie avatar
By Bennie
at 2013-12-21T08:35
我因為以前常處理這類race condition問題,所以習慣使用一
Delia avatar
By Delia
at 2013-12-24T14:11
開始看來似乎overkill的方式,但其實是最安全正確的方式
Thomas avatar
By Thomas
at 2013-12-24T17:04
想一想樓上說的方式還是最仔細,不過如果因為 racing
Leila avatar
By Leila
at 2013-12-25T09:13
而多開一兩個或許倒也無妨,那就還是用 shell 比較
簡單
John avatar
By John
at 2013-12-27T02:12
我昨天實測遇到更白爛的狀況:開FSL (我做影像的)
結果他某個指令在不同階段會叫出不同程式
所以會 被偵測到 => 不見了 !
Jack avatar
By Jack
at 2013-12-29T07:07
於是 ps -A|grep 法讓我的程序瞬間暴增破百 Orz
Christine avatar
By Christine
at 2014-01-03T02:01
感謝樓上各位詳細解釋 我其實看不太懂 試著寫看看:)
Olga avatar
By Olga
at 2014-01-07T00:32
jobs可以看現在還有多少活著的child
Catherine avatar
By Catherine
at 2014-01-07T02:21
jobs還是會有race condition,你剛看完說不定又多死了n個
Jake avatar
By Jake
at 2014-01-08T04:17
用semaphore控制總量,那就要確保大家都這麼跑,不然還是沒用.
Genevieve avatar
By Genevieve
at 2014-01-12T06:55
另外,以原po的問題,避免多生n個才是重點,多死了n個無關當機.
Wallis avatar
By Wallis
at 2014-01-12T09:05
原po的 "瞬間暴增破百",如果不會造成什麼問題,也不用太care.
Jack avatar
By Jack
at 2014-01-13T13:35
多user又要控制數量,本來就要follow統一架構,其實最好的架
Wallis avatar
By Wallis
at 2014-01-15T12:34
構是priority queue+單一負責執行的主程式,大家把job命令
Emma avatar
By Emma
at 2014-01-17T04:18
丟進queue.不過這是題外話,回到多生少生問題,會少生當然也
Gary avatar
By Gary
at 2014-01-21T18:08
會多生(多人狀況下),兩個user接近同時發現多出n個容許數量
然後都各執行了n個,就會多出了n個.隨著(接近)同時做這樣事
Franklin avatar
By Franklin
at 2014-01-22T15:27
的user增加,結果就是數量失控. race condition 本來就很討
厭,多無法容許,也只能靠標準做法解決,沒有偷懶步.當然如果
Candice avatar
By Candice
at 2014-01-27T05:17
數量控制本來就不嚴格要求,那就真的隨便了,反正race cond
ition發生低率也不高,就看需求怎麼要求就是了
Xanthe avatar
By Xanthe
at 2014-02-01T02:46
若無法容許
機率
Yedda avatar
By Yedda
at 2014-02-05T13:17
樓上b大不需要把問題複雜化. 原po的情況,如果是個人電腦,
Rachel avatar
By Rachel
at 2014-02-06T00:44
就不需要考慮 "還有別人" 的情況; 如果是公用電腦,
Doris avatar
By Doris
at 2014-02-06T15:50
除非是管理者之類, 否則也很難要求別人用 "統一架構".
Ula avatar
By Ula
at 2014-02-07T03:05
再者, 我別述的 "多死了n個無關當機" 是指上面提jobs的情況,
Todd Johnson avatar
By Todd Johnson
at 2014-02-07T13:03
這種情況, 除非自己寫錯處理方式, 只會有多死不會有多生.
前述
Elvira avatar
By Elvira
at 2014-02-12T05:41
考慮別人也要跑matlab 是 10/20 10:57 你的推文先說的
我只是順著寫下來,怎麼變成是我把問題複雜化了呢 XD
Rachel avatar
By Rachel
at 2014-02-13T08:22
如果是單位內大家共用,不遵守的就不準用,系統本來就是這樣
管理的
Oscar avatar
By Oscar
at 2014-02-17T05:01
另外個人電腦若執行多個主程式,就相當於別人也要用的情況,
只是這個別人變自己的另一個shell
Kumar avatar
By Kumar
at 2014-02-20T16:00
如果是公用電腦,原po不是管理員或有權制定政策者,最多只能
Anonymous avatar
By Anonymous
at 2014-02-21T10:36
建議可行方案就是了. 最後我不認為把問題分析清楚是複雜化
,我前面也說了,需求規格要求不嚴,本來就怎麼做都可以,反正
Regina avatar
By Regina
at 2014-02-25T22:01
發生機率不高
Victoria avatar
By Victoria
at 2014-02-28T16:03
b大,不好意思沒說清楚. 那段推文雖然提到別人跑,但只簡單帶過,
Xanthe avatar
By Xanthe
at 2014-03-05T14:08
其實是假設原po的環境為否的情況 :P
Selena avatar
By Selena
at 2014-03-06T19:35
否則若是公用電腦,可能不光只是執行matlab的問題,
Regina avatar
By Regina
at 2014-03-07T14:58
可能還有別的應用程式; 又比如每個人用matlab執行的工作,
Elizabeth avatar
By Elizabeth
at 2014-03-12T03:02
不盡相同, 對系統資源的需求可能有的很多有的很少,
Tracy avatar
By Tracy
at 2014-03-15T12:42
上述各種考慮是否還有別人之類的問題解法,大概都很容易破功 :P
Hedwig avatar
By Hedwig
at 2014-03-16T01:00
也就是說, 真要考慮多人的情況, 可能就不只是數量問題,
Hedy avatar
By Hedy
at 2014-03-16T11:50
比方單獨執行時, user a 的 A 程序最多跑 10 個, 再多會當;
Erin avatar
By Erin
at 2014-03-19T11:00
而 user b 的 B 程序, 最多 5 個; 那兩人同時丟上去跑的話,
Rae avatar
By Rae
at 2014-03-20T20:19
顯然單算總量都會有問題, 還得對各個程序做些加權計算之類,
Linda avatar
By Linda
at 2014-03-23T08:10
使得達到A已跑4隻時,B只能最多只能跑3隻之類...
Edward Lewis avatar
By Edward Lewis
at 2014-03-26T10:33
但這類複雜情況, 我想應不是原po問題的本意.
Rosalind avatar
By Rosalind
at 2014-03-29T15:59
(而且往往是當機幾次後,才知道跑幾個會當機XD)
Todd Johnson avatar
By Todd Johnson
at 2014-04-03T05:24
是公用電腦,很多人有跑Matlab,我自己也是admin,
Elizabeth avatar
By Elizabeth
at 2014-04-07T23:42
我們都不是EECS,所以都是靠講好誰要開始跑大程式協
調的,感謝各位推文,我覺得這是我們未來(有助理)之
Christine avatar
By Christine
at 2014-04-09T14:26
後可以努力的方向Orz
Brianna avatar
By Brianna
at 2014-04-12T19:20
其實這類情況, 靠人工協調後, 自行用簡單的方式進行控管,
Candice avatar
By Candice
at 2014-04-14T09:09
也就夠了. 弄成複雜的樣子再用程式處理, 還不見得管用.
Thomas avatar
By Thomas
at 2014-04-17T13:30
前面有說,最佳solution是大家把job命令列丟到queue,由單一
Vanessa avatar
By Vanessa
at 2014-04-21T06:07
程式做類似scheduler工作才是最佳solution.甚至可以考慮
priority/loading 等條件
Jessica avatar
By Jessica
at 2014-04-26T01:07
以前台大的cray超級電腦就是這樣,我早上丟job進去,傍晚去
Charlie avatar
By Charlie
at 2014-04-29T07:59
看,沒任何動靜(發現是day SRU用完),後來半夜被執行,沒幾下
就跑完了(在sun工作站要跑好幾天)
Freda avatar
By Freda
at 2014-05-01T22:20
有沒有考慮在執行的程序最後加入寫入文字檔?
監控這個檔案就知道跑完沒
Harry avatar
By Harry
at 2014-05-04T08:04
b大, 您上述的 "單一程式" 在 Linux 其實就是 kernel.
Zenobia avatar
By Zenobia
at 2014-05-04T23:18
原po的 "大當機", 我認為是系統記憶體不足,而大量進行swap,
Wallis avatar
By Wallis
at 2014-05-06T18:57
慢到令人無法忍受地慢; 但超級電腦,一方面有極大量的記憶體
Mia avatar
By Mia
at 2014-05-08T07:42
(可能十T或百T以上等級),另一方面也做記憶體的資源控管,
Margaret avatar
By Margaret
at 2014-05-09T18:09
當然沒機會遇到記憶體不足的 "當機".
Ivy avatar
By Ivy
at 2014-05-11T03:57
當然相比之下, 一般機器資源少, Linux 的 kernel 也很陽春.
Skylar Davis avatar
By Skylar Davis
at 2014-05-15T16:05
就算控制 job 數量, 還是無法保證記憶體使用量.
Sierra Rose avatar
By Sierra Rose
at 2014-05-18T07:12
Kernel的schedule和AP層級考量的重點不同. AP人可以決定哪
Jake avatar
By Jake
at 2014-05-18T13:31
些白天run,哪天夜晚run,哪些第一優先run其它先suspend掉等
Kelly avatar
By Kelly
at 2014-05-18T19:47
等.這些在以前迷你電腦年代確實做在OS,但在Unix時又簡化掉
了.原因就是把這種事交還給AP team
Catherine avatar
By Catherine
at 2014-05-23T15:11
當然以上可以用指令去控制,但那還是需要人去操作指令,所以
一旦有這樣子的需求,自然又會寫成AP層級的管理系統
Dora avatar
By Dora
at 2014-05-24T06:10
另外throughput絕對不是在當掉前才從最高往下突降到0的,要
Ula avatar
By Ula
at 2014-05-24T20:47
throughput最佳化,不能只用當不當掉這個標準.
Doris avatar
By Doris
at 2014-05-28T06:08
後續推文已經脫離原po目前權限及資源能考量的情況,我就先
討論到這裏好了
Rachel avatar
By Rachel
at 2014-06-01T04:21
b大說得是,但仍需kernel配合,AP層級才有辦法做某些精細的控管.
Callum avatar
By Callum
at 2014-06-02T01:07
又,雖不是突降到0,但以程序數量的角度,也只能知道再加一就當.
George avatar
By George
at 2014-06-04T00:15
樓上,那就是cgroup了吧? AP queue可以試試看openpbs
Yuri avatar
By Yuri
at 2014-06-06T09:27
flock ?
Heather avatar
By Heather
at 2014-06-10T11:22
回樓上上k大,其實cgroup和pbs都只是聞其名,不曾進一步了解:P
Necoo avatar
By Necoo
at 2014-06-13T01:45
不知cgroup可否在多個程序總合超出資源限制時,暫停某程序,
Jacky avatar
By Jacky
at 2014-06-15T10:46
待資源足夠時再繼續之類? 另外 pbs 是否有跟 cgroup 做結合?
Robert avatar
By Robert
at 2014-06-17T07:40
^ 甚至進一步 swapout 出記憶體, 待...

smplayer有畫面沒聲音

Frederic avatar
By Frederic
at 2013-10-18T16:24
剛剛解決了,步驟如下: - sudo apt-get remove ffmpeg mencoder mplayer - sudo apt-get install libx264-dev libxvidcore-dev libopencore-amrwb-dev libopencore-amrnb-dev ...

Ubuntu 13.10 釋出囉!

Una avatar
By Una
at 2013-10-18T14:31
Unity 桌面及伺服器版本: http://releases.ubuntu.com/saucy/ 教育版本: http://cdimage.ubuntu.com/edubuntu/releases/saucy/release/ KDE 桌面版本: http://cdimage.ubuntu.com/ku ...

lubuntu 13 使用 xrdp

Skylar DavisLinda avatar
By Skylar DavisLinda
at 2013-10-18T12:42
請問一下小弟在 lubuntu13中安裝xrdp 可是安裝完成後從windows使用遠端桌面登入後 變成一片空白 是因為lubuntu使用的都是LXDE嗎 是否一定要安裝gnome 是否可以使用LXDE 如果是要裝gnome那不如就用一般的ubuntu就好了 請問大家是否有些建議 - ...

smplayer有畫面沒聲音

Oliver avatar
By Oliver
at 2013-10-18T03:49
各位好,在下剛升級Windows 8.1後grub就掛了,只好乾脆裝Mint 15. 裝完發現smplayer沒聲音(不過用videos和VLC都能放出聲音) 以下是我用mplayer測試的結果,我上網找了一下好像是ffmpeg的問題 可是ffmpeg我也更新了還是一樣,請問我該怎麼解決呢?感謝! MP ...

RHEL 6 如何把Gnome換DWM

Robert avatar
By Robert
at 2013-10-17T15:06
※ 引述《freemirage (萬里無雲萬里天)》之銘言: : 目前工作的電腦預設的windows manager 是gnome : 想要換成dwm 但在google上找不太到相關的資料 (沒有root權限) : 主要想請問如何在tty7之中把原本的windows manager完全關掉 : 我試了 gno ...