2

Недавно у меня возникла проблема, когда Perl-скрипт потреблял ресурсы сервера. Я узнал, что это был Perl-скрипт с использованием "top". Но это не дало пути к сценарию. И не сделал ps . Кроме того, ps -ef показал, что процесс с этим pid - это /usr/bin/httpd (apache), поэтому, должно быть, это был apache, обслуживающий некоторую страницу perl.

Можно ли получить путь к запущенному в настоящий момент сценарию perl, если я знаю только PID процесса для процесса perl, выполняющего этот сценарий? Если так, то как?

Пояснение: мне не нужен путь к двоичному файлу perl, мне нужен путь к скрипту perl, который исполняет двоичный файл в данный момент.

2 ответа2

1

Посмотрите в /proc для PID процесса. В нем есть файл cmdline

Он содержит команду, которая использовалась для запуска скрипта.

например:

$ cat /proc/19433/cmdline
perl/path/to/myscript

На самом деле есть \000 (chr (0) / NULL) между "perl" и "/ path ...", но cat не показывает это.

1

Вы можете выполнить ps -p $p -o command , где вместо $ p вы используете PID процесса. Это дает полную командную строку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .