답변:
명령 줄 :
ps -o ppid= -p 1111
기능:
ppid () { ps -p ${1:-$$} -o ppid=; }
별명 (기능이 바람직 함 ) :
alias ppid='ps -o ppid= -p'
스크립트:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
함수 나 스크립트에 PID가 제공되지 않으면 기본적으로 현재 프로세스의 PPID를 표시합니다.
별명을 사용하려면 PID를 제공해야합니다.
=
기호는 적어도 OS X 10.8.2에 필요하지 않습니다.
이것은 내가 배우고 잊고 다시 배우고 반복하는 것들 중 하나입니다. 그러나 유용합니다. pstree 명령의 's'플래그는 N에 잎이있는 나무를 보여줍니다.
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
부모 pid는 쉘 변수 PPID에 있으므로
echo $PPID
$PPID
하면 Google 이이 페이지에 대한 답변으로 제안한 문제를 해결했습니다.
PPID
모든 프로세스의 상위 ID ( ) 를 인쇄하려면 다음 명령을 사용하십시오.
ps j
단일 프로세스의 경우 다음과 같이 PID를 전달하십시오 ps j 1234
.
값만 추출하려면 awk
다음과 같이 출력을 필터링하십시오 .
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
모든 부모의 PID를 나열하려면 다음을 사용하십시오 pstree
(없는 경우 설치).
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
현재 프로세스의 상위 PID를 얻으려면을 사용하십시오 echo $$
.
pstree
내가 본 것 중에 가장 좋은 것입니다.
ps j
그것은 많은 배포판에서 사용할 수 쉽게 작성 가능하기 때문에 중대하다
/ proc / $ PID / status를 읽으십시오. 쉽게 스크립팅 할 수 있습니다 :
#! / bin / sh P = $ 1 [-z "$ P"]이면; 그때 P를 읽으십시오 fi 고양이 / proc / "$ P"/ status | grep PPid : | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
당신이 필요한 전부입니다. ( 유닉스 도구가하는 일은 매우 드if [ -z ]; then read
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
현재 프로세스를 시작한 부모의 명령을 확인하는 좀 더 복잡한 예제 comm =을 cmd =로 변경하여 전체 명령을 확인하십시오.
top
원하는 옵션으로 실행하십시오 -u username and -p PID
.
그리고 top
작동 하는 동안을 누르면 출력 f에 표시하려는 옵션 목록이 표시되고 top
표시된 매개 변수는 대문자로 표시되고 표시하거나 표시하지 않는 매개 변수는 소문자로 표시됩니다.
따라서 매개 변수 앞에 문자를 입력하면 활성화 또는 비활성화 할 수 있습니다. 부모 프로세스 ID의 경우 입력 b한 다음을 눌러 EnterPPID를 맨 위 출력에 표시합니다.
htop
당신이 PPID
열 을 구성 할 수 있다는 것을 이미 알고 있습니다 .
grep PPid status |cut -f2
처럼time(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; 더 빠른 것이 있는지 궁금하십니까?