Один путь состоит в том, чтобы использовать cut
:
command | cut -c1-8
Это даст Вам первые 8 символов каждой строки вывода. С тех пор cut
часть POSIX, это, вероятно, будет на большинстве Нельдов.
Попробуйте это:
ls -l /proc/8505/exe
Или если Вы не хотите анализировать вывод ls
, просто сделайте:
readlink /proc/8505/exe
или
realpath /proc/8505/exe
При выполнении Соляриса путь немного отличается из Linux один предложенный:
$ for i in $(pgrep bash)
do
printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
577 /usr/bin/bash
11247 /usr/bin/bash
13921 /usr/bin/bash
13992 /tmp/bash
Если Вы хотите знать текущий рабочий каталог выполнения процессов, можно использовать:
pwdx $(pgrep xmms)
например:
$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp
Я запускаю коврик для мыши с оболочки:
mousepad &
[1] 24289
проверьте, куда это прибывает из:
which mousepad
/usr/bin/mousepad
запустите его с пути:
/usr/bin/mousepad &
взгляд через PS:
ps v -C mousepad
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
24289 pts/3 S 0:00 3 62 85441 10964 1.0 mousepad
24292 pts/3 S 0:00 0 62 85433 10864 1.0 /usr/bin/mousepad
Как мы видим, тот, вызванный без пути, отображен без пути и запущен с ПУТИ, и поэтому быть найденным
which mousepad
Простой как это, не так ли? Ожидайте! Что, если я запускаю коврик для мыши с меню? Ну, это могло бы быть указано с или не используя настройки PATH. Я попробовал. Нормальный запуск приводит к простому 'коврику для мыши' в ps v -C
. С тех пор ~ / мусорное ведро первая часть моего ПУТИ, я создаю макет там, и, вуаля, макет запускается с меню.
Но что, если Вы запускаете программу, которая удаляет себя? Который не найдет удаленную программу и сообщит о неправильной, если будет секунда в пути.
Таким образом, это - состояние состязания. Если Вы знаете, что Ваши программы не удаляют себя или не перемещены при исследовании их местоположения, ps v -C NAME
и which NAME
должен работать вполне прилично.
./someexecutable
в обоих?
– apoorv020
03.03.2011, 09:09
Идите вперед и удалите обоих файлы (без силы-f опция). Файл, который удален, является тем, который не работал!!
Системная блокировка исполняемого файла не позволит Вам удалять любой файл, который в настоящее время является объектом выполнения.
init
, которые всегда работают, обновлены? Вы не можете изменить рабочий исполняемый файл.
– Patrick
12.12.2013, 15:58