csensix
V2EX  ›  问与答

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

  •  
  •   csensix · Nov 13, 2014 · 2990 views
    This topic created in 4200 days ago, the information mentioned may be changed or developed.
    我写了如下脚本:
    #!/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 replies    2014-11-14 11:38:43 +08:00
    ganxiyun
        1
    ganxiyun  
       Nov 13, 2014
    如果要快速方案,可以试试screen
    csensix
        2
    csensix  
    OP
       Nov 13, 2014
    @ganxiyun 我现在就在用screen。但是每次服务器重启之后,没办法自启动该功能。如果只是简单的后台运行,可以把命令放到 rc.local 自启动。所以想从根本上解决这个问题。有什么更好的建议吗?
    ganxiyun
        3
    ganxiyun  
       Nov 13, 2014
    @csensix 不知道怎么解决,关注
    Jaylee
        4
    Jaylee  
       Nov 13, 2014
    试试nohup
    nilai
        5
    nilai  
       Nov 13, 2014
    nohup 或者 supervisord
    csensix
        6
    csensix  
    OP
       Nov 14, 2014
    @Jaylee
    @nilai

    试过 nohup ,情况更糟,用了之后,就算不断开 远程连接 也无法监听。
    Jaylee
        7
    Jaylee  
       Nov 14, 2014
    @csensix 姿势不对!
    csensix
        8
    csensix  
    OP
       Nov 14, 2014
    @Jaylee 求解释
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1560 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 16:39 · PVG 00:39 · LAX 09:39 · JFK 12:39
    ♥ Do have faith in what you're doing.