Jawaban:
Garis komando:
ps -o ppid= -p 1111
Fungsi:
ppid () { ps -p ${1:-$$} -o ppid=; }
Alias ( lebih disukai fungsi ):
alias ppid='ps -o ppid= -p'
Naskah:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Jika tidak ada PID yang disediakan untuk fungsi atau skrip, mereka default untuk menunjukkan PPID dari proses saat ini.
Untuk menggunakan alias, PID harus disediakan.
=
tanda tidak diperlukan, setidaknya pada OS X 10.8.2.
Ini adalah salah satu hal yang saya pelajari, lupakan, pelajari kembali, ulangi. Tapi ini berguna. Bendera perintah pstree 's' menunjukkan pohon dengan daun di N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Pid Induk dalam variabel shell PPID, jadi
echo $PPID
$PPID
tidak hanya menyelesaikan masalah yang saya miliki di mana Google menyarankan halaman ini sebagai jawaban.
Untuk mencetak id induk ( PPID
) dari semua proses, gunakan perintah ini:
ps j
Untuk proses tunggal, hanya lulus PID, seperti: ps j 1234
.
Untuk mengekstrak hanya nilai, filter keluaran oleh awk
, seperti:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Untuk daftar PID dari semua orang tua, gunakan pstree
(instal 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 $$
.
pstree
adalah yang terbaik yang pernah saya lihat di sini.
ps j
hebat karena tersedia di banyak distro dan mudah dikomposasikan
Baca / proc / $ PID / status. Dapat dengan mudah dituliskan:
#! / bin / sh P = $ 1 jika [-z "$ P"]; kemudian baca P. fi cat / proc / "$ P" / status | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
itu yang kamu butuhkan. (Sangat jarang alat Unix melakukan if [ -z ]; then read
hal itu.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Contoh yang sedikit lebih kompleks yang memeriksa perintah orang tua yang memulai proses saat ini. Ubah comm = ke cmd = untuk melihat perintah penuh
Ini adalah solusi cepat yang juga bisa digunakan:
ps $$
Jalankan top
dengan opsi apa pun yang Anda inginkan -u username and -p PID
.
Dan saat top
sedang bekerja tekan f, itu menunjukkan daftar opsi yang ingin Anda tampilkan dalam top
output, dan parameter yang ditampilkan akan ditampilkan dalam huruf kapital dan parameter yang menampilkan atau tidak akan ditampilkan dalam huruf kecil.
Jadi dengan memasukkan huruf sebelum parameter Anda dapat mengaktifkan atau menonaktifkannya. Untuk ID proses induk Anda harus memasukkan bdan kemudian tekan Enter, itu akan menampilkan PPID di output atas.
htop
Anda dapat mengkonfigurasi PPID
kolom.
grep PPid status |cut -f2
seperti ditime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; bertanya-tanya apakah ada sesuatu yang lebih cepat?