URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8292
[ Назад ]

Исходное сообщение
"как узнать по полному пути к исполняемому файлу запущен ли о..."

Отправлено Sanders , 04-Июн-09 18:17 
известен полный путь к файлу и название файла.
нужно проверить исполняется ли этот файл в данный момент.
просто проверить:
ps -ef | grep <название файла>
нельзя, так как с таким же именем может быть запущен файл из другой директории.

Содержание

Сообщения в этом обсуждении
"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено allez , 04-Июн-09 18:29 
>известен полный путь к файлу и название файла.
>нужно проверить исполняется ли этот файл в данный момент.
>просто проверить:
>ps -ef | grep <название файла>
>нельзя, так как с таким же именем может быть запущен файл из
>другой директории.

Посмотрите на вывод команды "ls -l /proc/$PID/exe" и попробуйте сделать свои собственные выводы. ;-)
Но предупреждаю: данный способ сработает только в Линуксе. Поэтому, если Вы пользуетесь не
Линуксом (кстати, неплохо бы сообщать, какая ОС используется), то придется искать другие пути
решения проблемы.


"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено Sanders , 04-Июн-09 18:49 
>Посмотрите на вывод команды "ls -l /proc/$PID/exe" и попробуйте сделать свои собственные
>выводы. ;-)
>Но предупреждаю: данный способ сработает только в Линуксе. Поэтому, если Вы пользуетесь
>не
>Линуксом (кстати, неплохо бы сообщать, какая ОС используется), то придется искать другие
>пути
>решения проблемы.

к сожалению этот вариант не подходит:
1. я не знаю пид процесса.
   хорошо, по имени файла я могу получить список пидов связанных с этим именем файла, но
2. $ ls -l /proc/$PID/exe
   ls: cannot read symbolic link /proc/$PID/exe: Permission denied
   так как я не админ на сервере.

используется Debian.


"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено angra , 04-Июн-09 19:09 
>   так как я не админ на сервере.

Ну тогда тебе незачем знать лишнее о чужих процессах. А если очень надо, то договаривайся с админом.


"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено Sanders , 04-Июн-09 21:31 
>Ну тогда тебе незачем знать лишнее о чужих процессах. А если очень
>надо, то договаривайся с админом.

меня чужие процессы не интересуют... этот файл может быть запущен "мной" (под моей учеткой).


"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено angra , 04-Июн-09 21:55 
Ну тогда зачем ты проверял на чужих? Соответствующие симлинки для своих процессов спокойно читаются.
На всякий случай добавлю, что проход по дереву пидов в /proc будет эффективней и проще чем работа с ps.

"как узнать по полному пути к исполняемому файлу запущен ли о..."
Отправлено Sanders , 04-Июн-09 22:31 
>Ну тогда зачем ты проверял на чужих? Соответствующие симлинки для своих процессов
>спокойно читаются.
>На всякий случай добавлю, что проход по дереву пидов в /proc будет
>эффективней и проще чем работа с ps.

да, действительно, для своих процессов читаются... спасибо


"как узнать по полному пути"
Отправлено Andrey Mitrofanov , 05-Июн-09 10:20 
>>Посмотрите на вывод команды "ls -l /proc/$PID/exe" и попробуйте сделать свои собственные
>выводы. ;-)
>1. я не знаю пид процесса.
>   хорошо, по имени файла я могу получить список пидов
>связанных с этим именем файла, но
>2. $ ls -l /proc/$PID/exe
>   ls: cannot read symbolic link /proc/$PID/exe: Permission denied
>   так как я не админ на сервере.
>используется Debian.

$ echo /proc/*/exe |xargs -n1 readlink -f 2>/dev/null |sort |uniq -c |sort -k1,1nr

*+xargs решают пункт 1.
"2>/dev/null" не смотрит на проблему п.2.
sort+uniq+sort -- вариант-часть посмотреть, сделать выводы.

Но обычно проблему проверки, запущен ли процесс (сервис в частности) начинают решать в момент запуска: pшd-файл создают (кууууча примеров - в /etc/init.d/), или ещё http:/openforum/vsluhforumID9/7156.html как.


"как узнать по полному пути"
Отправлено Sanders , 05-Июн-09 12:54 
>$ echo /proc/*/exe |xargs -n1 readlink -f 2>/dev/null |sort |uniq -c |sort -k1,1nr
>
>*+xargs решают пункт 1.
>"2>/dev/null" не смотрит на проблему п.2.
>sort+uniq+sort -- вариант-часть посмотреть, сделать выводы.

спасибо!

>Но обычно проблему проверки, запущен ли процесс (сервис в частности) начинают решать
>в момент запуска: pid-файл создают (кууууча примеров - в /etc/init.d/), или
>ещё http:/openforum/vsluhforumID9/7156.html как.

я pid-файл создаю, но мне необходимо добавить в скрипты "защиту от дурака", на случай если кто запустил бинарник руками.


"как узнать по полному пути"
Отправлено Arpo , 10-Июн-09 07:59 
>[оверквотинг удален]
>>sort+uniq+sort -- вариант-часть посмотреть, сделать выводы.
>
>спасибо!
>
>>Но обычно проблему проверки, запущен ли процесс (сервис в частности) начинают решать
>>в момент запуска: pid-файл создают (кууууча примеров - в /etc/init.d/), или
>>ещё http:/openforum/vsluhforumID9/7156.html как.
>
>я pid-файл создаю, но мне необходимо добавить в скрипты "защиту от дурака",
>на случай если кто запустил бинарник руками.

Ну а если вы создаете PID файл, что мешает каждый раз при запуске проверять его? Если он есть то бинарник запущен, если нет то нет.  


"как узнать по полному пути"
Отправлено Sanders , 10-Июн-09 10:01 
>>я pid-файл создаю, но мне необходимо добавить в скрипты "защиту от дурака",
>>на случай если кто запустил бинарник руками.
>
>Ну а если вы создаете PID файл, что мешает каждый раз при
>запуске проверять его? Если он есть то бинарник запущен, если нет
>то нет.

Прочитайте внимательно первые 2 строки в этом посте. "Свой" запуск я разумеется по пиду проверяю.


"как узнать по полному пути"
Отправлено Arpo , 10-Июн-09 14:17 
>>>я pid-файл создаю, но мне необходимо добавить в скрипты "защиту от дурака",
>>>на случай если кто запустил бинарник руками.
>>
>>Ну а если вы создаете PID файл, что мешает каждый раз при
>>запуске проверять его? Если он есть то бинарник запущен, если нет
>>то нет.
>
>Прочитайте внимательно первые 2 строки в этом посте. "Свой" запуск я разумеется
>по пиду проверяю.

Я прочел все посты, и из последнего мне стало ясно, что вы запускаете скрипт и хотите сделать защиту от дураков... Если это ваш скрипт, как может его запустит кто то другой? Даже если и может, в этом скрипте можно проверять запущена ли другая копия ...
А вот если вы имелли ввиду, что из скрипта запускается ЧТО-ТО, и именно это что-то вы хотите проверить, то это совсем другой вопрос...

В любом случае, вам лучьше знать чего вы хотите, Удачи!!! )


"как узнать по полному пути"
Отправлено Sanders , 10-Июн-09 14:21 
>А вот если вы имелли ввиду, что из скрипта запускается ЧТО-ТО, и
>именно это что-то вы хотите проверить, то это совсем другой вопрос...

я имел ввиду, что файлик с пермишном х можно запустить ручками.