/etc/rc.local은 (일반) 사용자가 로그인하기 전에 스크립트를 실행하기에 좋은 장소입니까?

/etc/rc.local은 (일반) 사용자가 로그인하기 전에 스크립트를 실행하기에 좋은 장소입니까?

Ubuntu 14.04 서버가 있고 시작하는 동안 일반 사용자가 SSH를 통해 로그인하기 전에 네트워크를 통해 무언가를 동기화해야 합니다.

/etc/rc.local스크립트를 호출하는 위치가 올바른지 궁금합니다 .

이 스크립트에 대한 설명을 확인하세요.

이 스크립트는 각 다중 사용자 런레벨이 끝날 때 실행됩니다.

시스템이 사용자 로그인을 수락할 준비가 된 후에 호출되는 것 같습니다.

이것은 "각 다중 사용자 런레벨이 종료될 때"로 이해됩니다.

나는 여기서 답을 보았다:목적 및 일반적인 사용법/etc/rc.local, 아직 조금 모호한 느낌이 듭니다.

고쳐 쓰다

더 많은 컨텍스트가 필요합니다. 이는 사용자가 로그인하기 위해 말 그대로 많은 컴퓨터가 서버를 폴링하는 자동화된 프로세스입니다.

답변1

일반적으로 /etc/rc.local유효한 옵션이지만 "무언가 동기화"와 관련된 작업의 양과 이 작업이 완료될 때까지 사용자가 로그인할 수 없는 중요성에 따라 달라집니다.

사용자가 로그인하기 전에 동기화가 완료되었는지 확인하려면 두 가지 "nologin" 옵션 중 하나를 고려할 수 있습니다.

  1. /usr/sbin/nologin동기화 전에 특정 사용자 그룹에 대한 로그인 셸을 설정하고 동기화 후 다시 시작하는 스크립트를 작성하세요 .

  2. /etc/nologin동기화하기 전에 빈 파일을 생성 touch /etc/nologin하고 동기화 후에 삭제하세요. SSH를 통해 루트 로그인을 비활성화하면 이 옵션은 루트가 아닌 모든 계정 로그인을 차단하므로 쉽게 잠길 수 있습니다.

답변2

설명하는 상황에서는 동기화 스크립트를 호출하는 것이 /etc/rc.local유효한 솔루션입니다. 다른 사람들이 의심할 바 없이 다른 솔루션을 생각해 내더라도 이것은 아마도 제가 선택할 솔루션이기도 합니다.

모든 "내장" rc 시작 스크립트 이후와 콘솔에 로그인 프롬프트가 나타나기 전에 실행됩니다. 하지만 사용자는 rc.local실행하기 전에 시스템에 SSH 로 연결할 수 있다는 점을 기억하세요 . 이것이 문제인 경우 네트워크 부팅 후 SSH 부팅 전에 부팅 순서에 스크립트를 배치할 수 있습니다. rc.local위치 이동에 대해 걱정하지 않고 계속 사용하는 이유는 SSH 데몬이 시작되고 사용자가 시스템을 사용할 수 있음을 깨닫는 사이의 시간이 시스템이 도착하여 스크립트를 실행하는 데 걸리는 시간보다 훨씬 길기 때문입니다 rc.local.

답변3

시스템이 사용자 로그인을 수락할 준비가 된 후에 호출되는 것 같습니다. 이것은 "각 다중 사용자 런레벨이 종료될 때"로 이해됩니다.

아니요, /etc/rc.local시스템이 시작될 때 실행됩니다. (사용자가 ssh를 사용하여 로그인하면 환경을 설정하고 스크립트를 실행하여 /etc/profile ~/.bashrc다음 내용을 읽습니다.이 페이지더 많은 정보를 알고 싶습니다. )

/etc/rc.local에서 스크립트를 호출하는 것이 올바른 위치인지 궁금합니다.

그래 넌 할수있어

답변4

개인적으로 나는 @John의 솔루션을 사용하고 싶지만 맨 처음(S01 심볼릭 링크 근처)에서 다음 명령을 실행하도록 부팅 순서를 설정할 수도 있습니다.

echo "Please try to log in later" > /etc/nologin

그런 다음 다음을 입력하십시오 /etc/rc.local.

/root/yourscript.sh
rm -f /etc/nologin

이 파일이 있으면 /etc/nologin루트가 아닌 사용자가 SSH 또는 콘솔에서 로그인할 수 없습니다. 이렇게 하면 스크립트가 완료될 때까지 사용자가 로그인되지 않습니다.

관련 정보