Linux 상자가 있고 SSH를 사용하여 로그인할 수 있습니다. 내 쉘은 입니다 /bin/bash
. 결국 bash 쉘 프롬프트가 표시됩니다.
와 같은 bash 내장 명령을 실행할 수 있습니다 echo
. (접두사 경로)에서 일부 명령을 실행할 수 있습니다./bin
ls /bin
다른 명령(예:) whoami
이 중단된 것 같습니다. CTRL-C를 누르고 bash 프롬프트로 돌아갑니다.
다른 명령은 완전히 중단되고 CTRL-C는 명령을 종료하지 않으며 bash 프롬프트로 돌아가지 않습니다. ls /usr/bin
셸을 일시 중지하는 명령의 예입니다.
경로는 다음과 같습니다...누군가가 이 질문을 할 것이라는 것을 알고 있기 때문에...
$ echo $PATH
/u01/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/u01/app/oracle/tools/home/oracle/bin
이 문제의 원인은 무엇입니까? 이 문제를 해결하려면 어떻게 해야 합니까?
답변1
derobert는 이미 dmesg
댓글에서 언급했습니다. 다음과 같은 절대 경로를 사용하여 실행해 보세요.
/bin/dmesg | /bin/more
디스크 오류처럼 보이는 것이 있는지 확인하십시오. 나열된 디렉토리 중 하나가 PATH
실패한 디스크에 있을 수 있습니다. 디스크 오류로 인해 디스크가 멈추면 실패한 읽기 작업이 영원히 재시도되므로 실행할 명령을 검색하는 동안 셸이 정지될 수 있습니다.
최소화를 시도해 볼 수도 있습니다 PATH
. 처음에는 그냥 설정하세요.
PATH=/bin:/sbin
이제 정지나 절대 경로를 사용하지 않고 명령을 실행할 수 있으면 /usr/bin
해당 경로도 다시 추가하십시오 /usr/sbin
.
PATH=/bin:/usr/bin:/usr/sbin:/sbin
이제 절대 경로를 사용하지 않고도 모든 표준 명령을 사용할 수 있습니다. 정지가 더 이상 발생하지 않으면 이제 나머지 디렉터리 검사를 시작할 수 있습니다.
빠른 확인으로 ls
명령을 사용할 수 있지만 백그라운드에서 실행하면 명령이 중단되어도 현재 세션을 사용할 수 없게 되는 일이 없습니다. 예를 들어:
ls /u01/jdk/bin &
명령 출력이 표시되면 ls
Enter를 한 번만 누르면 프롬프트가 다시 표시됩니다. (백그라운드 명령이 방금 완료되었음을 나타내는 메시지가 셸에서 표시될 수도 있습니다.)
출력이 ls
나타나지 않거나 눈에 띄게 불완전한 경우 dmesg
명령 출력을 다시 확인하십시오. 이제 커널이 출력 끝에 디스크 I/O 오류를 뿌리고 있음을 알 수 있습니다. 이러한 오류 메시지는 오류가 발생한 디스크 장치를 식별하는 데 사용될 수 있지만 ls
명령이 실패한 경로를 정확히 알면 이미 이에 대해 꽤 잘 알고 있을 것입니다.