matlab - 让进程在不休眠的情况下使用屏幕运行

标签 matlab ssh

我使用 ssh 连接到服务器,然后使用“screen”命令创建了一个屏幕。
然后我使用“matlab < NameofFile.m”运行一个 Matlab 脚本,然后 Matlab 开始运行该脚本。

我注销屏幕(使用 Ctl+a+d)并断开与服务器的连接。然后,当我再次连接到服务器并检查我创建的屏幕时,出现 Matlab 正在运行,但是当我使用命令“top”时,提供的信息表明我在屏幕上运行的进程处于 sleep 模式(S )。

如何让进程使用屏幕运行,这样当我离开屏幕时,进程正常运行(即,当我使用命令“top”时显示“R”)?

提前感谢您提供的任何帮助。

最佳答案

请参阅讨论主题,在这里为后代回答。

sleep 是一种正常的进程状态,只要进程等待某事(通常是 I/O)就会发生。该进程保留在就绪队列中,等待完成后将运行。所以我对你的进程 sleep 并不感到惊讶。

也就是说,您的脚本可能完全受 CPU 限制,例如:( while :; do :; done ) & ps e $! -- 将始终显示 R .完全受 CPU 限制的进程极为罕见——它们确实必须在某些时候输出一些有用的东西,而这样的 I/O 会使它们进入休眠状态。而且,即使长时间不输出,通常还有其他进程在争夺CPU,内核会强制抢占。 (除非您有一个非常具体的 nice 级别或非常具体的内核配置,让您的非输出生成 CPU 脚本完全占用 CPU。这是非常非常罕见的情况。)

如果想更好的监控状态变化,可以使用top -d .01 -pPID (将 PID 替换为实际的进程 ID)。这让您可以判断它是否长时间休眠或与另一个进程争用 CPU。如果您有 prstatlatencytop命令,可以看LAT对于每个(例如 prstat -m 2 ),它将告诉您该进程经历了多少争用。越接近 0,争用越少。

回答“我怎样才能让进程继续运行”的一般问题,可以这样做:nohup matlab < script.m & .即使在终端断开连接后,这也使进程保持事件状态。但是使用 screen意味着您不需要这样做,因为 screen管理终端 session ,直到 matlab知道了,屏幕还是连着的。

关于matlab - 让进程在不休眠的情况下使用屏幕运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938818/

相关文章:

macos - 全新安装后设置 git

node.js - npm 安装错误 : "Host key verification failed."

Matlab 幂函数随机出现故障

performance - Matlab:高效的图像 block 提取

file - Matlab - 我正在处理什么样的文件?

python - 如何通过 Paramiko 获取广播消息

git - 在代理模式下使用两个不同的凭证处理两个不同的Git Organization存储库

linux - bash + Linux + 如何忽略字符 "!"

arrays - 如何在 MATLAB 中将数组打印到文本文件

matlab - 在 MATLAB 中获取排列的映射