잘린 선없이 솔라리스에서 전체 프로세스 목록을 생성하는 방법이 있습니까? 다음 인수를 사용하여 ps
명령을 시도했습니다.
-f 전체 목록을 생성합니다. (전체 목록- 에서 열의 의미에 대해서는 아래를 참조하십시오.)
-l 긴 목록을 생성합니다. (아래 참조)
그래서 그 둘 다 내가 원하는 것을하는 것처럼 보이지만 ps 매뉴얼 페이지에서 더 아래로 내려갑니다.
args 모든 인수가 문자열 인 명령. 구현시이 값을 필드 너비로자를 수 있습니다 . 추가 절단이 발생하는지 여부는 구현에 따라 다릅니다. 표현 된 문자열 이 시작될 때 명령 에 전달 된 인수 목록의 버전인지 또는 버전의 것인지 여부는 로 지정되지 않습니다. 응용 프로그램에 의해 수정되었을 수있는 인수 응용 프로그램은 인수 목록을 수정할 수 있고 p. 의 출력에 해당 수정 사항이 반영되도록 할 수 없습니다 Solaris 구현은 문자열을 80 바이트로; 문자열은 시작시 명령에 전달 된 버전의 버전입니다.
기본적으로 출력이 잘릴 것이고 내가 할 수있는 일은 없습니다. 그래서 여기옵니다. 분명히 다른 사람들 이이 문제에 부딪 쳤으며 어쩌면 그 문제를 해결할 수도 있습니다. 나는 ps가 그것을 할 수 없다고 추측하고 있으므로 이것을하기 위해 다른 도구를 사용해야합니다. 정확합니까?
당신은 시도 할 수 있습니다
pargs <PID>
이것은 당신에게 모든 논쟁의 목록을 제공합니다
또는 다른 ps를 사용하십시오. 루트로 실행되는 경우 (또는 해당 사안에 대한 충분한 권한이있는 사용자)
/usr/ucb/ps auxww
당신에게 모든 논쟁을 줄 것입니다. SUNWscpu의 일부인 "소스 호환성, (Usr)"
커널은 명령 행 인수를 추적 할 필요가 없습니다. 프로그램이 execve
호출을 통해 시작되면 커널은 인수를 프로세스 메모리에 복사해야합니다 (예를 들어, C 프로그램에서 argv
로 사용 가능하도록). 그 후 커널은 초기 명령 행 인수를 저장하는 데 사용 된 메모리를 버릴 수 있습니다. 프로세스는 인수 사본을 겹쳐 쓸 수 있습니다. 따라서 논증의 흔적이 없을 수 있습니다.
일부 유닉스 변형은 인수의 사본을 어떤 형태로 유지합니다. Solaris는 /proc/$pid
. OpenSolaris 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 사용률을 제공합니다.