linux - 从 shell 脚本调用具有超时功能的 matlab

标签 linux bash matlab shell timeout

我有一系列 matlab 代码,其中一个脚本在某些情况下会无限期挂起。目前,我有一个 shell 脚本来调用管道的每一部分。但是,我想“超时”可能无限期挂起的一段 matlab 代码。

如果直接在终端窗口中输入以下代码,则它可以完美运行。但是,当此代码是 shell 脚本中的一行时,它将不会执行 matlab 脚本。

timeout --kill-after=25 25 matlab -nodisplay -nosplash -nodesktop -r "run('testing.m'); exit;"

从 shell 脚本执行时,在达到超时和终止选项之前不会发生任何事情。还有,

matlab -nodisplay -nosplash -nodesktop -r "run('testing.m'); exit;"

在 shell 脚本中运行没有问题。

最佳答案

根据上面的评论,添加 --foreground 解决问题。

最有可能的是,'testing.m' 需要访问 TTY/TTY 信号。默认情况下,超时会将命令作为子进程运行,w

timeout --foreground --kill-after=10 25 matlab -nodisplay -nosplash -nodesktop -r "run('testing.m'); exit;"

来自超时手册页: - 前景 当不直接从 shell 提示运行超时时,允许 COMMAND 从 TTY 读取并获取 TTY 信号;在这种模式下,COMMAND 的 child 不会超时

关于linux - 从 shell 脚本调用具有超时功能的 matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58206082/

相关文章:

xml - 使用 xmllint 返回多个结果

image - 如何为语义分割创建像素标记图像?

c++ - C++ 中 bwdist 的替换函数

linux - 在 crontab 中带有 -f 标志的 pkill 在分号后不运行命令

Linux Kernel Programming,如何获取资料?

linux - 用 !! 在 bash 脚本中开始一行! (双响)

Windows Powershell 中的 Linux Bash Shell 命令

c - 写入关闭的本地 TCP 套接字不会失败

c - 通过将 char 转换为 USHORT 得到错误的 UTF-8 值

matlab - 如何在 MATLAB 中获取 contour3 绘制的曲线句柄?