rc.local 在错误的时间运行

rc.local 在错误的时间运行

我最近在家里的一台机器上安装并设置了 Ubuntu Server 22.04.03。我可以从我的桌面完美地通过 SSH 进入它,但目前我仍连接着键盘和显示器。

在这种情况仍然如此的情况下,我希望它自动运行 HTOP(或任何其他有趣/漂亮的东西,欢迎提出建议)并在启动完成后立即将其显示在显示器上。

目前,根据此处另一个答案的建议,我的/etc/rc.local文件如下所示:

#!/bin/sh -e
sh '/etc/mainmonitor.sh'
exit 0

其中mainmonitor.sh包含:

#!/bin/sh
htop

我曾尝试过本指南创建一个 systemd 单元来运行 rc.local。因此该文件是可执行文件等。

rc.local.service从那时起,我根据猜测稍作修改,现在看起来像这样:

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=simple
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

唯一真正的变化是Type=simple代替=forking,因为我不确定这会尝试启动后台进程。

目前这个几乎有效。结果是在启动过程中,在登录提示符前几分钟,htop确实开始,但它并没有停留在那里,而是立即被几行 [OK] 覆盖,最后屏幕被擦除,登录提示符出现(然后 cloud-init 弄得一团糟,但那是另一个问题)

最终,我想完全禁止它进入登录提示符,只显示 htop 或我喜欢的任何内容。如果我确实需要直接登录,那么我可以按 F10 退出 htop,登录屏幕就会显示出来。然后我可以通过 SSH 从 htop 确认后台没有其他 htop 实例在运行。

如果不可行,我愿意尝试其他替代方案来实现类似的结果rc.local。我见过一些关于自动登录的难以理解的答案,但这个存在一些问题,比如无法注销,因为你只是再次自动登录......我对此还很陌生,无法自己解决这个问题。

这是一个家庭服务器,将放置在我家中,否则只能通过密钥通过 SSH 访问,因此物理安全不是问题。

相关内容