我遇到了一个问题,即 SSH 登录后我的 Ubuntu bash 冻结除非我立即按 Ctrl+C。似乎后台正在加载某些内容。这个问题在我收到大量 bash 消息后开始出现,例如:
watchpack error (watcher): error: enospc: system limit for number of file watchers reached, watch ....
当我尝试使用 IntelliJ 远程开发启动 Angular 应用程序时触发了这些错误。如何解决此问题并防止 SSH 登录后 bash 冻结?
更新(问题已解决):
ng completion
在我的案例中,我遇到了终端冻结问题的根本原因。问题与用于 Angular 应用程序的命令有关。令人惊讶的是,这个命令被自动附加到我的~/.bashrc
文件中,导致了冻结行为。以下是导致问题的具体行:
# Load Angular CLI autocompletion.
source <(ng completion script)
为了解决这个问题,我只需从文件中删除有问题的行即可~/.bashrc
。
我不确定这行代码是如何出现在我的~/.bashrc
文件中的,但我怀疑这可能与我使用 IntelliJ Remote Development 有关。不过,这只是猜测,需要进一步调查。
如果您遇到类似的问题,我建议按照以下步骤恢复终端功能:
- 输入 SSH 凭据后,立即多次按 Ctrl+C。这将阻止执行文件中有问题的行
~/.bashrc
,并允许终端在我的情况下可用。 - 一旦终端可以访问,请检查
~/.bashrc
文件中是否有任何意外或有问题的行,尤其是最近添加的行。就我而言,涉及的行ng completion
就是罪魁祸首。 - 删除或注释掉
~/.bashrc
文件中可能导致冻结问题的任何可疑行。 - 保存更改
~/.bashrc
并重新启动终端或再次输入文件以应用修改。
或者,您也可以暂时重命名整个文件以检查是否是这个原因造成的:使用cd ~
然后mv .bashrc newfilename
通过遵循这些步骤,我能够(1.)再次使用我的终端和(2.)解决冻结问题并恢复终端的正常功能。
对未来吸取的教训是:拥有可用于 SSH 登录的第二个用户帐户总是好的。