it-swarm-ko.tech

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

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

 -f 전체 목록을 생성합니다. (전체 목록-
에서 열의 
 의미에 대해서는 아래를 참조하십시오.) 
 -l 긴 목록을 생성합니다. (아래 참조) 

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

 
 args 모든 인수가 
 문자열 인 명령. 구현시이 값을 필드 너비로자를 수 있습니다 
. 추가 절단이 발생하는지 여부는 
 구현에 따라 다릅니다. 표현 된 문자열 
이 시작될 때 명령 
에 전달 된 인수 
 목록의 버전인지 또는 버전의 것인지 여부는 
로 지정되지 않습니다. 응용 프로그램에 의해 수정되었을 수있는 
 인수 
 응용 프로그램은 
 인수 목록을 수정할 수 있고 p. 
의 출력에 해당 수정 사항이 반영되도록 할 수 없습니다 
 Solaris 구현은 
 문자열을 80 바이트로; 문자열은 시작시 명령에 전달 된 
 버전의 
 버전입니다. 

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

57
gabe.

당신은 시도 할 수 있습니다

pargs <PID>

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

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

/usr/ucb/ps auxww

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

62
Marcel G

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

일부 유닉스 변형은 인수의 사본을 어떤 형태로 유지합니다. Solaris는 /proc/$pid. OpenSolaris 2009.06 현재, 인수의 유일한 흔적은 /proc/$pid/psinfo, 사이에 공백으로 연결되어 있으므로 foo "one" "two"foo "one two") 결과 문자열은 80 바이트로 잘립니다. 이 필드는 /proc/$pid/psinfops 열에 args가 인쇄하는 것입니다.

그건 그렇고, -f-l 옵션은 필드의 너비가 잘 릴지 여부가 아니라 인쇄 할 필드를 제어합니다.

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

2
ari

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

ps -auxw
0
Wes

prstat는 현재 실행중인 프로세스와 pid 및 CPU 사용률을 제공합니다.

0
user41052