bash - получить pid для сценария, используя имя файла сценария

Я только что начал использовать следующий сценарий Python Dotfiles, который является удобным инструментом, который автосвязывает файлы для Вас: https://pypi.python.org/pypi/dotfiles

10
23.10.2015, 15:41
4 ответа

Попробуйте pgrep -f running_script - параметр -f использует для сопоставления всю командную строку, а не только имя процесса

13
27.01.2020, 20:00
ps - ef | grep -v grep | grep <script_name> | awk '{print $2}'

Приведенная выше команда даст PID для имени_скрипта. Также вы можете заставить скрипт записать временный файл с его PID.

Добавьте строку внутри скрипта: echo $$>/tmp/script_pid.tmp

1
27.01.2020, 20:00

ps -o pid, args -C bash | awk '/ running_script / {print $ 1}'

Он использует ps для получения pid и args для всех процессов bash, а затем использует awk для печати pid (поле 1) соответствующего процесса.

Кстати, ps -o pid, args -C bash дает вам pid и имя запрашиваемого файла сценария - имя сценария находится в аргументах bash команда.

Если вы собираетесь использовать ps вместо pgrep , по крайней мере, используйте все его возможности, а не чрезвычайно уродливую ps ... | grep -v grep | grep | awk конструкция. Последний grep даже не нужен, поскольку awk может выполнять сопоставление с образцом. На самом деле, ни один из greps не нужен, так как awk все это может: ps ax | awk '! / awk / && / myprocessname / {print $ 1} '

4
27.01.2020, 20:00
#!/bin/bash

# pidofargs.sh
# get process id by first argument of a process
# using `ps -eo pid,args` and `read -a`

# sample use: pidofargs.sh python /usr/bin/youtube-dl

search_grep="$1" # first filter
search_arg1="$2" # second filter

# first filter
ps -eo pid,args | grep "$search_grep" | while read pid args
do
  read -a arg < <(echo "$args")

  # pid    = process id
  # arg[0] = executable file of process
  # arg[1] = first argument of process

  # second filter
  if [[ "${arg[1]}" == "$search_arg1" ]]
  then
    # success
    echo $pid
    break
  fi

done
0
23.04.2020, 11:58

Теги

Похожие вопросы