rm -rf: невозможно удалить `/ opt / jetty ': каталог не пуст

У меня есть сценарий, используя следующую команду для удаления папки:

ssh -q root@hostname sh -c 'rm -rf /opt/jetty/' 

В большинстве случаев он отлично работает, но иногда я получаю это сообщение:

rm: не удается удалить `/ opt / jetty ': каталог не пуст

Единственным подозрительным моментом является удаление папки, содержащей файл блокировки, который используется командной оболочкой оболочки для получения блокировки файла. Но я попытался удалить папку вручную, когда файл даже был заблокирован flock , и он преуспел.

Обновить:


Окружающая среда Linux

 # uname -a Linux XXX 2.6.32-504.8.1.el6.x86_64 #1 SMP Fri Dec 19 12:09:25 EST 2014 x86_64 x86_64 x86_64 GNU/Linux 

rm не псевдоним ни с чем, out of rm:

 # rm rm: missing operand Try `rm --help' for more information. 

У меня есть служебный скрипт для запуска Jetty, который создает файловую блокировку внутри папки. Некоторые фрагменты, как показано ниже:

 JETTY_LOCK=/opt/jetty/jetty_lock start(){ #open file descriptor and acquire lock exec 200>$JETTY_LOCK flock -x -n 200 || { exec 200>&-;echo 'jetty is being started by another process.'; sleep 5; exit 0; } ... cd /opt/jetty/ ... echo $!>&200 fi flock -u 200 #release lock exec 200>&- #close file descriptor } 

Обновить:


После воспроизведения ошибки я обнаружил, что только файл jetty_lock по-прежнему оставался int / opt / jetty, означает ли это, что сток блокирует блокировку файла при удалении? Я не могу предоставить более подробную информацию, потому что я не знаю, когда это произойдет в следующий раз …

One Solution collect form web for “rm -rf: невозможно удалить `/ opt / jetty ': каталог не пуст”

Для отладки сеанса ssh используйте параметр «-v» вместо «-q» и анализируйте вывод.

Попробуйте использовать абсолютные пути в удаленной команде. Так выглядит:

 # ssh -v root @ имя хоста / bin / sh -c '/ bin / rm -rf / opt / jetty /'
  • Как скопировать файл журнала по времени?
  • Использование sed для цветного вывода из команды на Solaris
  • Трубопровод находит результаты в другой команде
  • Сценарий оболочки (bash) для добавления или замены текста лицензии, содержащегося в файлах .c, .h и makefiles?
  • Вывод трубы jack_cpu_load через sed
  • Можно ли выполнить скрипт, который принимает пользовательский ввод, а затем выполнить другой скрипт
  • Поиск данных из всех файлов в папке
  • Невозможно выполнить сценарий Bash, если / while
  • Как дать многомерному массиву значение для каждой ячейки,
  • назначить количество выходных строк переменной
  • Использование настраиваемого фильтра через скрипт для отклонения входящей электронной почты
  • Linux и Unix - лучшая ОС в мире.