Назад | Перейти на главную страницу

плохой интерпретатор: текстовый файл занят

В течение многих лет я привык редактировать сценарии Perl CGI в «vi» и одновременно открывать браузер для их тестирования. В последнее время я получаю «500» ошибок сервера, когда я это делаю, и когда я запускаю сценарий из оболочки, я получаю «плохой интерпретатор: текстовый файл занят». Единственное решение - выходить из "vi" всякий раз, когда я хочу протестировать сценарий, что является большой болью и должен быть совершенно ненужным. Что с этим? У меня есть сервер Debian, который я регулярно обновляю, и я предполагаю, что он начался с так называемого «обновления» :)

Кажется, у вас Эта проблема, потому что в какой-то момент nvi начал открывать файлы O_RDWR вместо того O_RDONLY.

Если ваш vi на самом деле nvi, Я бы попробовал использовать другой vi, сказать vim.

Мы сталкиваемся с этим при редактировании CGI ...

#! строка интерпретатора каким-то образом получает Ctrl-M,
рендеринг исполняемого файла не найден.

Это похоже на ошибку Perl, но на самом деле это строка интерпретатора she-bang, имеющая в конце «почти» невидимые символы.

В нашем случае мы обнаружили это после того, как файл был записан. попробуйте использовать команду dos2unix для копирования на другое имя и попробуйте нажать это. Если это работает, вы нашли свою первопричину.

Сожалею, что у меня нет реального обходного пути, кроме как распознавать проблему, когда я ее вижу.

--edit - Обычно наше сообщение об ошибке: имя_сценария: файл не найден, а НЕ "файл занят", упомянутый в вопросе.

Это странно. Вы пишете его перед попыткой обновить?

Кроме того, можете ли вы "перехватить" файл, пока он открыт?