# 简述

使用 Termux 安装 Proot Linux 发行版,用 RealVNC Viewer 登入系统,没过几秒就会收到 The connection closed unexpectedly 的警告!

接着回到 Termux,看到终端机显示 [Process completed (signal 9) - press Enter] 的错误,原来是 Termux 的行程被 Android 系统中止了,但是手机 RAM 明明还够用啊?

此问题源自于 Android 12 引入的新机制,下面简述原因,以及提供暂时的解决方法。

Termux 发生 signal 9 错误的原因:agnostic-apollo 在 Phantom, Cached And Empty Processes 一文中详述了 Android 12 引进的新机制。Android 系统将会监控 APP 所 fork 出来的子行程,并在达到 32 个以上子行程后将其终止,避免占用过多 CPU 资源。

此一机制称为 "Phantom Processes Killing",因为开发者最害怕看到这种情况,得名影子行程杀手。

在开发者要求下,Google 于 Android 12L 以及 Android 13 以上版本加入了关闭 Phantom Processes Killing 的选项 settings_enable_monitor_phantom_procs,然而使用者还是要手动使用 ADB 指令关闭。因此这是 Google Android 的问题,Temrux 开发者尚未找到正式解决办法,下面指令停用的办法是 agnostic-apollo 提出的。

以 Termux 来说,Phantom Processes Killing 会导致 Termux 执行指令的时候被系统随机中止。Proot distro 若要跑图形环境自然就会制造更多子行程了吧。尤其在切换到后台,要用 VNC Viewer 连线的时候,就会触发 Phantom Processes Killing,不管手机 RAM 有多大。接著回到 Termux 便会看到 [Process completed (signal 9) - press Enter] 的错误讯息。

解决 Termux 的 signal 9 错误执行指令将 Phantom Processes Killing 停用即可,虽然会导致某些 APP 的背景行程跟著不受控制。

以下假定 Android 手机皆有安装 Google Play 服务框架,因为 GMS 会不定时覆写装置设定,所以要一并将其关闭。然而关闭 GMS 覆写可能会导致手机卡开机。

# 如果手机没有 Root 权限

点击这里到 Android 官网下载 Windows 版的 Platform Tools 并且解压缩。

进入 platform_tools 目录,会看到 ADB 和 Fastboot 的执行档。在这里按 SHIFT + 右键,开启终端机 (或 Powershell)。

手机开启系统设定→关于手机,版本号码点 5 下,之后搜寻 “开发人员选项” 进去开启 “ADB 侦错”。

将手机插上电脑,于 Windows 的终端机输入以下指令,在手机上同意侦错。

./adb devices

# 接著按照 Android 版本,执行以下指令

# Android 12L 和 Android 13:

./adb shell "settings put global settings_enable_monitor_phantom_procs false"

# Android 12:

./adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent; /system/bin/device_config put activity_manager max_phantom_processes 2147483647"

重开机,完成。

# 如果手机有 Root 权限

开启 Termux,切换到 su,取得 root 权限

su #取得 root 权限

按照 Android 版本执行指令。

# Android 12L 和 Android 13 以上:

su -c "settings put global settings_enable_monitor_phantom_procs false"

# Android 12:

su -c "/system/bin/device_config set_sync_disabled_for_tests persistent; /system/bin/device_config put activity_manager max_phantom_processes 2147483647"

重开机,完成。

更新于

请我喝[茶]~( ̄▽ ̄)~*

叶玖洛-星尘 微信支付

微信支付

叶玖洛-星尘 支付宝

支付宝

叶玖洛-星尘 QQ

QQ