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


57

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

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

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

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

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


당신은 ps명령 에 대해 이야기하고 있습니까? 그렇다면 질문을 더 명확하게 업데이트하십시오.
phunehehe

예, 죄송합니다. 초기 땜질은 ps 명령으로 이루어졌습니다. 질문을 더 명확하게했습니다.
개브.

답변:


63

당신은 시도 할 수 있습니다

pargs <PID>

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

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

/usr/ucb/ps auxww

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


pargs명령 행 인수 (및 선택적으로 환경)의 처리 중 사본을 표시합니다. 알다시피 감사합니다!
Gilles

1
이 전체 / usr / ucb 디렉토리는 나에게 새롭다. 나는 그것을 좋아한다!
개브.

2
Solaris 11에서 대시가없는 옵션 (예 : "/ usr / bin / ps auxwww")을 사용하면 UCB 스타일 옵션으로 취급되며 루트로 실행하지 않더라도 출력에 긴 줄이 추가로 표시됩니다. 이것은 잘 알려지지 않았습니다. 또한보십시오 : superuser.com/questions/148271/ps-s-s-solaris
Chris Quenelle 4

14

커널은 명령 행 인수를 추적 할 필요가 없습니다. 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옵션은 필드가 약간 너비로 잘리는 지 여부가 아니라 인쇄 할 필드를 제어합니다.


이것은 또한 유익한 정보였습니다. pargs 명령이 내 요구를 더 잘 충족 시켰기 때문에 이것이 내가 대답 한 유일한 이유입니다.
개브.

6
따라서 우리는 다시 한 번 2013 년에 여기에 앉아 1970 년대에 80 문자 터미널 만 가지고 있었으며 "일부"프로그램은 아직 인생이 이동했다는 사실을 이해하지 못했기 때문에 문자열을 80 바이트로 자릅니다. 그리고 우리는 그것을 "호환성"으로 칭찬합니다! 우리는 스스로 부끄러워해야합니다 ...
Manjabes

1
트윗 담아 가기 솔라리스를 계속 사용하기로 선택한 사람들은 시스템이 구식 방식으로 일하는 것에 대해 불평해서는 안됩니다. ;-) 솔라리스는 의도적으로 변경이 느리고 특정 동작을 기대하는 오래된 프로그램과 역 호환됩니다. 유틸리티 프로그램에서 더 긴 PS 목록과 더 멋진 기능을 가진 OS를 원한다면 Linux를 대신 사용할 수 있습니다.
JohnGH

2

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


2
심지어 사용 -l 인수는 여전히 명령 줄 정보를 자릅니다
라스 Nordin에게

1
질문에 대한 답변이 아닙니다.
Konrad Gajewski

0

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

ps -auxw

1
auxw 인수를 사용하는 Solaris의 ps 버전에는 선행 '-'가 필요하지 않습니다. Solaris가 아닌 경우 답변과 관련이 없습니다.
JohnGH

0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.