systemd 디버깅 셸을 다시 사용할 수 있도록 설정

systemd 디버깅 셸을 다시 사용할 수 있도록 설정

이를 systemd.debug-shell=1커널 인수로 지정하면 작동합니다. systemd 시작이 중단되면 Alt+F9를 통해 셸로 전환할 수 있습니다.

하지만 이 쉘은 애니메이션이 완전히 불가능하기 때문에

[ ***  ] A start job is running for Create Volatile Files and 
        Directories (4min 23s / no limit)

배너가 프롬프트와 명령줄 출력을 망치고 있습니다.

그래서 제 질문은: 쉘 tty9에서 이 차단 시스템 출력을 어떻게 비활성화합니까?

나는 그것이 tty1(즉, 메인 콘솔)에 표시된다는 데 동의합니다. 그러나 있는 그대로 시스템 디버그 셸을 사용할 수 없게 만듭니다.

이것은 Fedora 29에서 시스템화되었습니다.

답변1

한 가지 방법은 두 가지를 모두 설정하는 것입니다.systemd.show_status커널 매개변수로. 예를 들어, 전체적으로 다음과 같습니다.

systemd.debug-shell=1 systemd.show_status=false

이렇게 하면 systemd 디버깅 셸을 다시 사용할 수 있게 됩니다.

그러나 블록 애니메이션뿐만 아니라 모든 시스템 시작 콘솔 출력이 종료됩니다. 어쩌면 더 나은 방법이 있을 수도 있습니다. 예를 들어 systemd에게 특정 방식으로 특정 tty에 인쇄하도록 지시하는 것입니다.

보류 중인 작업은 다음과 같은 방법으로 표시될 수 있습니다.

# systemctl list-jobs | grep running

답변2

부팅 옵션을 추가하면 console=tty1tty1에 systemd 출력이 남아 있어야 합니다.

그러고 보면 내 생각에는systemd.show_status = 거짓귀하의 요구 사항에 더 가깝습니다.

console=tty1커널 메시지는 tty1.[*]에도 보존되므로 유용한 경고 또는 오류 메시지를 놓칠 수 있습니다. 커널이 완전히 충돌하면 매우 유용한 정보를 tty1에 기록할 수 있지만 이를 보기 위해 다시 전환할 수는 없습니다. (공평하게 말하면 그래픽 인터페이스를 사용하면 동일한 문제에 직면하게 될 것입니다.)


[*]Linux: /dev/console, /dev/tty 및 /dev/tty0의 차이점

답변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);

이 시점 이후에는 더 이상 작업을 중지하라는 알림이 표시되지 않지만 언제든지 저널 항목을 찾을 수 있습니다. 어쩌면 사람들도 어딘가에서 대기 시간을 찾을 수 있을 것입니다. 바라보다무서운 사일런이 패치되었습니다자세한 내용이 있습니다.

보기에서 리디렉션된 "Alt-F9에서 systemd.debug_shell이 ​​왜곡되는 두려운 "작업 중지 중" 수정" cylon-animation 문제 해결"이라는 제목의 OP를 다시 열어달라고 요청하시기 바랍니다. 다시 "반복"하는 것은 의미가 없습니다. 이것은 점차 불가능해 보였습니다.

관련 정보