V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
csensix
V2EX  ›  问与答

关于 shell 脚本后台执行的问题

  •  
  •   csensix · 2014-11-13 14:56:36 +08:00 · 2587 次点击
    这是一个创建于 3689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我写了如下脚本:
    #!/bin/bash
    while true
    do
    killall 'nc' >/dev/null 2>&1

    nc -l 10010| while read LINE
    do
    pass=`cat /dev/urandom | head -1 | md5sum | head -c 8`
    echo $LINE >> shell.out 2>&1
    echo $pass >> shell.out 2>&1
    killall 'nc' >/dev/null 2>&1
    done
    done

    我想完成的任务是 nc 能够持续监听10010端口,然后按照需要去做一些事情。利用 & 把该脚本放到后台运行,再另一台服务器 同样用nc 命令,能够完美配合。但是当我退出 console 之后,事情似乎就不受控制了,脚本、nc都在运行,但无法完成监听任务。

    请问,这是为啥。
    8 条回复    2014-11-14 11:38:43 +08:00
    ganxiyun
        1
    ganxiyun  
       2014-11-13 15:01:17 +08:00
    如果要快速方案,可以试试screen
    csensix
        2
    csensix  
    OP
       2014-11-13 15:08:02 +08:00
    @ganxiyun 我现在就在用screen。但是每次服务器重启之后,没办法自启动该功能。如果只是简单的后台运行,可以把命令放到 rc.local 自启动。所以想从根本上解决这个问题。有什么更好的建议吗?
    ganxiyun
        3
    ganxiyun  
       2014-11-13 16:35:42 +08:00
    @csensix 不知道怎么解决,关注
    Jaylee
        4
    Jaylee  
       2014-11-13 16:39:45 +08:00
    试试nohup
    nilai
        5
    nilai  
       2014-11-13 16:49:27 +08:00
    nohup 或者 supervisord
    csensix
        6
    csensix  
    OP
       2014-11-14 10:07:35 +08:00
    @Jaylee
    @nilai

    试过 nohup ,情况更糟,用了之后,就算不断开 远程连接 也无法监听。
    Jaylee
        7
    Jaylee  
       2014-11-14 10:13:34 +08:00
    @csensix 姿势不对!
    csensix
        8
    csensix  
    OP
       2014-11-14 11:38:43 +08:00
    @Jaylee 求解释
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 2569ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.