PS는 왜 수면 과정을 볼 수 없나요?

PS는 왜 수면 과정을 볼 수 없나요?

첫 번째 터미널을 만든 다음 "sleep 1000 &"를 사용하고 "ps"로 찾았습니다. 문제는 두 번째 터미널을 생성하고 "ps"를 입력하면 절전 프로세스가 없다는 것입니다. 이유를 알고 싶습니다.

여기에 이미지 설명을 입력하세요(내 숙제는 "힌트: TTY 열"이라고 말함)

답변1

기본적으로 ps현재 터미널(tty)에 연결된 프로세스만 표시합니다. 귀하의 경우에는 셸과 ps자체(둘 다 pts/2)입니다. 을 보려면 이 제한을 해제해야 합니다 sleep. 예를 들어

ps -e

man ps프로세스를 필터링하는 데 사용할 수 있는 다양한 옵션을 보려면 을 참조하세요 .

답변2

문제는 두 번째 터미널을 만들고 "ps"를 입력하면 sleep프로세스가 없다는 것입니다.

전부는 아니지만 일부 대화식 쉘의 경우 sleep 다음을 호출하는 내장 쉘이 될 수 있습니다.수면(3)(정확히 cd 쉘 내장 호출과 동일합니다.chdir(2)).

그럴 땐 아무 것도 안 보이잖아.sleep 프로세스왜냐하면 아무것도 없기 때문입니다. 그 이후의 과정은수면(3)-ing은 당신의 것입니다유닉스 쉘; 자신만의 쉘 인터프리터를 작성할 수도 있습니다(다음을 살펴보세요).허리띠쉽지만 약간의 버그가 있는 예입니다).

많은 Linux 쉘은오픈 소스소프트웨어(또는무료 소프트웨어), 따라서 소스 코드를 연구하여 그들이 호출하는지 알아보세요.수면(3)또는우리잠(3)-또는 적절하게도여론조사(2)등 ...- 또한 참조시간(7)그리고select_tut(2). 자세히 알아보기시스템콜(2)그리고 쉘에서 수행되는 작업을 생각해보세요(또는추적(1)또는ltrace(1)또는 디버거).

많은 Linux 배포판에는GNU 배쉬일반적인 대화형 쉘로. 하지만 설치할 수는 있습니다zsh또는물고기또는로그인 셸로(chsh(1)).

내 개인적인 선호는 zsh(누구의자동 완성데비안의 기능은 훌륭합니다).

좀 읽어보세요에 관한 교과서운영체제및/또는 직접 코딩하기유닉스 쉘연습으로 사용하거나 기존의 일부를 확장합니다(예: sleep내장 기능이 없는 경우 내장 기능을 추가하여).

관련 정보