Как добраться *, отклоняют имя файла процесса

Плюс, как Вы определяете, который является где для Вашего пользователя:

C:\>set HOME
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\kuba

C:\>set USERPROFILE
USERPROFILE=C:\Documents and Settings\kuba
1
задан 4 December 2009 в 00:16
6 ответов

Следующее выполнение от оболочки даст Вам команду, ее полный путь и ее аргументы вызова все в последнем столбце для всех запускающих программ:

ps -eF

Это - синтаксис Unix, так как Вы не были конкретны. Существует также GNU и синтаксисы BSD, доступные в Linux. man ps узнавать больше.

2
ответ дан 3 December 2019 в 16:23

Обратите внимание, что все вышеупомянутые команды будут только работать часть времени. Например, здесь вывод "PS" показывает путь к программе, но при попытке получить доступ к тому пути, Вы находите, что ничто не там:

  $ ./myprogram &
  $ rm myprogram
  $ ps -fe | grep myprogram
  lars     27294 29529  0 20:39 pts/1    00:00:00 ./myprogram
  $ ls myprogram
  ls: myprogram: No such file or directory

На самом деле значение, отображенное PS, полностью до независимо от того, что код запустил программу. Например:

$ python -c "import os; os.execl('./myprogram', '/usr/sbin/sendmail')" &
myprogram: i am: 27914
$ ps -f -p 27914
UID        PID  PPID  C STIME TTY          TIME CMD
lars     27914 29529  0 20:44 pts/1    00:00:00 /usr/sbin/sendmail

Так в основном Вы не можете полагаться на вывод PS. Вы смогли полагаться /proc/PID/exe, например:

  $ ls -l /proc/27914/exe
  lrwxrwxrwx 1 lars lars 0 Dec  3 20:46 /proc/27914/exe -> /home/lars/tmp/myprogram

Но даже в этом случае файл больше не может существовать.

4
ответ дан 3 December 2019 в 16:23
  • 1
    larsks: +1 Хорошая информация! Добро пожаловать в serverfault, надейтесь видеть больше своих ответов! –  Kyle Brandt 4 December 2009 в 04:14

Как насчет чего-то вроде этого.

lsof-p pid | grep 'txt'

человек lsof

-p s     This  option excludes or selects the listing of files for 
         the processes whose optional process IDentification (PID) 
         numbers are in the comma-separated set
...
FD       is the File Descriptor number of the file or:
         txt  program text (code and data);
3
ответ дан 3 December 2019 в 16:23

В целом при поиске этого от оболочки можно использовать ps.

0
ответ дан 3 December 2019 в 16:23

если Ваши программы находятся глубоко в/usr/local/program/bin дереве файловой системы, возможно на ограниченном терминале не видеть полный путь и программу.

можно использовать:

ps -auxww

видеть полную неограниченную командную строку, которая принадлежит всем процессам.

Из страницы справочника PS:

w               Wide output. Use this option twice for unlimited width.
0
ответ дан 3 December 2019 в 16:23

На Linux это очень просто:

$ cat /proc/4670/cmdline
kdeinit4: plasma-desktop [kdeinit]

Ничего не анализируйте, пока Вы не уверены, что нет никакого другого пути.

Удачи! :)

0
ответ дан 3 December 2019 в 16:23

Теги

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