Я не знаком с Synology
, поэтому fwiw ...
Сценарий оболочки работает, когда выполняется в командной строке, потому что конкретный сеанс входа в систему уже загрузил набор переменных среды (например, при вход в сценарий .profile/.bashrc
в домашнем каталоге выполняется и загружаются различные переменные окружения java -specifi c - PATH, JAVA_HOME, CLASSPATH
, et c), которые позволяют java
и сценарию запустить без проблем.
Ошибка задания Synology
означает, что переменные среды java -specifi c не были загружены, и, следовательно, задание / сценарий не может найти java
.
При условии, что Synology
не имеет параметра / флага конфигурации, предусматривающего предварительную загрузку профиля входа в систему, «простым» решением было бы отредактировать сценарий (sms.sh
) и получить из него соответствующий файл ресурса. перед выполнением каких-либо операций (например, вызов java
). Простой пример:
$cat sms.sh
#!/usr/bin/bash
. ~root/.bashrc # load the root account profile before continuing ...
java ...
NOTES :
- замените
root
именем входа, под которым должен запускаться скрипт (в В примере Synology
изображений кажется, что вы выбрали пользователя root
, поэтому в моем примере ссылки ~root
) - заменяют
~root/.bashrc
на путь к профилю пользователя, чтобы предварительно загрузить переменные среды необходимо чтобы скрипт мог найти java