줄을 자르지 않고 Solaris에서 전체 프로세스 목록을 생성하는 방법이 있습니까? ps
다음 매개변수를 사용하여 명령을 시도했습니다 .
-f는 전체 목록을 생성합니다. (아래 참조 전체 목록에서 각 열의 중요성 - 영국. )
-l은 긴 목록을 생성합니다. (아래를 참조하세요.)
따라서 이 두 가지 모두 내가 원하는 것을 수행하는 것처럼 보이지만 ps 매뉴얼 페이지에서 더 자세히 보면 다음과 같은 내용이 있습니다.
args 명령과 모든 인수는 다음과 같이 제공됩니다. 끈. 구현이 잘릴 수 있음 이 값은 필드 너비에 해당합니다. 구현 여부에 따라 다릅니다. 추가 잘림이 발생합니다. 이것은 문자열인지 여부가 지정되지 않음 매개변수의 버전을 나타냅니다. 명령에 전달될 때 목록 시작했을 때 또는 버전 매개변수가 수정되었을 수 있습니다. 앱을 통해. 응용 프로그램은 할 수 없습니다 수정이 가능한지 여부에 따라 다릅니다. 매개변수 목록을 수정하고 화는 ps의 출력에 반영됩니다. Solaris 구현 제한 사항 문자열은 80바이트입니다. 매개변수 목록의 버전은 그대로입니다. 시작 시 명령에 전달됩니다.
이는 기본적으로 출력이 잘리고 이에 대해 제가 할 수 있는 일이 없음을 의미합니다. 그래서 저는 여기 있습니다. 물론 다른 사람들도 이 문제를 겪었고 해결 방법이 있을 수도 있습니다. ps에서는 이 작업을 수행할 수 없으므로 이를 수행하려면 다른 도구를 사용해야 합니다. 정확합니까?
답변1
당신은 시도 할 수 있습니다
pargs <PID>
그러면 모든 매개변수 목록이 제공됩니다.
아니면 다른 ps를 사용하세요. 루트(또는 충분한 권한이 있는 사용자)로 실행하는 경우
/usr/ucb/ps auxww
모든 주장을 당신에게 줄 것입니다. SUNWscpu, "소스 호환성(Usr)"의 일부입니다.
답변2
커널은 명령줄 인수를 추적할 필요가 없습니다. 프로그램이 호출로 시작되면 커널은 매개변수를 프로세스 메모리에 복사해야 합니다( execve
C 프로그램에서처럼 사용할 수 있도록). argv
이후 커널은 초기 명령줄 인수를 저장하는 데 사용된 메모리를 삭제할 수 있습니다. 프로세스가 매개변수 복사본을 덮어쓸 수 있도록 허용합니다. 그러니 논란의 여지가 전혀 없을 수도 있다.
일부 UNIX 변형은 어떤 형태로든 매개변수 복사본을 보관합니다. Solaris /proc/$pid
. OpenSolaris 2009.06부터 매개변수의 유일한 추적은 입니다 . 매개변수는 공백으로 연결되며(따라서 와 를 /proc/$pid/psinfo
구분할 수 없음 ) 결과 문자열은 80바이트로 잘립니다. 이 필드는 열에 인쇄되는 내용 입니다 .foo "one" "two"
foo "one two"
/proc/$pid/psinfo
ps
args
그런데 -f
및 -l
옵션은 필드가 특정 너비로 잘리는지 여부가 아니라 인쇄되는 필드를 제어합니다.
답변3
ps -e
실행 중인 모든 프로세스의 목록을 제공합니다. 이 ps -elf
.
답변4
ps
사용하는 명령 에 따라 다음을 사용합니다.
ps -auxw