Bash Netcat -c中的并行进程

时间:2013-07-11 01:11:03

标签: bash netcat

我在bash脚本中使用netcat作为伪服务器,以便从输入的输入中运行其他bash脚本。这是一个令人愉快的侧面项目,但我似乎陷入困境。

本质上,脚本和代码运行完美,但直到服务器完成进程后才会显示输出;因为这可能是一个40小时的过程,所以不希望客户端有一个加载屏幕而且整个时间都没有提示。

简单地说,我想将基于内容的页面加载到一个点,忽略后面所有内容的输出。我到目前为止的代码如下:

#!/bin/bash
while [ $? -eq 0 ]; do
  nc -vlp 8080 -c'(
  r=read
  $r a b c
  z=$r
  while [ ${#z} -gt 2]; do
    $r z
  done
  f=`echo $b|sed "s/[^a-z0-9_.-]//gi"`
  o="HTTP/1.0 200 OK\r\n"
  c="Content"
  if [ -z "$f" ]; then
    f="index.html"
    echo "$o$c-Type: `file -ib $f`\n$c-Length: `stat  -c%s $f`"
    echo
    cat $f
  elif [ "$f"==Encrypt ]; then
    echo $o
    echo
    echo $(bash ~/webSupport.sh currentEncrypt "$b")
    bash ~/webSupport.sh pullVars "$b" &
  else
    echo -e "HTTP/1.0 404 Not Found\n\n404\n"
  fi
  )'
done

我已经四处寻找,并且找不到任何方法可以绕过它,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

如果您需要保留输出流,可能应该足够重定向输出流(/dev/null或文件)

bash ~/webSupport.sh pullVars "$b" >/dev/null 2>&1 &

或关闭它们:

bash ~/webSupport.sh pullVars "$b" >&- 2>&- &