Что лучший способ состоит в том, чтобы определить рабочий каталог для процесса UNIX с помощью 'PS'?

Zsh имеет sh режим эмуляции, который позволит ему выполнить POSIX sh код и некоторые расширения удара. Пока Вы не используете функции удара, которые не имеет zsh (с тем же синтаксисом), можно было получить тот же файл обе оболочки. Используйте emulate встроенный для помещения zsh в режим эмуляции; с -L опция, эмуляция локальна для функции включения (не, включение получило сценарий).

source_sh () {
  emulate -LR sh
  . "$@"
}

Для вещей как переменные среды можно использовать source_sh /etc/profile в /etc/zprofile и source_sh ~/.profile в ~/.zprofile, так как файлы профиля, вероятно, не используют определенные для удара функции.

Для вещей как псевдонимы и функциональные определения, так как файлы дистанционного управления оболочки, вероятно, будут содержать много вещей, которые не могут быть совместно использованы (подсказка, привязки клавиш, настройки завершения, …), использовать файл как ~/.sh_aliases это получено в ~/.bashrc и source_sh'd в ~/.zshrc.

6
23.01.2013, 18:01
3 ответа

Я не уверен, отвечает ли это на Ваш вопрос, но pwdx мог дать Вам текущий рабочий каталог любого процесса.

Как это:

pwdx <PID>

Вы могли также сделать то, что Ulrich Schwarz сказал и выполнил

ls -l /proc/PID/cwd
5
27.01.2020, 20:26
  • 1
    Обратите внимание что @Chirag, который попросили исходного каталога, не текущего рабочего каталога. –  andcoz 18.10.2011, 23:31

Возможно, Вы найдете его как цель /proc/(pid)/cwd. Это похоже на него, но я не нахожусь очень дома в /proc.

3
27.01.2020, 20:26
  • 1
    Обратите внимание что @Chirag, который попросили исходного каталога, не текущего рабочего каталога. –  andcoz 18.10.2011, 23:31

Если это не необходимость иметь все другие информация, Вы могли бы попробовать это:

ps -ef | grep runner | awk {'print$8'} | xargs which

Это захватит восьмой столбец ps -ef (это COMD столбец на моей машине OS X; Вы, возможно, должны изменить это), и прокрутите его which.

Это работает над моей машиной, как продемонстрировано здесь:

$ ps -ef | grep grep
mfc      25780 21222  0 11:54 pts/5    00:00:00 grep grep

$ ps -ef | grep grep | awk {'print$8'} 
grep

$ ps -ef | grep grep | awk {'print$8'} | xargs which
/bin/grep
0
27.01.2020, 20:26

Теги

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