免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3323 | 回复: 10
打印 上一主题 下一主题

[系统管理] 关于shell子进程的问题,请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-28 20:30 |只看该作者 |倒序浏览
有一个需求, 需要同时运行多个任务, 比如: ping ip
##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
        #ping -c1 -w1 ${IP_PREFIX}.${indx} >/dev/null 2>&1 \
        #&& echo "ping ${IP_PREFIX}.${indx}  ok" \
        #|| echo "ping ${IP_PREFIX}.${indx}  fail"

    ping -c1 -w1 ${IP_PREFIX}.${indx} >/dev/null 2>&1
    if [ $? -eq 0 ]; then
            echo "ping ${IP_PREFIX}.${indx}  ok"
    else
              echo "ping ${IP_PREFIX}.${indx}  fail"
    fi         


done;

论坛徽章:
0
2 [报告]
发表于 2014-12-28 20:33 |只看该作者
这个是 串行的, 先ping 第1个ip, 然后再ping 第2个ip.....
考虑到ping多个ip, 他们之间没有依赖性, 所有考虑到 同时启动 多个进程(线程),  子shell

下面2中方法, 都是在后头启动多个进程.
请问:  有什么区别吗?   还是有一个是错误的呢?

##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        (
       ##用户操作
        )  &
       
done;

wait




##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        {
      ##用户操作
        } &
      
done;

wait


论坛徽章:
0
3 [报告]
发表于 2014-12-28 20:34 |只看该作者
这个是 串行的, 先ping 第1个ip, 然后再ping 第2个ip.....
考虑到ping多个ip, 他们之间没有依赖性, 所有考虑到 同时启动 多个进程(线程),  子shell

下面2中方法, 都是在后头启动多个进程.
请问:  有什么区别吗?   还是有一个是错误的呢?

##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        (
       ##用户操作
        )  &
       
done;

wait




##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        {
      ##用户操作
        } &
      
done;

wait


论坛徽章:
0
4 [报告]
发表于 2014-12-28 20:34 |只看该作者
这个是 串行的, 先ping 第1个ip, 然后再ping 第2个ip.....
考虑到ping多个ip, 他们之间没有依赖性, 所有考虑到 同时启动 多个进程(线程),  子shell

下面2中方法, 都是在后头启动多个进程.
请问:  有什么区别吗?   还是有一个是错误的呢?

##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        (
       ##用户操作
        )  &
       
done;

wait




##----------ping ip 192.168.1.1-192.168.1.254-----------

IP_PREFIX=192.168.1
for indx=$(seq 1 254); do
       
        {
      ##用户操作
        } &
      
done;

wait


论坛徽章:
0
5 [报告]
发表于 2014-12-28 20:37 |只看该作者
抱歉, 网络有问题, 刷新了 几下, 就 提交了 n 下.

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
6 [报告]
发表于 2014-12-28 21:34 |只看该作者
用nmap不就行了,还用得着写程序吗?

论坛徽章:
0
7 [报告]
发表于 2014-12-29 08:47 |只看该作者

其实 , 我想问一下 , 下面的2中方式, 哪个是对的?  或者都是对的???

(
  cmd1
  cmd2
  cmd3
) &



{
  cmd1
  cmd2
  cmd3
} &


---------ping ip  可以用nmap-----
---------但是其他的处理, 有的是要放到后台的-----------

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
8 [报告]
发表于 2014-12-29 09:23 |只看该作者
  1. px@ubuntu:~$ echo $BASH_SUBSHELL;{ echo $BASH_SUBSHELL;}   
  2. 0
  3. 0
复制代码
回复 7# xuzhou2015
  1. px@ubuntu:~$ echo $BASH_SUBSHELL;( echo $BASH_SUBSHELL;)
  2. 0
  3. 1
复制代码
这样能看出不同吗?

论坛徽章:
0
9 [报告]
发表于 2014-12-29 11:24 |只看该作者
太深奥的, 理解不了啊!!!

但就 我提的这个 问题,  ping 多个ip

这2中写法, 都是正确的吗?
因为都是要到 后台运行  {} &    /// ()&
如果关系不大, 至于是不是 在同一个shell进程中, 也就无所谓了.
但是, 是否 可以这样理解呢??  如果放在后台执行, linux会自动 启动一个进程, 在后台运行.

假如都在同一个shell中运行,  {} &,
那 ping 多个ip, 还能 并行吗?   后台 也是 串行的了??? (先 ping ip1, 再 ping  ip2 吗?)


请高手指教!!!!

论坛徽章:
0
10 [报告]
发表于 2014-12-29 17:04 |只看该作者

请大家帮忙!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP