在后台shell脚本中使用netcat/cat(如何避免Stopped(tty输入)?)
摘要:如何在后台运行交互式任务?
详细信息:我正在尝试在ash shell(Busybox)下运行这个简单的脚本作为后台任务.
然而脚本立即停止…
myscript.sh内容……(只有relvant部分,其他我捕获SIGINT,SIGHUP等) #!/bin/sh catpid=0 START_COPY() { cat /dev/charfile > /path/outfile & catpid = $! } STOP_COPY() { kill catpid } netcat SOME_IP PORT | while read EVENT do case $EVENT in start) START_COPY;; stop) STOP_COPY;; esac done 从简单的命令行测试我发现bot cat和netcat尝试从tty读取. 现在可以做些什么来避免myscript被阻止? 我尝试过的事情没有取得任何成功: 1)netcat / cat …< / dev / tty(或tty的输出) 2)使用()在子shell中运行包含cat和netcat的块.这可能有用但是如何抓住猫的PID? 给你的专家…… 问题依然存在. 1)在一个终端上运行netcat -l -p 22222(不带&) 2)在另一个终端运行netcat localhost 22222& (这应该在一段时间后停止,并显示Stopped(TTY输入)消息) 怎么避免这个?
你可能想要netcat的“-d”选项,它告诉它不要从STDIN读取.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |