절단 선없이 솔라리스에서 전체 프로세스 목록을 얻으려면 어떻게해야합니까?

잘린 선없이 솔라리스에서 전체 프로세스 목록을 생성하는 방법이 있습니까? ps다음 인수를 사용 하여 명령을 시도했습니다 .

  -f 전체 목록을 생성합니다. (아래 참조
                      전체 목록에서 열의 중요성
                      노래)
  -l 긴 목록을 생성합니다. (아래 참조)

그래서 그 둘 다 내가 원하는 것을하는 것처럼 보이지만 ps 매뉴얼 페이지에서 더 아래로 내려갑니다.

 args 모든 인수를 a로 사용하는 명령
                         끈. 구현이 잘릴 수 있습니다
                         이 값을 필드 너비로 그것은
                         구현 여부에 따라
                         추가 잘림이 발생합니다. 그것은
                         지정되지 않은 문자열인지
                         표시는 인수의 버전입니다
                         명령에 전달 된대로 나열
                         시작했을 때 또는
                         수정되었을 수있는 인수
                         응용 프로그램에 의해. 신청은 할 수 없습니다
                         그들의 수정에 의존
                         인수 목록과 그 수정을 갖는
                         ps의 출력에 반영됩니다.
                         Solaris 구현은
                         문자열을 80 바이트로; 문자열은
                         인수 목록의 버전
                         시작될 때 명령에 전달되었습니다.

기본적으로 출력이 잘릴 것이고 내가 할 수있는 일은 없습니다. 그래서 여기옵니다. 분명히 다른 사람들 이이 문제에 부딪 쳤으며 아마도 그 문제를 해결할 수도 있습니다. 나는 ps가 그것을 할 수 없다고 추측하고 있으므로 이것을하기 위해 다른 도구를 사용해야합니다. 정확합니까?



답변

당신은 시도 할 수 있습니다

pargs <PID>

이것은 당신에게 모든 논쟁의 목록을 제공합니다

또는 다른 ps를 사용하십시오. 루트로 실행되는 경우 (또는 해당 사안에 대한 충분한 권한이있는 사용자)

/usr/ucb/ps auxww

당신에게 모든 논쟁을 줄 것입니다. SUNWscpu의 일부인 “소스 호환성, (Usr)”


답변

커널은 명령 행 인수를 추적 할 필요가 없습니다. execve호출을 통해 프로그램이 시작 되면 커널은 인수를 프로세스 메모리에 복사해야합니다 ( argv예를 들어, C 프로그램에서와 같이 사용 가능하도록). 그 후 커널은 초기 명령 행 인수를 저장하는 데 사용 된 메모리를 버릴 수 있습니다. 프로세스는 인수 사본을 겹쳐 쓸 수 있습니다. 따라서 논증의 흔적이 없을 수 있습니다.

일부 유닉스 변형은 인수의 사본을 어떤 형태로 유지합니다. Solaris는의 일부 데이터를 노출합니다 /proc/$pid. 오픈 솔라리스 2009.06로, 인수의 유일한 추적에 /proc/$pid/psinfo그들이 (그래서 당신은 구별 할 수없는 사이에 공백와 연결되는 경우, foo "one" "two"그리고 foo "one two") 그 결과 문자열이 80 바이트로 잘립니다. 이 필드에서는 /proc/$pid/psinfo무엇 ps에 인쇄 args열입니다.

그런데 -f-l옵션은 필드가 약간 너비로 잘리는 지 여부가 아니라 인쇄 할 필드를 제어합니다.


답변

ps -e실행중인 모든 프로세스 목록을 제공합니다. 또한이 ps -elf있습니다.


답변

어떤 ps명령을 사용 하느냐에 따라

ps -auxw


답변

prstat pid 및 CPU 사용률과 함께 현재 실행중인 프로세스를 제공합니다.


답변