Chinaunix
标题:
shell 里面让命令后台执行怎么弄?
[打印本页]
作者:
luxinjun888
时间:
2012-03-19 13:24
标题:
shell 里面让命令后台执行怎么弄?
本帖最后由 luxinjun888 于 2012-03-19 13:36 编辑
大家好! 今天写了一个简单SHELL,主要用于吧我们的域名推送到DNS服务器上:
现在我想如果要推送的域名和DNS服务器地址很多的话,那需要大量的时间来完成这个工作,而我必须在DNS服务器设置的ttl周期(10分钟)内完成。现在有这么个想法,就是DNS服务器地址提取后交给DIG,而这一个dig命令就在后台运行,然后dig直接加载下一个dns服务器地址,而不是等上一个dig他运行完后再取下一个$i 地址,这样进程可以同时跑上百个DIG并发执行,加快速度。不过不知道怎么实现,请大家帮帮忙了。
#!/bin/bash
#2011-3-19
cat /root/dnsyuming | while read h //dnsyuming保存了我需要推送的域名,如
www.sina.com.cn
,
www.163.com
等,每行一个。
do
echo $h
cat /root/test | while read i //test里面保存了DNS服务器的地址,如202.106.0.20 ,106.187.2.2
do echo $i
dig +tries=0 @$i $h >> test.txt
if [ $? != 0 ];then
echo $i >> testerr.txt
fi
done
done
作者:
mpstat
时间:
2012-03-19 13:32
&
作者:
luxinjun888
时间:
2012-03-19 13:44
本帖最后由 luxinjun888 于 2012-03-19 13:45 编辑
& 只是在后台运行,dig在循环的时侯也会等当前提取的DNS IP地址运行完成后再加载下一个IP地址再运行吧? 我希望DIG在获取一个IP地址后,就在后台运行命令,而不管是否运行完成得到结果,直接提取下一个IP地址,再执行一个DIG命令, ,现在情况是提取一个IP,后台就只有一个DIG进程。而希望得到的结果是后台 可能同时并发运行上百个DIG进程。
可能我表达的不太清楚,不好意思。
作者:
Perl_Er
时间:
2012-03-19 13:45
回复
1#
luxinjun888
Use the following to invoke your script, run it in the background, and still allow yourself to log out:
nohup mydaemonscript 0<&- 1>/dev/null 2>&1 &
or:
nohup mydaemonscript >>/var/log/myadmin.log 2>&1 <&- &
作者:
nuclearxin
时间:
2012-03-19 14:17
大家都是来回答标题豆
作者:
luxinjun888
时间:
2012-03-19 14:24
非常感谢Perl_Er 我用DIG 加上nohup命令执行,应该可以达到我的要求。 谢谢大家!
作者:
qpengf
时间:
2012-03-19 15:06
回复
4#
Perl_Er
你好,请教一下,你的答案的意思是要让同时有多个进程一块来run,把标准输入关闭就可以了是吧。
作者:
freeterman
时间:
2012-03-19 15:27
把我们的域名推送到DNS服务器上:
你的脚本要干什么 没有看懂
作者:
Shell_HAT
时间:
2012-03-19 21:37
回复
6#
luxinjun888
http://bbs.chinaunix.net/thread-1118626-1-1.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2