我有一系列 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/