우리는 2개의 Linux 서버를 보유하고 있습니다. 하나는 SLES 11 SP3이고 다른 하나는 SLES 12 SP2입니다.
Sles 11 sp3에서 $PID 2200에 대한 배치 스크립트(이름 "test.sh")를 시작하면 다음으로 이동할 수 있습니다.
/proc/2200/cmdline
당신은 다음과 같은 것을 보게 될 것입니다
/bin/shtest.sh
따라서 여기에서 스크립트 이름을 얻을 수 있습니다.
Sles 12 sp2에서 방금 본 것과 똑같은 작업을 수행하면
-bash
$PPID를 사용하여 상위 스크립트의 이름을 얻을 수 있도록 이름을 포함시키는 것이 좋을 것입니다.
그러나 이제 scipt 파일 이름은 더 이상 존재하지 않습니다.
이제 상위 스크립트의 이름을 얻는 다른 방법이 있습니까?
미리 감사드립니다.
편집: 새 서버(12 sp 2)에서 /proc/"id"에서 이름이 있는 유일한 위치는 "/proc/"id"/fd"입니다.
fstest:/proc/11248/fd # ls -l
total 0
lrwx------ 1 root root 64 Feb 9 15:52 0 -> /dev/pts/3
lrwx------ 1 root root 64 Feb 9 15:52 1 -> /dev/pts/3
lrwx------ 1 root root 64 Feb 9 15:52 2 -> /dev/pts/3
lr-x------ 1 root root 64 Feb 9 15:52 254 -> /batch/test1.sh
lrwx------ 1 root root 64 Feb 9 15:52 255 -> /dev/pts/3
그런데 어떻게 해야할지 모르겠습니다. "254"가 무엇입니까? 감사해요
답변1
나는 답을 찾았습니다:
"/proc/"id"/fd에는 파일 설명자가 있습니다(위 참조).
0, 1, 2는 항상 "in", "out", "err"입니다(순서대로 정렬하지 마세요).
254는 항상 스크립트에 연결되어 있는 것 같습니다.