【问题标题】:Self duplicate background script自复制后台脚本
【发布时间】:2016-09-23 07:38:44
【问题描述】:

这是一个后台脚本测试。

运行时会启动两个进程,我不明白为什么。

睡眠 20 后停一停。其他的就忘记了。

#!/bin/bash

back(){
    n=0
    while [ 1 ]
    do      
        echo $n
        n=$(($n+1))
        sleep 5
    done
}

back &
sleep 20
exit

调用中的命令“ps -a”:

PID    TTY      TIME      CMD
8964   pts/2    00:00:00  backgroundtest
8965   pts/2    00:00:00  backgroundtest
8966   pts/2    00:00:00  sleep
8982   pts/2    00:00:00  sleep

睡眠 20 后:

PID    TTY      TIME      CMD
8965   pts/2    00:00:00  backgroundtest
9268   pts/2    00:00:00  sleep

然后永远运行...

为什么?

【问题讨论】:

    标签: linux bash shell process background


    【解决方案1】:

    while [ 1 ] 是一个无限循环。 [ 1 ] 总是正确的。

    所以back & 是一个无限循环,从后台 (&) 开始,然后以 sleep 20 继续执行,确实在 20 秒后结束,留下两个进程持续 20秒(& 在后台启动一个新进程),然后是无限的。

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多