Они используются для запуска (инициализируют) систему и поднимают серверы. Как обычный пользователь Вам не придется волноваться о них. Если бы Вы хотите также оказаться Вами машина в, скажем, HTTP (сеть) сервер, необходимо было бы иметь дело с ним. Различные дистрибутивы делают это по-другому, как бы то ни было. У многих, по крайней мере, есть a service
управляйте, чтобы запустить и остановить их.
Я должен был заняться этой той же проблемой несколько недель назад. pgrep
и pkill
поддерживайте расширенные регулярные выражения, таким образом, это - простой вопрос получения права regexp.
Это - Ваш сценарий с regexp, который я использовал.
#!/bin/bash
ProcessName=$1
pID= pgrep -fl "^(/.*)?${ProcessName}\s"
echo $pID
Хотя с помощью pkill
(как предложенный Caleb), лучше.
pkill -fl "^(/.*)?${ProcessName}\s"
Вы, возможно, все еще должны настроить regexp для получения желаемых результатов для варианта использования и как программа выполняется.
Теперь, если будет на самом деле несколько процессов, работающих с тем именем, то они будут, конечно, уничтожены. Если Вы хотите избежать, чтобы можно было использовать -o
уничтожить только самый старый процесс соответствия или -n
уничтожить только новейшее. Если Вы хотите только один, но ни один самое старое или новейшее затем Вы, вероятно, не должны использовать p(kill|grep)
.
#!/bin/bash
ProcessName=$1
pID=`pgrep -fl $ProcessName`
echo "$pID" | grep -v "^$$"
pgrep
не должен передавать по каналу к grep
. Если Вы собираетесь использовать grep
Вы могли бы также использовать ps | grep
.
– bahamat
29.08.2012, 23:34
kill $(ps -ef | grep somedaemon | grep -v grep | awk '{print $2}')
. Дополнительные ветвления увеличивали начальную загрузку время путем запуска 5x количество необходимых процессов. pkill
и pgrep
были записаны так, Вы могли просто звонить pkill somedaemon
и значительно уменьшите, загружают времена.
– bahamat
30.08.2012, 21:01
при исключении #!/bin/bash затем, он не разветвит другой процесс для сценария, но Вы потеряете выбор того, с какой оболочкой он работает. удар является достаточно значением по умолчанию, хотя и те, которые являются smiler, должны смочь выполнить это.
не уверенный, если это избавится от второго идентификатора процесса все же.
Я понимаю, что это не завершено, но поздно, и я должен работать в, но это "должно" работать быстрым исправлением.
Не был бы с помощью
| grep -v $$
исключить Ваш процесс из справки списка?