2013-07-16 6 views
0

иногда мне нужно следить за процессом, и я всегда нахожу bash-script, делающий pid=$1. Насколько я понимаю, он должен получить идентификатор процесса, который я отправил в первый экземпляр оболочки, который я создал, который запускает этот конкретный процесс, и я мог бы использовать его позже (например, чтобы убить его или использовать память или другое). pid=$0 должен получить текущий экземпляр (bash) и pid=$! последний. (Пожалуйста, поправьте если я ошибаюсь)Правильно получить идентификатор процесса

Проблема: каждый раз, когда мне нужно запустить pid=$1 команду, pid ничего не получает и echo $pid или echo ${pid} отпечатки и пустую строку, я всегда нужно фантазии способ сделать это с помощью pid=$! вместо этого, поскольку это единственное, что получает мой идентификатор процесса. Кто-нибудь знает, почему такое поведение моих терминалов? (Это происходит либо в Linux Mint или в Fedora)

+0

'$ 0' и' $ 1' получают позиционные параметры, подаваемые на скрипт (или функцию). Для того, чтобы те были PID, скрипту/функции нужно было бы передать PID в качестве аргументов. О, и '$ 0', вероятно, никогда не будет PID, потому что обычно это имя скрипта/функции - аргументы возбуждения начинаются с' $ 1' ... – twalberg

+0

@twalberg Работает ли он только в файле сценария? Я имею в виду, если я попытаюсь запустить его непосредственно на терминале, разве это не должно работать? – rafa

+0

Как правило, оболочка, запущенная в вашем терминале, вызывается без аргументов, поэтому '$ 1' будет пустым, а' $ 0' будет содержать только имя вашей оболочки. Возможно, вы использовали 'set', чтобы изменить это в какой-то момент, так что проверьте все, например. 'echo '$ 1" 'и т. д. – twalberg

ответ

4

$$ должен дать вам сценарий PID

$PPID должен дать вам абонент (родитель) Pid


Ответ на комментарий

sleep 100 & 
sleeppid=$! 
echo "PID=$sleeppid" 
+0

ok, так, например, если я запустил 'sleep 100 &', как я могу получить pid os? – rafa

+0

'$!' См. Ответ, например, – Eun

+1

использовать '$!' Для получения PID последнего начатого фонового процесса. – anishsane