В rc.local
я добавил строку для моего файла оболочки, которую я хочу запустить при загрузке:
/direc/tory/<fileName>.sh
Сценарий выглядит так:
#!bin/sh
wget "http://somesite.org/someJava.jar" -O /direc/tory/someJavaFile.jar
java -d64 -Xincgc -Xmx512M -jar /direc/tory/someJavaFile.jar
, и я бы предположил он будет запускаться и загружаться в папку /direc/tory/
, но он продолжает работать в /
и также сохраняет все свои файлы в нем.
Что мне нужно сделать, чтобы запустить его в папке /direc/tory/
?
Ваш сценарий не содержит команды для установки текущего каталога, таким образом, это работает в том же каталоге как процесс, который вызвал его. Когда это выполняется от rc.local
, который выполняется от init
, текущий каталог является корневым каталогом /
.
, Добавляют cd /direc/tory/
к Вашему сценарию. Между прочим, обратите внимание, что это #!/bin/sh
(#!bin/sh
, оказывается, работает здесь только потому, что Вы выполняете свой сценарий от корневого каталога; это - очень плохая идея полагаться на это.)
#!/bin/sh
set -e
cd /direc/tory
wget "http://somesite.org/someJava.jar" -O someJavaFile.jar
java -d64 -Xincgc -Xmx512M -jar someJavaFile.jar
я также добавил set -e
в сценарии. Это заставляет его остановиться, если одна из команд перестала работать. Например, если wget
не может загрузить банку, то java
не выполняется.
#!/bin/sh
wget "http://somesite.org/someJava.jar" -O /direc/tory/someJavaFile.jar
cd /direc/tory
java -d64 -Xincgc -Xmx512M -jar /direc/tory/someJavaFile.jar