Почему мой Bash-скрипт даже не запускается, если он развернут в веб-приложении?

#bash #jakarta-ee #character-encoding

#bash #джакарта-ee #кодировка символов

Вопрос:

Я создал этот простой скрипт, который выполняет резервное копирование, я написал и протестировал его в Linux, затем скопировал его в свой каталог WebApp WEB-INF / scripts, чтобы меня можно было запустить через Java Runtime.exec().

 #!/bin/bash          

JACCISE_FOLDER="/var/jaccise"

rm $JACCISE_FOLDER/jaccisebackup.zip

zip -r jaccisefolder.zip $JACCISE_FOLDER 

mysqldump -ujacc -pxxx jacciseweb > jaccisewebdump.sql

zip jaccisebackup.zip   jaccisewebdump.sql    
zip jaccisebackup.zip   jaccisefolder.zip

rm jaccisewebdump.sql    
rm jaccisefolder.zip

cp  jaccisebackup.zip $JACCISE_FOLDER
  

Но это не так. Итак, я попытался скопировать его из WEB-INF / scripts в свой пользовательский каталог и запустить, чтобы запустить его в рублевом режиме. В результате получается: «: File o directory non esistente» (Означает «Неизвестный файл или каталог», обратите внимание на двоеточие в начале). Я создал другой файл с нуля, скопировал и вставил весь скрипт, и он работает. Я могу подумать, что это связано с:

  1. Кодировка текста
  2. n r различия между Windows (я использую Eclipse в Windows для редактирования всего) и Linux.

Как мне решить эту проблему с развертыванием?

Ответ №1:

Вы должны проверить, является ли файл исполняемым (chmod x). Затем вам следует проверить, разрешает ли ваш веб-сервер выполнение внешних программ. Это может быть проблемой безопасности, и, скорее всего, веб-сервер предотвращает выполнение. Проверьте журналы веб-сервера. Кодировку файла можно изменить с помощью команды dos2unix. Для отладки вашего скрипта вы можете добавить «set -x» в начале, но я думаю, что скрипт вообще не запускается.

Комментарии:

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

2. Вы найдете кодировку текстового файла в Window-> Preferences и там General-> Workspace.