Заставить скрипт unix вести себя так, как если бы он запускался из другой папки - PullRequest
1 голос
/ 03 июня 2011

Я использую планировщик для запуска сценария Unix, который запускает мое приложение. Сценарий находится в ПУТИ пользователя, используемого планировщиком. Следовательно, может быть запущен с y

Файлы журнала моего приложения создаются относительно места запуска сценария. К сожалению, планировщик не запускает сценарий из папки, на которую я надеялся, следовательно, файлы журнала не собираются исправлять папку.

Есть ли способ заставить скрипт работать и вести себя так, как он был запущен из указанной папки, например ./ScriptName.sh Working_Folder | Run_Folder

Примечание: я не могу изменить скрипт

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

если ваш планировщик запускает ваши задачи, используя оболочку (что, вероятно, делает), вы можете использовать { cd /log/dir ; script; } непосредственно в качестве команды.

если нет, вам нужно использовать скрипт-обертку, как указано @Gilles, но я бы сделал:

#!/bin/sh
cd /log/dir
exec /path/to/script "$@"

для экономии памяти. Дополнительный exec будет следить за тем, чтобы в памяти находился только интерпретатор сценариев, а не оба (sh и интерпретатор сценариев).

1 голос
/ 03 июня 2011

Если вы не можете изменить скрипт, вам нужно будет заставить планировщик запустить другую команду, а не скрипт напрямую. Например, заставьте планировщик запустить простой скрипт-обертку.

#!/bin/sh
cd /desired/directory/for/log/files
/path/to/script "$@"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...