잘린 선없이 솔라리스에서 전체 프로세스 목록을 생성하는 방법이 있습니까? 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 사용률과 함께 현재 실행중인 프로세스를 제공합니다.