У меня есть вопрос о работе с /etc/init.d
сценарием оболочки.
Все, что я хочу сделать, это удалить файл из команды внутри сценария оболочки следующим образом:
case $1 in
stop)
echo "Stopping"
rm -f /var/run/memcached/memcached.pid
esac
Я сохраняю это как тест и создаю memcached.pid
файл.
Когда я запускаю /etc/init.d/test
стоп со скриптом из /etc/init.d/
папки, memcached.pid
файл не удаляется.
Когда я запускаю скрипт из моего домашнего каталога, он работает нормально.
Существует ли специальный формат или структура команды, которая необходима?
rm -f
команда должна просто работать. Особенно в случае PID-файла, который вinit.d
любом случае обычно удаляется скриптами. Но так как вы показываете только небольшую часть вашего скрипта, трудно сказать, нет ли чего-то еще, что заставляет команду задыхаться. Одна идея - вы запускаете команду какroot
или черезsudo
? Кроме того, я бы рекомендовал проверить этот хороший базовыйinit.d
пример и посмотреть, поможет ли это вам.Ответы:
Используйте полный путь к rm; подтвердите, что то же самое в вашей системе:
В скриптах инициализации обычно не задана переменная окружения PATH (или корни).
источник