메시지를 받기도 전에 어떤 프로세스가 실행되고 있나요?

메시지를 받기도 전에 어떤 프로세스가 실행되고 있나요?

특정 서버에 로그인하면 다음이 표시됩니다.

Ctrl+C 이전

정보를 얻었 Last login: ...지만 프롬프트는 표시되지 않습니다. 나는 쳤다Ctrl+C 단지그 다음에아래 스크린샷처럼 내 사용자 이름과 비밀번호가 올바른지 확인하는 메시지가 표시됩니까?

Ctrl+C 후

오늘 아침부터 사무실에 있는 웹 서버에서 이 문제가 발생했습니다. 오늘 머신의 디스크를 교체한 것은 우연이 아니지만 발생한 일은 이전 디스크가 복제되었으며 시스템의 다른 모든 사용자가 이 문제를 겪고 있지 않다는 것입니다.

무슨 일이 일어나고 있는지 아는 사람 있나요?

답변1

쉘 초기화 파일 중 하나에서 시간이 오래 걸리는 문제가 있습니다. 로그인 쉘이 bash인 경우 or (또는 ) set -x맨 위에 추가하고 , zsh인 경우 and and 를 추가 하십시오. 이런 식으로 쉘은 각 명령을 실행하기 전에 인쇄합니다. 나중에 실행하여 추적을 끄십시오.~/.bash_profile~/.profile~/.bash_login~/.zprofile~/.zlogin~/.zshrcset +x

명령은 시스템 전체 초기화 스크립트에서 호출되는 명령일 수 있습니다 /etc/profile. 해당 파일을 변경할 수 없지만 파일이 수행하는 작업을 확인해야 하는 경우 추적 기능을 사용하여 로그인 셸을 실행하세요(예: bash --login -x.

또 다른 접근 방식은 두 번째로 로그인하여 ps다른 도구에서 무슨 일이 일어나고 있는지 관찰하는 것입니다. Linux에서는 ps x모든 프로세스를 표시합니다(일반은 ps현재 터미널에서 실행 중인 것만 표시하지만 여기서는 아무 소용이 없습니다). ps -t pts/42터미널에서 실행되는 프로세스로 제한됩니다 ( 두 번째 세션의 터미널을 결정하려면 먼저 /dev/pts/42실행해야 할 수도 있습니다 ).ps x

답변2

쉘을 중단시키는 프로세스를 종료하는 대신 Crtl+Z를 사용하여 프로세스를 중지한 다음 jobs명령을 사용하여 프로세스가 무엇인지 확인하십시오.

답변3

$HOME/.bashrc, $HOME/.profile에서 실행 중인 명령이 올바르게 백그라운드로 설정되지 않았거나 사용자의 입력을 기다리고 있을 가능성이 높습니다. 시작하려면 해당 2개의 파일을 살펴보겠습니다.

거기에 아무것도 나타나지 않으면 해당 파일, /etc/bashrc, /etc/profile 및 /etc/profile.d/* 디렉토리에 있는 파일에 해당하는 시스템 파일을 살펴보겠습니다. 아마도 시스템 관리자라는 누군가가 현재 로그인할 때 실행을 시도하는 시스템 수준 파일에 무언가를 추가했을 것입니다.

관련 정보