指定systemd.debug-shell=1
为内核参数是可行的:当 systemd 启动挂起时,我可以通过 Alt+F9 切换到 shell。
但这个外壳是完全不可能的,因为动画
[ *** ] A start job is running for Create Volatile Files and
Directories (4min 23s / no limit)
横幅正在破坏我的提示符和命令行输出。
因此,我的问题是:如何在 shell tty9 中禁用这个阻碍 systemd 的输出?
我同意它显示在 tty1(即主控制台)中 - 但按原样,它会使 systemd 调试 shell 无法使用。
这是 Fedora 29 下的 systemd。
答案1
一种方法是同时设置systemd.show_status作为内核参数。例如,总共:
systemd.debug-shell=1 systemd.show_status=false
这使得 systemd 调试 shell 再次可用。
然而,它会杀死所有 systemd 启动控制台输出,而不仅仅是阻碍动画。也许有更好的方法 - 例如 - 告诉 systemd 以某种方式打印到某个 tty。
挂起的作业可以通过以下方式显示:
# systemctl list-jobs | grep running
答案2
如果添加引导选项console=tty1
,它应该将 systemd 输出保留在 tty1 上。
话虽这么说,我认为systemd.show_status = false更接近你的要求。
console=tty1
还将在 tty1.[*] 上保留内核消息,因此您可能会错过有用的警告或错误消息。如果内核完全崩溃,它可以将非常有用的信息记录到 tty1,但您将无法切换回来查看它。 (公平地说,一旦使用图形界面,您可能会遇到同样的问题)。
答案3
插入的 返回; 将修复乱码的 F9 控制台系统D:
static void manager_print_jobs_in_progress(Manager *m) {
_cleanup_free_ char *job_of_n = NULL;
Iterator i;
Job *j;
unsigned counter = 0, print_nr;
char cylon[6 + CYLON_BUFFER_EXTRA + 1];
unsigned cylon_pos;
char time[FORMAT_TIMESPAN_MAX], limit[FORMAT_TIMESPAN_MAX] = "no limit";
uint64_t x;
return;
assert(m);
此后,将不再有停止作业通知,但您可以随时查找日记条目。也许人们也可以在某个地方找到等待时间。看可怕的赛昂人被修补了有更多细节。
请随意要求重新打开标题为“修复可怕的“A stop job is running”cylon-animation garbling systemd.debug_shell on Alt-F9”的OP,该OP已从视图中重定向。再次“重复”没有意义。这似乎逐渐行不通。