我的计算机上通常有许多长时间运行的 zsh 进程(分散在各种屏幕会话中),但是一段时间未使用的 shell 往往会被换掉。当我切换到这样一个换出的 shell 并按 enter (在一个空提示符下)时,shell 需要几秒钟才能响应并显示一个新的提示符(但之后它会恢复正常工作)。
为了减少我的烦恼,我想要一个命令(例如unswap PID
),我可以调用(从另一个已经响应的 shell)来强制换入 shell。
关于如何实现这一目标的任何想法?
PS我开始四处寻找一个命令来要求系统在任何进程中交换 - 但我没有找到这样的东西,让我相信这是不可能的。我在这里将我的问题集中在zsh
,因为这是我真正感兴趣的情况,我希望可能有针对该特定情况的解决方案。如果您有一个更通用的方法适用于任何进程(而不仅仅是 zsh),那也将非常受欢迎。
PPS起初我想在我的 shell 中使用一个陷阱函数,然后它做了一些足以导致 shell 交换的活动(任何事情)。WINCH
但是用信号尝试过这个,我发现它不起作用。(也许信号没有传递到换出的进程?有任何信号吗?)
编辑:在我的典型情况下,我有一堆zsh
进程正在运行,然后我的浏览器打开(带有多个 Gmail、Facebook 等标签)太久了,导致浏览器囤积所有可用的 RAM 并挤压其他一切都进入交换。桌面有一段时间没有响应,但很快就清理干净了。但是,当重新连接到屏幕会话时,必须手动唤醒每个 shell(通过它们并在每个 shell 中按 enter)。