bash-trap

    3熱度

    1回答

    我正在開發一個管理一些陷阱的腳本。一開始,我只設法INT和SIGTSTP與此代碼和它工作得很好: #!/bin/bash function capture_traps() { echo -e "\nDoing something on exit" exit 1 } trap capture_traps INT trap capture_traps SIGTSTP r

    1熱度

    1回答

    我在玩bash讀取功能。我喜歡我目前shell中的一個簡單圖層。讀-e沒有tab-complete和以前的命令,並且用ctrl + d發送EOF讓我回到我的原始shell。這裏是我的參考: Bash (or other shell): wrap all commands with function/script 我想一些幫助處理SIGINT,CTRL + C。在一個正常的shell中,如果你開始輸

    1熱度

    2回答

    我對將信號轉發到具有陷阱的子進程感到困惑。說我有兩個腳本: a.sh #!/bin/bash # print the process id echo $$ cleanup() { rv=$? echo "cleaning up $rv" exit } sleep 5 trap '' SIGTERM # trap cleanup SIGTERM ec

    0熱度

    1回答

    雖然Bash man page指出:如果失敗的命令是......在& &或執行命令的一部分 不執行ERR陷阱||列表... 我希望在一個子shell中的代碼將在不同的上下文,不會受到上述限制。下面的代碼表明,即使子shell都沒有不受此限制免疫: #!/bin/bash main() { local Arg="$1" ( set -e echo "I

    0熱度

    1回答

    這非常適用: $./tailx.sh error.log 10.21.xxx.xxx # /tmp/.log.pipe is removed 但是,當這樣執行/tmp/.log.pipe不會被刪除: $source tailx.sh $tailx error.log 10.21.xxx.xxx # /tmp/.log.pipe is not removed 我想知道爲什麼和怎麼樣? 這是

    1熱度

    1回答

    我的ruby腳本創建了一個臨時文件併產生了一個潛在的長時間運行的外部進程。無論腳本終止的方式如何,腳本結束後都不會繼續存在。 我想下面的行會照顧的事情: stderr = File.open(Tempfile.new(__FILE__),'w') trap("EXIT") { FileUtils.rm_f stderr.path } pid = spawn("dd", *ARGV, STDER

    2熱度

    1回答

    實際的信號,我在幾個地方讀(SO包括)該-e被認爲是「窮人的形式」,是不可靠的對任何錯誤退出腳本。一個更好的辦法來處理錯誤好像是用trap,因爲這樣的: trap "echo there was an error; exit 1;" ERR 我似乎無法在手冊頁什麼信號ERR實際上是定位?我假設它是SIGQUIT,但我無法確定。 man 7 signal 只有你所期望的SIGTERM SIG

    3熱度

    1回答

    我需要檢測何時退出其中一個後臺進程。因此,我安裝了一個陷阱。 run_gui和run_ai1簡單exec功能。 run_gui & gui_pid=$! run_ai1 & ai1_pid=$! trap 'echo foo' SIGCHLD while true; do echo "Started the loop" while true; do read

    4熱度

    2回答

    有沒有辦法檢查在Bash中設置了哪些trap(在當前會話或腳本中)? 理想情況下,我希望能夠獲得分配給它們的trap的信號列表,但如果這是不可能的,我可以單獨檢查每個信號。

    0熱度

    2回答

    好的,所以我是一個bash腳本的初學者,我意識到這個問題可能有點笨拙,但我會盡可能清楚! 我寫了下面的腳本來創建一個文件夾中的存儲庫的備份。該腳本如下: #!/bin/bash SVNREPO="/var/svn" TEMP="/var/tmp" BACKUP="/home/helix/backups" cd $SVNREPO if [ $# -eq 0 ]; then