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

2014-11-13 14:56:36 +08:00
 csensix
我写了如下脚本:
#!/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都在运行,但无法完成监听任务。

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

试过 nohup ,情况更糟,用了之后,就算不断开 远程连接 也无法监听。
Jaylee
2014-11-14 10:13:34 +08:00
@csensix 姿势不对!
csensix
2014-11-14 11:38:43 +08:00
@Jaylee 求解释

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/146205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX