Yanıtlar:
kullanım ps -o ppid=
ps -o ppid= 2072iadeler 2061, vs. ps -o ppid= -C fooişlemin PPID'sini komut ile verir foo. Ayrıca eski moda kullanabilirsiniz ps | grep: ps -eo ppid,comm | grep '[f]oo'.ps -f 2072dö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.PPIDPOSIX 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/...
pstreeKomut 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 sleepalt komut ve PID 'dir 8414. Üst kimliği 841'dir ve denir display-auto-brightness. Büyükbaba veya büyükanne shbir işlem kimliği olan bir kabuktur ( ) 839. Büyük büyükbaba veya büyükanne cronbir işlem kimliği ile 795. Büyük-büyük-büyükbaba veya büyükanne de cronbir 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 sleepyeni bir işlem kimliği alan yeni bir komut başlatır . Bu, sleeparamanı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.
807veya cronve 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.