Tôi có hai kịch bản:
running_script
script_one
Tôi cần phải có được PID cho / bất kỳ trường hợp nào running_script
chạy dưới tên người dùng, và sau đó pkill
dừng running_script
quá 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_script
quá 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_script
quy trình.
running_script
chạ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_script
quy trình đang chạy. Ngoài ra, script_one
có thể hoặc không thể là một quá trình tách rời khỏi running_script
cha mẹ.
Đối với các mục đích của bài tập, script_one
chỉ 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_script
quá trình.
Có một tùy chọn trên ps
hoặ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_script
vì 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ì ps
lệ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
?