Как изменить рабочий каталог при вызове оболочки с помощью скрипта? [дубликат]

Как предлагает @cas, ps может показать вам некоторую информацию. Добавление параметров может показать командную строку , что является шагом в правильном направлении. Для этого сценария:

#!/usr/bin/env bash
while true
do
date
sleep 10
done

предлагаемый ps -ww показывает следующие строки для этого процесса:

  9417 pts/5    00:00:00 bash
  9496 pts/5    00:00:00 sleep

Однако ps -fwwl -u $ USER показывает следующее:

0 S tom        9417   9416  0  80   0 - 29405 -      18:08 pts/5    00:00:00 bash ./foo
0 S tom        9419   9417  0  80   0 - 28111 -      18:08 pts/5    00:00:00 sleep 10

потому что Я выполнил ./ foo . Если бы я выполнил «foo» со своего пути, конечно, не было бы «./». В любом случае фактический выполняемый сценарий зависит от значения $ PATH , а также от текущего рабочего каталога (при запуске сценария). Для некоторых систем с procfs (таких как Linux) можно получить эту информацию:

Учитывая все это , существует достаточно информации (по крайней мере, для Linux), чтобы кто-то создал сценарий, который проанализировал бы вывод ps , чтобы найти сценарии, упомянутые с (или без) полными путями.

Как ни странно, я ожидал, что lsof предоставит информацию, потому что большинство оболочек действуют так, как будто у них есть открытый файловый дескриптор для сценария (но я не вижу этого при быстрой проверке). Таким образом, анализ ps и среды оболочки кажется подходящим способом для полного решения.

Дополнительная литература:

1
13.04.2017, 15:36
0 ответов

Теги

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