程序未在信号陷阱调用的函数中启动

程序未在信号陷阱调用的函数中启动

我有一个 Bash 脚本,当它在控制台中关闭时,需要执行一些清理命令。

基本上,清理是我的 Python 守护程序中的一个重新启动命令(我们称其为),这会停止当前进程并启动一个新进程。 Bash 脚本用于监视 Python 守护程序应用程序。

然而问题是,由于某种原因,它没有启动程序来重新启动Python程序。

Bash 脚本位于我使用 Raspbian 的 Raspberry Pi 的桌面上。我应该通过双击它并选择来启动它在终端中执行

这是我的代码的要点。

function clean_up {
    python3 A restart & #stops the python Deamon if running, then start it. (will start if it wasn't running to begin with)
    disown
    quit    
}

trap clean_up SIGINT 
trap clean_up SIGTERM
trap clean_up SIGHUP
trap clean_up SIGCHLD
trap clean_up SIGCONT
python3 A stop
... (code to start monitor)
python3 A start ArgumentToHookToMonistor 

答案1

我不确定这是否会达到您想要的效果,但它将有助于调试问题:

  • 在脚本的开头:启用作业控制(在脚本中默认禁用):set -m

  • 然后在 clean_up 函数中,更改disowndisown %1 2>&1 | tee /path/to/logfile.log

  • 另外,在该函数中,如果您希望在手动运行脚本时有时间查看消息,请在行sleep 3前添加 。quit

相关内容