부팅 중에 루트로 스크립트를 실행하고 기본 Linux 터미널에 표시하시겠습니까?

부팅 중에 루트로 스크립트를 실행하고 기본 Linux 터미널에 표시하시겠습니까?

다음은 kickstart 시스템 초기화 스크립트를 구성하는 방법입니다(kickstart conf 스크립트 조각입니다):

...

%post --log=/root/ks-post.log --interpreter /bin/bash

cd /root
curl --silent --show-error --retry 5 -O "https://mysecurewebsite.net/init-script7.sh"
cp init-script.sh /etc/init.d/initializesystem
chmod +x /etc/init.d/initializesystem
[ ! -d /etc/rc.d ] && echo "/etc/rc.d/ not present, creating dir." && mkdir /etc/rc.d
[ ! -d /etc/rc.d/rc3.d ] && echo "/etc/rc.d/rc3.d/ not present, creating dir." && mkdir /etc/rc.d/rc3.d
ln -s /etc/init.d/initializesystem /etc/rc.d/rc3.d/S30initializesystem

%end

이는 매우 잘 작동하며 운영 체제가 설치된 후 처음 부팅할 때 백그라운드에서 무인으로 실행됩니다.

그러나 기본 시작 tty가 이 스크립트의 표준 출력을 표시하도록 하여 좀 더 사용자 친화적으로 만들고 싶습니다 initializesystem. 현재 진행 상황을 로그 파일에 기록하는 스크립트가 있는데 루트로 로그인하여 tail -f로그 파일에 로그인해야 합니다. 원한다면 여전히 이 작업을 수행하고 싶지만 로그인하지 않고도 자동으로 출력을 표시할 수 있는지 알고 싶습니다.

한 가지 주목해야 할 점은 시스템이 완전히 비대화형이 되는 것을 원하지 않는다는 것입니다. 예를 들어, 이 스크립트가 계속되는 동안 ++ 작업을 Ctrl하고 로그인하여 일부 관리 작업을 수행 하고 싶습니다.AltF2

Ctrl+ C이 특정 스크립트를 런타임에 종료할 수 없는 경우에도 선호합니다. 하지만 SIGINT를 처리하기 위해 설정하는 것이 쉬울 수 있다고 생각되므로 언급한 것을 잊어버리세요.

가능합니까? 여기에는 Centos 7이 사용됩니다.

답변1

당신이 지적했듯이 루트로서 /dev/tty1.

스크립트가 표준 출력에 쓰는 경우 다음을 사용할 수 있습니다.

yourscript | tee -a /your/log/file > /dev/tty1

스크립트가 로그 파일에 직접 쓰는 경우 작업이 쉽지 않습니다. 로그 파일을 추적하고 새 콘텐츠를 표시해야 합니다. 이 경우 print출력을 쉽게 두 배로 늘릴 수 있는 일부 루틴을 사용하도록 스크립트를 변경하는 것이 더 쉬울 수 있습니다.

콘솔에 먼저 로그인하더라도 쉘은 인터럽트를 보낼 위치를 알 수 없기 때문에 Ctrl+를 사용하여 이를 중지 할 수 없습니다.C

/dev/tty2시작 환경 설정에 따라 그래픽 로그인 여부에 관계없이 첫 번째 화면이 깨지는 것을 방지하기 위해 as를 사용할 수 있습니다 . 또한 첫 번째 텍스트가 이후에 나타나지 않도록 개행 문자로 로그를 시작하는 것도 고려해야 합니다.

machinename login:

화면 상단에 팁이 표시됩니다.

나는 이런 식으로 작성한 콘솔에서 뒤로 스크롤할 수 있는 방법이 없다고 생각하지만 아마도 그것은 중요하지 않을 것입니다.

관련 정보