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

  免費注冊 查看新帖 |

Chinaunix

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

[求助]awk調(diào)用system返回127 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-05-10 18:19 |只看該作者 |倒序瀏覽
本帖最后由 wiki09 于 2011-05-10 18:28 編輯

我需要用system調(diào)用創(chuàng)建目錄

以下是我的程序,它會在處理到第1184行時system調(diào)用就會返回127,之前都是正常。誰知道原因嗎??

代碼:
function dealfile
{
awk -F"|" '{ if( NR>1 ) { if( length($4)==13 ) {path="'$out_home'/"substr($4,2,3)"/"substr($4,5,3)"/"substr($2,2,; file=path"/"substr($4,8,3)".ph"    ; cmd="mkdir -p "path; cmdt="test -d "path; code=system(cmdt); if(code!=0) {    print cmdt;print code; code=system(cmd); print cmd;}} else { path="'$out_home'/other/"substr($4,2,length($4)-4)"/"substr($2,2,; file=path"/Content.ph"    ; cmd="mkdir -p "path; system(cmd);} print $0 >> file } }' $*
}

運行后的錯誤提示:
test -d /home/postgres/gcctest/cdr/shell/out/137/892/20101215
127
mkdir -p /home/postgres/gcctest/cdr/shell/out/137/892/20101215
127
test -d /home/postgres/gcctest/cdr/shell/out/150/102/20101215
127
mkdir -p /home/postgres/gcctest/cdr/shell/out/150/102/20101215
127
test -d /home/postgres/gcctest/cdr/shell/out/138/738/20101215
127
mkdir -p /home/postgres/gcctest/cdr/shell/out/138/738/20101215
127
test -d /home/postgres/gcctest/cdr/shell/out/138/731/20101215
127
mkdir -p /home/postgres/gcctest/cdr/shell/out/138/731/20101215
127
awk: (FILENAME=CF2710.all FNR=1185) fatal: can't redirect to `/home/postgres/gcctest/cdr/shell/out/138/731/20101215/156.ph' (沒有那個文件或目錄)

論壇徽章:
3
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亞洲杯之阿曼
日期:2015-04-07 20:00:59
2 [報告]
發(fā)表于 2011-05-10 21:33 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
3 [報告]
發(fā)表于 2011-05-11 08:28 |只看該作者
主要功能就是將文件的內(nèi)容進行分揀,按照文件里每行的某兩個字段的內(nèi)容將記錄按要求分成多個文件保存。

因為新文件的保存路徑是需要根據(jù)字段內(nèi)容生成的,所以,我是每處理一條記錄時就會system(test ...)這個路徑是否存在,如果不存在就system(mkdir -p ...),但是到了處理第1184調(diào)記錄(相當于調(diào)用了1183次system("test ..."))時,system調(diào)用就會返回127了(之后的一直都是返回127),之前是返回正常,要么是0要么是1。 求助。。。。有誰遇到過類似的情況???

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
4 [報告]
發(fā)表于 2011-05-11 08:51 |只看該作者
trace跟蹤一下系統(tǒng)調(diào)用呢?

論壇徽章:
0
5 [報告]
發(fā)表于 2011-05-11 09:27 |只看該作者
謝謝版主,
我是新手,請問怎么跟在awk里的系統(tǒng)調(diào)用

我用strace -e trace=mkdir...跟蹤不出啥東東。。。

論壇徽章:
0
6 [報告]
發(fā)表于 2011-05-11 09:51 |只看該作者
22666 write(1, "test -d /home/postgres/gcctest/c"..., 62) = 62
22667 write(1, "127\n", 4)                    = 4

22668 rt_sigaction(SIGINT, {0x1, [], SA_RESTORER, 0x3f30430280}, {SIG_DFL, [], SA      _RESTORER, 0x3f30430280}, = 0
22669 rt_sigaction(SIGQUIT, {0x1, [], SA_RESTORER, 0x3f30430280}, {SIG_DFL, [], S      A_RESTORER, 0x3f30430280}, = 0
22670 rt_sigprocmask(SIG_BLOCK, [CHLD], [], = 0
22671 clone(child_stack=0, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0x7ff      fded5e4a = 3696
22672 wait4(3696, [{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 3696

22673 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x3f30430280}, NULL, = 0
22674 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x3f30430280}, NULL, =       0
22675 rt_sigprocmask(SIG_SETMASK, [], NULL, = 0
22676 --- SIGCHLD (Child exited) @ 0 (0) ---
22677 write(1, "mkdir -p /home/postgres/gcctest/"..., 63) = 63
22678 write(1, "127\n", 4)                    = 4

22679 open("/home/postgres/gcctest/cdr/shell/out/137/892/20101215/511.ph", O_WRON      LY|O_CREAT|O_APPEND, 0666) = -1 EMFILE (Too many open files)
22680 close(4)                                = 0
22681 munmap(0x2ac8cf348000, 4096)            = 0
22682 open("/home/postgres/gcctest/cdr/shell/out/137/892/20101215/511.ph", O_WRON      LY|O_CREAT|O_APPEND, 0666) = 4
22683 fstat(4, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
22684 fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
22685 fcntl(4, F_GETFL)                       = 0x8401 (flags O_WRONLY|O_APPEND|O      _LARGEFILE)
22686 fcntl(4, F_GETFL)                       = 0x8401 (flags O_WRONLY|O_APPEND|O      _LARGEFILE)
22687 fstat(4, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
22688 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =       0x2ac8cf348000
22689 lseek(4, 0, SEEK_CUR)                   = 0

22690 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffded5eb00) = -1 ENOTTY (Inappr      opriate ioctl for device)

論壇徽章:
0
7 [報告]
發(fā)表于 2011-05-11 10:01 |只看該作者
和“Too many open files”這個有關嗎?怎么樣才能在腳本里關閉掉打開的文件呢?

論壇徽章:
0
8 [報告]
發(fā)表于 2011-05-11 11:10 |只看該作者
我用了ulimit -n 4096后,運行正常了。

看來是打開文件過多這個錯誤,影響了系統(tǒng)調(diào)用,導致system(test...)和system(mkdir -p ...)報錯。

謝謝版主提示.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(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
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP