Как удалить файл из команды в файле оболочки для /etc/init.d?

2

У меня есть вопрос о работе с /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файл не удаляется.

Когда я запускаю скрипт из моего домашнего каталога, он работает нормально.

Существует ли специальный формат или структура команды, которая необходима?

Caesars
источник
Такая rm -fкоманда должна просто работать. Особенно в случае PID-файла, который в init.dлюбом случае обычно удаляется скриптами. Но так как вы показываете только небольшую часть вашего скрипта, трудно сказать, нет ли чего-то еще, что заставляет команду задыхаться. Одна идея - вы запускаете команду как rootили через sudo? Кроме того, я бы рекомендовал проверить этот хороший базовый init.dпример и посмотреть, поможет ли это вам.
JakeGould
Я запускаю команду как sudo так: sudo /etc/init.d/test stop. Спасибо за ссылку на примеры!
Цезарь

Ответы:

1

Используйте полный путь к rm; подтвердите, что то же самое в вашей системе:

 /usr/bin/rm -f /var/run/memcached/memcached.pid

В скриптах инициализации обычно не задана переменная окружения PATH (или корни).

аргонавты
источник
Я изменил мини-скрипт, как у вас, и он до сих пор не удаляет файл pid. Это действительно странно. До этого ничего нет, этот фрагмент - тестовый скрипт.
Цезарь
Вы подтвердили путь к rm? Используйте команду rm, чтобы получить свой путь
Аргонавты
Если у вас правильный путь, добавьте следующую команду перед rm; сначала подтвердите путь к этой программе. / usr / bin / chmod u + w /var/run/memcached/memcached.pid для отладки дальнейшего перенаправления вывода каждой команды путем добавления следующей строки в конце каждой: >> /var/logs/initlog.log 2 > & 1
Аргонавты
Затем, очевидно, просмотрите этот файл после его запуска
Argonauts
Да, я подтвердил правильный путь со всеми жестко закодированными путями. Теперь попробуйте журнал отладки.
CaesarS