Tôi có hai kịch bản:
running_scriptscript_one
Tôi cần phải có được PID cho / bất kỳ trường hợp nào running_scriptchạy dưới tên người dùng, và sau đó pkilldừng running_scriptquá trình con gái.
Chúng tôi mong đợi một cái gì đó như:
ps -fu will | grep running_script
để tìm running_scriptquá trình. Tuy nhiên, việc kiểm tra PID dựa vào đầu ra lệnh ps cho thấy cmd là: "bin / bash" cho running_scriptquy trình.
running_scriptchạy như một quá trình tách rời ( &toán tử) bắt đầu script_one. Tôi in các PID-s khi bắt đầu để so sánh với psđầu ra của lệnh.
running_script &
echo $! -- $BASHPID
Trong trường hợp sử dụng thực tế, chúng tôi sẽ không có PID cho một số running_scriptquy trình đang chạy. Ngoài ra, script_onecó thể hoặc không thể là một quá trình tách rời khỏi running_scriptcha mẹ.
Đối với các mục đích của bài tập, script_onechỉ cần thực hiện các vòng lặp.
while [ true ]
do
echo " $0 - 35sec ..."
sleep 35
done
Tuy nhiên đó chỉ là ví dụ. Yêu cầu là để có được PID cho cha mẹ, running_scriptquá trình.
Có một tùy chọn trên pshoặc một lệnh khác có thể cho tôi tên của tệp tập lệnh và PID không? Hoặc một phương pháp để đặt tên có thể được tìm kiếm?
Trong trường hợp sử dụng cuối cùng, có thể có một số trường hợp running_scriptvì vậy chọn chúng theo tên có vẻ là lựa chọn tốt nhất cho đến nay.
thí dụ
Tôi nghĩ rằng nó có thể giúp hiển thị những gì pslệnh hiển thị, vì hầu hết các phản hồi dường như nghĩ rằng nó sẽ hoạt động. Tôi đã chạy ví dụ này chỉ một lúc trước.
$ ./running_script &
$ echo $! - $BASHPID
9047 - 3261
$ ps -ef | grep will
UID PID PPID C STIME TTY TIME CMD
will 8862 2823 0 22:48 ? 00:00:01 gnome-terminal
will 8868 8862 0 22:48 ? 00:00:00 gnome-pty-helper
will 8869 8862 0 22:48 pts/4 00:00:00 bash
* will 9047 3261 0 22:55 pts/2 00:00:00 /bin/bash
will 9049 9047 0 22:55 pts/2 00:00:00 /bin/bash
will 9059 2886 0 22:56 pts/0 00:00:00 man pgrep
will 9070 9059 0 22:56 pts/0 00:00:00 pager -s
will 10228 9049 0 23:31 pts/2 00:00:00 sleep 35
will 10232 8869 0 23:31 pts/4 00:00:00 ps -ef
will 10233 8869 0 23:31 pts/4 00:00:00 grep --colour=auto william
Tôi đã đánh dấu PID # 9047, chỉ hiển thị đơn giản: - sẽ 9047 3261 0 22:55 pts / 2 00:00:00 / bin / bash
Có một cái gì đó giống như một thuộc tính " jobname " mà tôi có thể thiết lập trên linux không?
running_scriptđược nhìn từ dòng lệnh / terminal.
ps --version-> "Procps-ng phiên bản 3.3.9"
script1?