Повлияет ли загрузка измененной версии сценария KSH на процессы, в которых в данный момент выполняется сценарий?
Допустим, у меня есть сценарий KSH my_script.ksh
который выполняет сложные операции, включая, но не ограничиваясь, вызов SQLPLUS для манипулирования большим количеством (миллионами) записей в базе данных Oracle. Сценарий принимает несколько параметров, которые определяют, какие наборы записей он будет обрабатывать, и предположим, что для манипулирования каждым набором записей требуются часы.
Теперь у меня есть экземпляр скрипта, работающего на сервере Unix с использованием параметров команд NOHUP и &, то есть он работает в фоновом режиме и отсоединен от сеанса telnet, который я использовал для вызова скрипта.
Предположим, я модифицировал скрипт локально на своем настольном ПК, чтобы ускорить последующее выполнение скрипта и добавить некоторый механизм аудита, и я собираюсь загрузить скрипт на сервер.
Повлияет ли моя загрузка измененной версии скрипта на процесс, в котором в данный момент выполняется скрипт? Я не хочу убивать процесс и начинать все заново с текущего набора записей, и я боюсь попробовать и ошибиться, так как не могу быть уверен, насколько разрушительным он будет. Любой совет от опытного администратора / пользователя?
3 ответа
Любая оболочка будет сбита с толку, если вы измените файл скрипта во время его чтения. Проблемное временное окно может быть очень маленьким, если оболочка читает весь файл сценария перед началом его выполнения. Я не знаю, делает ли это ksh.
Если вы убедитесь, что создали новый файл, а не изменили существующий файл, т.е. ln myscript myscript.running; mv -f myscript.new myscript
(или любой другой метод, который перемещает новый сценарий на место, а не изменяет существующий файл), у вас не должно быть никаких проблем.
Любой скрипт ksh получит свою собственную оболочку, сначала загружаются все функции, а затем скрипт интерпретируется. Во время выполнения. Любые изменения на диске, сделанные во время выполнения, не будут отражены в текущем выполняемом задании.
Это не будет работать очень хорошо. Если вы изменили ваш скрипт во время его работы, очень вероятно, что он получит синтаксическую ошибку.
Я испытал это с bash и dash. Я не думаю, что это отличается от ksh. Даже партия MS не справляется с этим.