亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 16120 | 回復(fù): 20
打印 上一主題 下一主題

能不能用shell做一個隊列  關(guān)閉 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-12-23 22:06 |只看該作者 |倒序瀏覽
shell里有隊列的概念嗎?
我想做一個隊列,然后幾個后臺并行的shell執(zhí)行隊列里的語句,一個shell結(jié)束后,馬上運行下一個,即使是兩個shell同時結(jié)束,也要依隊列次序取,不能取重復(fù),也不能取漏了,不知有沒有好的方法實現(xiàn).

論壇徽章:
1
榮譽會員
日期:2011-11-23 16:44:17
2 [報告]
發(fā)表于 2005-12-23 22:10 |只看該作者
1,首先,shell解釋腳本就是按照先后順序逐條解釋語句并執(zhí)行的
2,樓主所言,應(yīng)該需要用到wait這個shell的builtin
3,shell is not all-purpose ^_^

[ 本帖最后由 寂寞烈火 于 2005-12-23 22:12 編輯 ]

論壇徽章:
0
3 [報告]
發(fā)表于 2005-12-23 22:17 |只看該作者
如果不后臺運行的話,shell本來就是按隊列運行的

如果要設(shè)計隊列和堆棧,我想shell應(yīng)該可以在文件的讀寫中實現(xiàn)吧?

不過效率肯定是不能和C比的

論壇徽章:
0
4 [報告]
發(fā)表于 2005-12-23 22:42 |只看該作者
我要運行一個程序P1,P1帶一個參數(shù),并且參數(shù)需要從1循環(huán)到100,當(dāng)然,我可以寫一個shell循環(huán)實現(xiàn),便是效率過于低下,因為是串行的,后一個一定要等前一個執(zhí)行完才執(zhí)行,當(dāng)然也不可能在循環(huán)中將這100個帶參數(shù)的P1全放在后臺運行.所以我想做一個并發(fā)執(zhí)行的shell程序,并發(fā)度可控制,如用4個后臺的shell來調(diào)用P1,但是關(guān)鍵是這四個shell的運行不能有沖突,如兩個shell同時調(diào)用P1,并且參數(shù)相同,參數(shù)的順序只能是從1到100,不能重復(fù),不能遺漏,請問該如何實現(xiàn)?

論壇徽章:
0
5 [報告]
發(fā)表于 2005-12-23 22:46 |只看該作者
實際上我目前已有一個解決方案,但是覺得不是很好,我用到了oracle的序號發(fā)生器,第一個shell執(zhí)行時,取序號1,第二個取序號2,第三個取序號3,第四個取序號4,然后這四個shell中先退出的那個再取序號5,所以傳給P1的參數(shù)不會重復(fù),也不會遺漏.

論壇徽章:
0
6 [報告]
發(fā)表于 2005-12-23 22:49 |只看該作者
原帖由 nees 于 2005-12-23 22:42 發(fā)表
我要運行一個程序P1,P1帶一個參數(shù),并且參數(shù)需要從1循環(huán)到100,當(dāng)然,我可以寫一個shell循環(huán)實現(xiàn),便是效率過于低下,因為是串行的,后一個一定要等前一個執(zhí)行完才執(zhí)行,當(dāng)然也不可能在循環(huán)中將這100個帶參數(shù)的P1全放在后 ...

讀文件,寫文件啊.
每行提供一個腳本實例運行的參數(shù).
如果讀完這個參數(shù)就把這個地方標(biāo)上標(biāo)記,可以寫進去,sed -i 應(yīng)該可以的.由于寫文件會鎖文件,而讀文件不會,所以建議寫完標(biāo)志位后再檢查一下此行,沒有問題就提交執(zhí)行.
另外由于寫文件的時候有filelocking,所以建議這四個進程有個監(jiān)護進程,把由于出錯退出的進程再次拉起.

偶的一點點思路,希望有用...

論壇徽章:
0
7 [報告]
發(fā)表于 2005-12-23 22:51 |只看該作者
其實,你的要求沒有必要用shell實現(xiàn),C應(yīng)該會好一點,在內(nèi)存中操作這些要遠(yuǎn)比在shell中好,效率也高很多.

論壇徽章:
7
榮譽版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
8 [報告]
發(fā)表于 2005-12-24 10:27 |只看該作者
這樣如何?
  1. #!/bin/bash
  2. tmpfile=$$.fifo
  3. mkfifo $tmpfile
  4. exec 4<>$tmpfile
  5. rm $tmpfile
  6. { echo;echo;echo;echo; } >&4
  7. for (( i = 1 ; i <= 100 ; i++ ))
  8. do
  9.   read
  10.   ( ur_command $i; echo >&4 ) &
  11. done <&4
  12. wait
復(fù)制代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2005-12-24 18:11 |只看該作者
樓上的,我在cygwin里執(zhí)行不了啊,能不能解釋一下你的思路?

論壇徽章:
7
榮譽版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
10 [報告]
發(fā)表于 2005-12-24 19:27 |只看該作者
  1. #!/bin/bash
  2. tmpfile=$$.fifo
  3. mkfifo $tmpfile
  4. exec 4<>$tmpfile
  5. rm $tmpfile   #以上工作---開一包間(一樓4號房間)
  6. { echo;echo;echo;echo; } >&4  #擺一桌麻將,4張椅子
  7. for (( i = 1 ; i <= 100 ; i++ ))   #100個賭鬼排隊進場
  8. do
  9.   read        #賭鬼開始抓風(fēng),東西南北,拿椅子按次序坐下
  10.   ( ur_command $i; echo >&4 ) &   #開始打牌ing...;bp機響了,是GF的,歸還椅子走人
  11. done <&4
  12. wait       #等待最后4個賭鬼打完
復(fù)制代碼


BTW:木有測試
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP