我有一个关于在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中执行此操作,以便它能够像我想要的那样工作?
谢谢。
答案 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。