如何限制systemd中tty的数量

som*_*ier 3 tty systemd

如果我跑步,systemctl我会得到很多 tty(见上文)。有什么办法可以限制这个数字,从而节省一些内存,因为显然我永远不需要这堆tty。

sys-devices-virtual-tty-ttya0.device                    loaded active plugged   /sys/devices/virtual/tty/ttya0
[...]
sys-devices-virtual-tty-ttyzf.device                    loaded active plugged   /sys/devices/virtual/tty/ttyzf
Run Code Online (Sandbox Code Playgroud)

0xC*_*22L 5

这与内核配置(source)中的以下两个设置有关:

$ zgrep CONFIG_LEGACY_PTY /proc/config.gz 
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
Run Code Online (Sandbox Code Playgroud)

我在 Cubietruck 上观察到这种行为,显然配置了这个数量的旧 PTY。感谢systemd-analyze plot我注意到这是延迟设备启动的主要因素。

原来有一个内核命令行选项可以动态限制数量:

pty.legacy_count=N
Run Code Online (Sandbox Code Playgroud)

N你要设置的数字在哪里)

对我来说,这意味着添加这样的一行:

extraargs=pty.legacy_count=6
Run Code Online (Sandbox Code Playgroud)

... to /boot/armbianEnv.txt(可以添加更多选项,用空格分隔;只是不要=用双引号将第一个的右侧括起来!)。

之后我跑了:

mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
Run Code Online (Sandbox Code Playgroud)

...因为我不确定是否armbianEnv.txt被“编译”到脚本图像中。我不这么认为,但我不想浪费任何时间。

无论如何,快速浏览一下:

systemctl |grep virtual-tty|wc -l
Run Code Online (Sandbox Code Playgroud)

... 确认现在只有 6 个遗留 PTY。

根据您的特定设备,整个设置也可以采用GRUB_CMDLINE_LINUX(或GRUB_CMDLINE_LINUX_DEFAULT)的形式,或者/etc/default/grubGRUB 为您的发行版存储其配置的位置(不要忘记update-grub在您更改之后)。