推 filiaslayers: 我記得有函數可以用 06/06 17:24
→ Neisseria: 用 make 或者是其他類似的工具,可以設定執行順序 06/06 17:46
→ asilzheng: 為何不在第一個程式執行完才呼叫第二個? 06/06 18:19
→ andy433268: 兩個檔案都是程式執行完才會產生的 06/06 18:53
→ Bellkna: 用返回值來判定? 06/06 20:44
推 chang505: 最簡單的方式就是用 ls find 之類的東西去判斷檔案存在 06/06 23:49
→ chang505: 與否 都存在再繼續 run 就好 06/06 23:49
→ chang505: 但是這種敘述應該就跟3F一樣的方式就可以了吧 06/06 23:51
推 pizzahut: 判斷檔案存在的個數 = 2 就可以執行下一個程式 06/07 09:55
→ bitlife: google inotify 06/07 10:05
→ filiaslayers: 推樓上正解 06/07 19:30
→ andy433268: 我再嘗試b大所說的看能不能成功 06/07 23:53
推 lspci: [ -f AFILE -a -f BFILE ] && PROG2 ? 06/08 06:58
→ andy433268: inotify在/usr/local/bin底下找不到,似乎不能使用 06/08 11:28
→ bitlife: inotify 是統稱,有分system call以及binary utility,你要 06/08 11:34
→ bitlife: 用在shell script.請看man inotify的SEE ALSO裏面括號標 06/08 11:35
→ bitlife: 示為(1)的 06/08 11:35
→ andy433268: 在SEE ALSO裡面只有括號標示為2的 06/08 13:05
→ andy433268: inotify_add_watch(2),inotify_init(2)...後面都是2 06/08 13:06
→ bitlife: 系統內有沒有 inotifywait 和 inotifyatch? 06/08 13:13
→ bitlife: inotifywatch 06/08 13:16
→ andy433268: 你指的系統內是指在/usr/local/bin底下嗎?底下都無 06/08 13:27
→ andy433268: 我看到google有人在cshell使用inotifywait,他就是從 06/08 13:31
→ andy433268: /usr/local/bin/inotifywait去呼叫,但我去使用linux 06/08 13:32
→ andy433268: 都會回覆command not found.感覺系統沒安裝 06/08 13:33
推 bitlife: 以我用的ubuntu 14.04為例是安裝inotify_tools套件,執行 06/08 13:47
→ bitlife: 檔在 /usr/bin 下,你可能要看一下你的系統如何安裝 06/08 13:47
→ bitlife: inotify-tools 06/08 13:48
→ andy433268: b大 請問有程式執行完,系統休息5秒,再繼續run下個程式 06/08 14:26
→ andy433268: 的command嗎? 謝謝 06/08 14:27
→ bitlife: man sleep 06/08 16:13
→ andy433268: sleep我有用過他是一開始就啟動了,並不是程式執行完 06/08 17:43
→ andy433268: 才啟動,不曉得有無方法 06/08 17:44
→ bitlife: 不懂意思,不是script裏面某命令A完成要等5秒後再繼續命令 06/08 17:57
→ bitlife: B,A和B中間就加sleep. 看不懂你所想表達的意思 06/08 17:58
推 Bencrie: 原 po 跑的程式是會強制送背景嗎? 06/08 19:49
推 Bencrie: 而且萬一檔案剛建立東西還沒寫入,第二個程式就起來怎麼辦 06/08 19:53
→ bitlife: 要確保檔案全部產生完成才進行下一步,可以先產生暫時檔名 06/08 20:25
→ bitlife: ,等寫檔完成關檔後,執行檔案改名(假設為F),inotify則監視 06/08 20:26
→ bitlife: F檔案產生才進行下一個程式 06/08 20:26
→ andy433268: 應該是我執行的程式都在背景跑,所以sleep才一起動作 06/08 20:55
→ andy433268: 照這樣在背景執行的話似乎就沒辦法用sleep 06/08 20:56
→ bitlife: 還是可以,我不知道你的整個流程,不過你需要一個監管程式 06/08 20:57
→ bitlife: 負責在適當的時間執行該被執行的程式,等待5秒是由這個監 06/08 20:57
→ bitlife: 管程式負責等,等5秒後再背景執行下個程式 06/08 20:58
→ bitlife: 如果依本文一開始說的要2個檔案都完成再進行下一步,假設 06/08 20:58
→ bitlife: 這[下一步]開始之前要等5秒,那就是監管程式用inotifywait 06/08 20:59
→ andy433268: 現在的目的是程式在背景執行,執行完等待5秒再執行第2 06/08 20:59
→ bitlife: 監視2個檔案都完全產生了,由監管程式sleep等5秒後再執行 06/08 20:59
→ bitlife: [下一步] 06/08 20:59
→ andy433268: 個程式在背景 看各位不知有無解決的方法 謝謝 06/08 21:00
→ bitlife: 看來可以用我上面推文的作法,總之就是你需要一個監管程式 06/08 21:01
→ bitlife: 由它負責在正確的時機背景執行下個要執行的程式 06/08 21:01
→ Bellkna: 感覺寫成背景服務比較萬無一失 06/08 21:27
推 Bencrie: 應該可以先 wait A 再直接跑 B。如果 A 會結束的話 XD 06/08 21:38
→ Bencrie: 如果 A 結束表示東西都有正常產出的話就用 wait 吧 06/08 21:40
→ andy433268: 最後是根據我吐出的log關鍵字去執行第2個程式 06/08 21:49
推 smallyou1988: 看起來用一隻程式去做 :先執行A丟背景執行 然後就w 06/09 01:08
→ smallyou1988: ait. 再用if確認有檔案的話 在執行B不就好了?XD 06/09 01:08