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_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 $! -- $BASHPIDTrong 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
doneTuy 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 williamTô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?