Điểm:0

Viết một tập lệnh lấy PID làm đối số và in PID của tất cả các GRANDcon và cháu của nó

lá cờ pr

Xin chào, tôi đang cố gắng viết một tập lệnh lấy đối số là PID và in tất cả cháu và chắt của PID, không phải trẻ em. ví dụ:

$ in chúng 3545
3546
3548
3666

Những gì tôi đã cố gắng làm:

ps --ppid $1

Nhưng nó không cho tôi ID. Ngoài ra, tôi đã đọc ở đâu đó về pstree, nhưng tôi không chắc lắm về cách sử dụng nó đúng cách để đạt được mục tiêu của mình. Bất kỳ hướng dẫn sẽ được nhiều appriciated. Cảm ơn !

Nitsan Asraf avatar
lá cờ pr
@bac0n cám ơn nhiều !
BeastOfCaerbannog avatar
lá cờ ca
@ 24601 OP muốn biết PID của các chương trình có thể chạy trên Ubuntu. Hơn nữa, họ đang yêu cầu một giải pháp liên quan đến Bash, dựa trên các thẻ họ đã sử dụng. Vì Bash là một phần quan trọng của Ubuntu nên các câu hỏi về Bash thuộc chủ đề và được hỗ trợ tốt ở đây. Vì vậy, câu hỏi hoàn toàn đúng chủ đề và không nên bị đóng lại. Đồng thời đọc [bài đăng meta](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic) này về các câu hỏi liên quan đến Bash.
24601 avatar
lá cờ in
@BeastOfCaerbannog OP nói rằng họ đang sử dụng ubuntu ở đâu. Bạn có thể hỏi các câu hỏi chung về tập lệnh trên [stackoverflow](https://meta.stackoverflow.com/questions/340130/where-to-ask-the-simplest-programming-questions)
Nitsan Asraf avatar
lá cờ pr
@ 24601 Tôi đang hỏi nó trong AskUbfox để bạn có thể cho rằng tôi đang sử dụng Ubuntu. Nếu không rõ, bạn có thể hỏi thay vì cho rằng nó không liên quan.
BeastOfCaerbannog avatar
lá cờ ca
@ 24601 Chà, việc không đề cập rõ ràng rằng họ sử dụng Ubuntu không phải là lý do đủ mạnh để coi một câu hỏi là lạc đề. Đúng là các câu hỏi Bash cũng có thể được hỏi trong SO, nhưng chúng cũng có thể được hỏi ở đây (và cả Unix & Linux và Super User nữa!). Chúng tôi thậm chí còn có một huy hiệu cho các câu hỏi Bash. Như bạn có thể thấy, nhận xét của bacon cung cấp một câu trả lời hay, hoàn toàn hợp lệ cho Ubuntu, chính xác như câu hỏi, ngay cả khi không đề cập rõ ràng đến Ubuntu.
24601 avatar
lá cờ in
@BeastOfCaerbannog Tôi không có ý định tranh luận về vấn đề này ngoại trừ việc nói rằng câu hỏi dành riêng cho hệ điều hành ở đâu thì tất nhiên đó là chủ đề nếu không các câu hỏi chung chung không dành riêng cho hệ điều hành Ubuntu có thể được xử lý khá thỏa đáng trong stackoverflow. Việc ai đó trả lời trong một nhận xét không phải là bằng chứng duy nhất rằng Q được nhập chính xác trong AU. Nếu bạn gặp vấn đề với điều đó thì hãy nêu nó trong meta - đó là nơi thích hợp để làm như vậy.
BeastOfCaerbannog avatar
lá cờ ca
@ 24601 Chà, bài đăng meta mà tôi đã liên kết trong nhận xét trước đây của mình, mà tôi cũng sẽ liên kết lại ở đây, làm rõ rằng các câu hỏi chung về tập lệnh, đặc biệt là tập lệnh Bash, không nằm ngoài chủ đề ở đây. Bài đăng meta: [Các câu hỏi về tập lệnh bash/shell có thuộc chủ đề không?](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic)
BeastOfCaerbannog avatar
lá cờ ca
@24601 Cũng có liên quan: [Làm cách nào để chúng tôi biết liệu một câu hỏi có thuộc về đây hay đúng hơn là tại stackoverflow/superuser?](https://meta.askubuntu.com/questions/47/how-do-we-tell-if-a - question-belongs-here-or-rather-at-stackoverflow-superuser) và [Có phải các câu hỏi “không chỉ dành riêng cho Ubuntu” trong chủ đề không?](https://meta.askubuntu.com/questions/14523 /are-not-only-ubuntu-specific-câu hỏi-về chủ đề)
24601 avatar
lá cờ in
@BeastOfCaerbannog Tôi chưa thay đổi quan điểm của mình dựa trên tài liệu tham khảo đó, xin lỗi.
terdon avatar
lá cờ cn
@24601 Phạm vi của trang web này là _mọi thứ có thể được thực hiện trên máy Ubuntu_. Đây là 100% về chủ đề. Các câu hỏi chung chung không dành riêng cho Ubuntu tạo thành phần lớn những gì chúng ta giải quyết ở đây. Có rất, rất ít thứ thực sự dành riêng cho Ubuntu. Ngoài ra, hầu hết, bao gồm cả câu hỏi này, sẽ không thuộc chủ đề về [so] mà chỉ giải quyết các câu hỏi về lập trình. Vui lòng dành thời gian để hiểu phạm vi của trang web trước khi đề xuất những điều lạc đề.
waltinator avatar
lá cờ it
Bạn đã đọc `man ps` chưa? Bạn lấy `--ppid` từ đâu? `ps -o PPID $1` để nhận cấp độ gốc của `$1`.
A. Herlas avatar
lá cờ bz
bạn đang tìm kiếm `pstree -p $pid`, thì bạn phải tìm ra cách trích xuất thông tin.
Điểm:1
lá cờ it

Đây là một thiết kế siêu ngôn ngữ (không được triển khai, không được kiểm tra, phải được coi là không hoạt động). Mã hóa thực tế được để lại như một bài tập cho học sinh.

trong một đánh đậpkịch bản (bắt đầu bằng #!/bin/bash):

xác định một ppid hàm lấy PID làm tham số và trả về cấp độ gốc của PID.

xác định một bọn trẻ lấy một PID làm tham số và trả về một danh sách được phân tách bằng dấu cách ("pid pid pid " lưu ý khoảng trắng ở cuối) của các PID có tham số PID làm cha. Kiểm tra TẤT CẢ các PID trên hệ thống, sử dụng ppid chức năng.

startPID=$1
danh sách con="$(con $startPID)"
gchildlist=""
ggchildlist=""
cho đứa trẻ trong $childlist ; làm
    gchildlist="$gchildlist $(trẻ em $kid)"
xong
cho đứa trẻ trong $gchildlist ; làm
    ggchildlist="$ggchildlist $(trẻ em $kid)"
xong
echo "Grand : $gchildlist"
tiếng vang "Ggrand: $ggchildlist"

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.