簡體   English   中英

bash腳本/ vi中的后台進程

[英]background process in bash script/vi

我有一個關於在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中做到這一點,以便它像我想要的那樣工作?

謝謝。

您可以將openvpn放在其他文件中。 讓我們說xyz.sh並從connect函數調用xyz.sh,如下所示:

檔案:xyz.sh

(openvpn --config myconfig.opvn)

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

./xyz.sh將打開一個新控制台,並將為您運行openvpn命令。 希望這可以幫助。

有一些多余的語法可能會給您帶來麻煩。 這是您的代碼整理了一下。

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

請注意,我刪除了openvpn周圍多余的子外殼; 盡管我本以為您的工作會成功。

建議使用更高級別的調試跟蹤來運行openvpn。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM