我已经发出了一些命令(在 /usr/bin 上)在 Ubuntu 18.04 LTS 中运行 Matlab、Weka 等应用程序。在使用 Matlab 命令时,它会保留终端,直到我关闭 Matlab 或终端(如果我关闭终端,Matlab 也会关闭)。我怎样才能避免这个问题,这意味着 Matlab 命令在工作时不会保持终端?谢谢你。
以下格式以前有效,但突然不起作用。
#!/bin/bash
setsid /usr/local/MATLAB/R2018a/bin/matlab </dev/null >/dev/null 2>&1 & disown
现在 Matlab 只是打开徽标,但没有进一步的工作......
在这种情况下
nohup [CMD] &
是一个不错的选择。nohup
从运行它的终端中释放命令并使其免受终端挂断的影响。此外,您发布的命令会打开一个新会话并立即发送 EOF,
</dev/null
从而强制 matlab 不接受来自终端的任何输入。这可能是一个问题,具体取决于给定程序在打开时的执行方式。我也不认为disown
这里有任何用途,因为 & 在后台运行它,而 setsid 应该从终端中释放它。disown
不会断开程序与终端的连接,只会将其从作业列表中删除。无论如何,我会照常nohup [CMD] &
使用1)将程序与运行它的终端分开
2) 关闭标准输入
3) 将 stdout 和 stderr 重定向到单独的文件进行检查,而不是仅仅将其发送到
/dev/null
深渊4)
&
最后把它放在后台