bash脚本/ vi中的后台进程

时间:2014-05-07 17:03:11

标签: linux bash vi openvpn

我有一个关于在bash脚本中向后台添加进程的问题。我有一个小脚本来测试openvpn的速度,好像服务器是客户端一样。但是openvpn喜欢在前台运行,以防止运行任何类型的额外命令。

通常只是通过cmd行,我运行:

$ (openvpn --config myconfig.opvn) &

然而,在vi中,我尝试这样做,并且它不像在cmd行上那样工作。

connect () {
    (openvpn --config myconfig.opvn) &;
    sleep 30;
    $speed --server 2426 | grep 'Download\|Upload' > $log;
    killall openvpn;
}

有没有办法在vi中执行此操作,以便它能够像我想要的那样工作?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将 openvpn 放在不同的文件中。让我们说xyz.sh并从你的connect函数调用xyz.sh,如下所示:

file:xyz.sh

  

(openvpn --config myconfig.opvn)

connect () {
    . ./xyz.sh &
    sleep 30;
    $speed --server 2426 | grep 'Download\|Upload' > $log;
    killall openvpn;
}

即可。 ./xyz.sh 将打开一个新的控制台,并为您运行 openvpn 命令。希望这会有所帮助。

答案 1 :(得分:0)

有一些冗余语法可能会妨碍。这是你的代码清理了一点。

connect () {
    openvpn --config myconfig.opvn &
    sleep 30
    $speed --server 2426 | grep 'Download\|Upload' > $log
    killall openvpn
}

请注意,我删除了openvpn周围的无关子shell;虽然我会想到你所拥有的东西会起作用。

建议使用更高级别的调试跟踪来运行openvpn。