Puncte:0

Scrierea unui script care ia PID ca argument și imprimă PID-urile tuturor nepoților și nepoților săi

drapel pr

Bună, încerc să scriu un script care preia un argument al unui PID și imprimă toți nepoții și nepoții PID, nu copiii. exemplu:

$ imprimați-le 3545
3546
3548
3666

Ce am incercat sa fac:

ps --ppid $1

Dar nu-mi dă identitatea. De asemenea, am citit undeva despre pstree, dar nu sunt sigur cum să-l folosesc corect pentru a-mi atinge scopul. Orice îndrumare va fi foarte apreciată. Mulțumiri !

Nitsan Asraf avatar
drapel pr
@bac0n multumesc mult!
BeastOfCaerbannog avatar
drapel ca
@24601 OP vrea să cunoască PID-urile programelor care sunt probabil rulate pe Ubuntu. În plus, ei solicită o soluție legată de Bash, judecând după etichetele pe care le-au folosit. Deoarece Bash este o parte importantă a Ubuntu, întrebările Bash sunt la subiect și sunt bine susținute aici. Deci întrebarea este perfect la subiect și nu ar trebui să fie închisă. Citiți și acest [meta post](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic) despre întrebările legate de Bash.
24601 avatar
drapel in
@BeastOfCaerbannog unde spune OP că folosesc ubuntu. Întrebări generice despre scripting pot fi puse pe[stackoverflow](https://meta.stackoverflow.com/questions/340130/where-to-ask-the-simplest-programming-questions)
Nitsan Asraf avatar
drapel pr
@24601 Ei bine, îl întreb în AskUbuntu, așa că puteți presupune că folosesc Ubuntu. Dacă nu sunteți sigur, puteți întreba în loc să presupuneți că nu are legătură.
BeastOfCaerbannog avatar
drapel ca
@24601 Ei bine, a nu menționa în mod explicit că folosesc Ubuntu nu este un motiv suficient de puternic pentru a considera o întrebare în afara subiectului. Este adevărat că întrebările Bash pot fi puse și în SO, dar pot fi puse și aici (și Unix & Linux și Super User!). Avem chiar și o insignă pentru întrebările Bash. După cum puteți vedea, comentariul lui Bacon oferă un răspuns bun, perfect valabil pentru Ubuntu, exact ca întrebarea, chiar și fără a menționa în mod explicit Ubuntu.
24601 avatar
drapel in
@BeastOfCaerbannog Nu intenționez să argumentez acest lucru decât pentru a spune că, acolo unde întrebarea este specifică sistemului de operare, atunci, desigur, este la subiect, altfel întrebările generice care nu sunt specifice sistemului de operare Ubuntu pot fi tratate destul de adecvat în stackoverflow. Faptul că cineva răspunde într-un comentariu nu este doar dovada că Q este introdus corect în AU. Dacă aveți o problemă cu asta, ridicați-o în meta - care este locul corect pentru a face acest lucru.
BeastOfCaerbannog avatar
drapel ca
@24601 Ei bine, meta postarea pe care am legat-o în comentariul meu anterior, pe care o voi face din nou aici, clarifică faptul că întrebările generale de scripting, în special Bash-scripting, nu sunt în afara subiectului aici. Meta post: [Sunt întrebările de scripting bash/shell pe subiect?](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic)
BeastOfCaerbannog avatar
drapel ca
@24601 De asemenea, relevant: [Cum ne dăm seama dacă o întrebare aparține aici, sau mai degrabă la stackoverflow/superuser?](https://meta.askubuntu.com/questions/47/how-do-we-tell-if-a -question-belongs-here-or-rather-at-stackoverflow-superuser) și [Are ânu numai Ubuntu-specificâ întrebări la subiect?](https://meta.askubuntu.com/questions/14523 /are-nu-doar-ubuntu-specific-questions-on-topic)
24601 avatar
drapel in
@BeastOfCaerbannog Nu mi-am schimbat punctul de vedere pe baza acelei referințe, îmi pare rău.
terdon avatar
drapel cn
@24601 Scopul acestui site este _orice se poate face pe o mașină Ubuntu_. Acesta este 100% pe subiect. Întrebările generice care nu sunt specifice Ubuntu formează marea majoritate a ceea ce ne ocupăm aici. Există foarte, foarte puține lucruri care sunt de fapt specifice Ubuntu. De asemenea, majoritatea, inclusiv această întrebare, nu ar fi la subiectul [so] care se ocupă doar de întrebări de programare. Vă rugăm să acordați timp pentru a înțelege domeniul de aplicare al site-ului înainte de a sugera că lucrurile sunt în afara subiectului.
waltinator avatar
drapel it
Ai citit `man ps`? De unde ai luat `--ppid`? `ps -o PPID $1` pentru a obține părintele lui `$1`.
A. Herlas avatar
drapel bz
căutați `pstree -p $pid`, atunci trebuie să vă dați seama cum să extrageți informațiile.
Puncte:1
drapel it

Iată un design meta-limbaj (neimplementat, netestat, trebuie presupus că nu funcționează). Codarea reală este lăsată ca un exercițiu pentru elev.

Într-o bashscenariu (începând cu #!/bin/bash):

Definiți a pipid funcția luând un PID ca parametru și returnând părintele PID-ului.

Definiți a copii funcție luând un PID ca parametru și returnând o listă separată prin spațiu ("pid pid pid " notați spațiul de urmă) al PID-urilor care au parametrul PID ca părinte. Verificați TOATE PID-urile de pe sistem, folosind pipid funcţie.

startPID=$1
childlist="$(copii $startPID)"
gchildlist=""
ggchildlist=""
pentru copil în $childlist ; do
    gchildlist="$gchildlist $(copii $copil)"
Terminat
pentru copil în $gchildlist ; do
    ggchildlist="$ggchildlist $(copii $copil)"
Terminat
echo „Grand : $gchildlist”
echo „Ggrand: $ggchildlist”

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.