GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan PID induk dari proses yang diberikan di GNU/Linux dari baris perintah?

Baris perintah:

ps -o ppid= -p 1111

Fungsi:

ppid () { ps -p ${1:-$$} -o ppid=; }

Alias ​​(lebih disukai fungsi):

alias ppid='ps -o ppid= -p'

Skrip:

#!/bin/sh
pid=$1
if [ -z $pid ]
then
    read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=

Jika tidak ada PID yang diberikan ke fungsi atau skrip, mereka secara default menampilkan PPID dari proses saat ini.

Untuk menggunakan alias, PID harus disediakan.


Untuk mencetak id induk (PPID ) dari semua proses, gunakan perintah ini:

ps j

Untuk proses tunggal, cukup lewati PID, seperti:ps j 1234 .

Untuk mengekstrak nilai saja, filter keluaran dengan awk , seperti:

ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps

Untuk mencantumkan PID semua orang tua, gunakan pstree (pasang jika Anda tidak memilikinya):

$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)

Untuk mendapatkan PID induk dari proses saat ini, gunakan echo $$ .


Ini adalah salah satu hal yang saya pelajari, lupakan, pelajari kembali, ulangi. Tapi itu berguna. Bendera 's' perintah pstree menunjukkan pohon dengan daun di N:

pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks

Linux
  1. Cara menginstal perangkat lunak dari baris perintah Linux

  2. Linux – Bagaimana Cara Mengetahui Keluarga Arsitektur Intel Dari Baris Perintah?

  3. Cara mendapatkan PID dari proses anak bercabang di skrip Shell

  1. Cara Menghapus File dan Direktori di Linux dari Command Line

  2. Bagaimana cara memulai program linux GUI dari baris perintah, tetapi terpisah dari baris perintah?

  3. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?

  1. Bagaimana cara mendapatkan argumen baris perintah diteruskan ke proses yang sedang berjalan pada sistem unix/linux?

  2. Nama proses dari pidnya di linux

  3. Cara mendapatkan proses anak dari proses induk