![rc.local 在错误的时间运行](https://linux22.com/image/1198984/rc.local%20%E5%9C%A8%E9%94%99%E8%AF%AF%E7%9A%84%E6%97%B6%E9%97%B4%E8%BF%90%E8%A1%8C.png)
我最近在家里的一台机器上安装并设置了 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 访问,因此物理安全不是问题。