Yanıtlar:
kullanım ps -o ppid=
ps -o ppid= 2072
iadeler 2061
, vs. ps -o ppid= -C foo
işlemin PPID'sini komut ile verir foo
. Ayrıca eski moda kullanabilirsiniz ps | grep
: ps -eo ppid,comm | grep '[f]oo'
.ps -f 2072
döner
UID PID PPID C STIME TTY DURUMU ZAMANI CMD izx 2072 2061 0 07:16? S 0:00 / usr / lib / pulseaudio / darbe / gconf-yardımcı
pstree
İlişkisidir: pstree -s -p 2072
:
init (1) ───pulseaudio (2061) ───gconf-yardımcı (2072)
ppid=
Pid'den sonraki ama boşluktan önce gerekli gibi görünüyor. İhmal edersem farklı sonuçlar elde ederim.
echo $PPID
Bu ana pid'den bir komuta ihtiyacınız olursa:
cat /proc/$PPID/comm
Tam komut satırına ihtiyacınız varsa (tüm seçeneklerle):
cat /proc/$PPID/cmdline
$PPID
kabuk tarafından tanımlanır, ana işlemin PID'sidir./proc/
, her bir işlemin PID’si ile bazı direkleriniz var. Daha sonra eğer öyleyse cat /proc/$PPID/comm
, PID'nin komut ismini yazarsınız.PPID
POSIX standardının bir parçası olarak tanımlanır, bu nedenle herhangi bir POSIX uyumlu kabuk bunu uygun şekilde ayarlamalıdır. Bkz pubs.opengroup.org/onlinepubs/9699919799/utilities/...
pstree
Komut adına göre kullanmaKullanarak pstree
, çocuk işlem adına göre arama yapabilir ve ebeveynler, büyükanne ve büyükbaba ve çocuk sürecinin herhangi bir çocuğuyla birlikte İşlem Kimliğini (PID) alabilirsiniz:
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
Bu durumda sleep
alt komut ve PID 'dir 8414
. Üst kimliği 841'dir ve denir display-auto-brightness
. Büyükbaba veya büyükanne sh
bir işlem kimliği olan bir kabuktur ( ) 839
. Büyük büyükbaba veya büyükanne cron
bir işlem kimliği ile 795
. Büyük-büyük-büyükbaba veya büyükanne de cron
bir işlem kimliği ile 763
.
sleep
İsim yerine İşlem Kimliği ile arama yapmak için kullanabilirsiniz:
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
sleep
İşlem kimliğinin olarak değiştiğine dikkat edin 14653
. Ebeveyn (PID 841) 1 dakika uyur, bir saniye kadar uyanır ve ardından sleep
yeni bir işlem kimliği alan yeni bir komut başlatır . Bu, sleep
aramanın işlem kimliğine göre aramaktan daha kolay olmasının bir başka nedenidir .
Bu kod şunlardan alınmıştır: Gün ışığına ve gün batımına göre ekran parlaklığını otomatik olarak ayarlayıp bu soruya uyarlanmıştır.
Önyükleme işlemine kadar iç içe geçmiş bir zinciri görmek için ad yerine PID'yi kullanın:
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
└─cron,763 -f
└─cron,795 -f
└─sh,839 -c /usr/local/bin/display-auto-brightness
└─display-auto-br,841 /usr/local/bin/display-auto-brightness
└─sleep,8541 60
Not: Başka bir dakika geçti ve uyku komutu yeni bir PID (8541) alıyor.
807
veya cron
ve aynı satır yeniden doğurulur, eğer ortaya çıkarsa daha fazla çocuk olur. Ancak soru, tüm çocukları değil ebeveynleri bulmaktı.
1
. PID 1'i öldürebileceğini sanmıyorum.
ps -efj
aynı için de kullanılabilir.
Örneğin,
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
ps -o args ...
sonuçları kullanmaktan ibarettir , ancak bunun biraz kokusu vardır.