ls -l /proc/17301504
나는 명령에 대한 전체 경로를 제공하는 exe 중 어느 것도 시도하지 않았습니다 . Linux처럼 Aix 5 이상에서 명령의 전체 경로를 얻을 수 있는 방법이 있습니까?
/proc/17301504/object
명령과 동일한 체크섬을 갖지만 전체 경로를 제공하지 않는 .out이 있습니다.
답변1
파일 /proc
시스템은 본질적으로 운영 체제 간에 이식 가능하지 않습니다. 일부 Unices는 전혀 존재하지 않습니다.
AIX의 파일 시스템 레코드는 /proc
다음과 같습니다.https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.files/proc.htm
a.out
하위 디렉터리 의 파일에 대해서는 object
다음과 같이 말합니다.
[...] 이름은
a.out
실행 중인 프로세스의 텍스트와 관련된 실행 파일의 동의어로 디렉터리에 표시됩니다.이
object
디렉토리를 사용하면 제어 프로세스는 프로세스가 먼저 이러한 파일에 대한 특정 경로 이름을 얻지 않고도 개체 파일과 공유 라이브러리(심볼 테이블 포함)에 액세스할 수 있습니다.
이는 a.out
해당 구조 내의 파일에 액세스하는 것이 원하는 작업과 거의 반대임을 의미합니다. 이를 통해 사용자 프로그램은 프로세스의 전체 경로를 모르더라도 프로세스의 실행 파일에 액세스할 수 있습니다.
AIX에는 실행 파일의 기본 이름을 포함하는 구조도 있지만 /proc
다시 말하지만 그것은 여러분이 관심을 가질 만한 것이 아닙니다.
프로세스는 자신의 0번째 명령줄 인수( 에 표시된 프로세스 이름 ps
) 를 설정할 수 있으므로 ps
전체 경로를 사용하여 실행된 경우에도 using은 실행 중인 실행 파일의 절대 경로를 찾는 데 신뢰할 수 있는 솔루션이 아닙니다.
너 뭐야할 수 있다do는 inode로 실행 파일을 찾습니다.
이를 수행하는 방법의 예는 현재 질문에 대한 답변에 설명되어 있습니다.AIX 5 이상에서 PID로 실행 파일 경로를 식별하는 방법".
이 정보를 얻기 위해 쿼리해야 하는 이유를 스스로에게 물어보는 것이 좋습니다.달리기스크립트나 프로그램을 연구하면 어떤 외부 유틸리티를 호출하는지 명확해지는 경우가 많기 때문입니다.
답변2
istat
inode 및 주/부 번호를 얻으려면 다음 명령을 사용하십시오 /proc/<pid>/object/a.out
.
$ istat a.out
Inode 4694 on device 10/5 File
Protection: r-xr-xr-- Set UID
Owner: 0(root) Group: 0(system)
Link count: 1 Length 82411 bytes
Last updated: Fri May 4 13:58:53 PDT 2018
Last modified: Wed Nov 29 10:40:56 PST 2017
Last accessed: Wed Sep 5 14:51:07 PDT 2018
메이저/마이너 번호에서 파일 시스템 이름 가져오기
$ ls -l /dev/* | grep 10, | grep ' 5 '
brw-rw---- 1 root system 10, 5 Jul 03 2017 /dev/hd2
crw-rw---- 1 root system 10, 5 Jul 03 2017 /dev/rhd2
$ df /dev/hd2
Filesystem 512-blocks Free %Used Iused %Iused Mounted on
/dev/hd2 10944512 2220824 80% 41861 4% /usr
inode에서 파일 이름 가져오기
$ find /usr -inum 4694 -exec /bin/ls -l {} \;
-r-sr-xr-- 1 root system 82411 Nov 29 2017 /usr/sbin/inetd