2015-05-19 6 views
2

У меня есть скрипт bash, который выполняет некоторые операции, и в конце я хотел бы, чтобы скрипт удалял папку, в которой он содержится. Так что я положил в конце сценария следующие командыМожет ли сценарий удалить папку, в которой она содержится? + PBS job

olddir=`pwd` 
cd .. 
rm -rf "$olddir" 

Содержание папки удаляется, но папку не так и я получаю следующее сообщение об ошибке

rm: cannot remove `folder': Directory not empty 

Скрипт вызывается скрипт pbs, который также содержится в той же папке. В чем проблема?

+0

'rm -rf' вызывает функцию' rmdir() 'внутри после удаления всех файлов в каталоге. Если какой-то другой процесс создал новый файл в директиве, в то время как 'rm -rf' запускался, это провалилось бы так. См. Также http://unix.stackexchange.com/q/12616/17649 –

ответ

0

Если вы хотите очистить каталог, который будет использоваться для работы, лучше всего было бы создать конкретный каталог в начале задания вместо простого резервного копирования и удаления текущего каталога в качестве вы сейчас делаете.

Я думаю, вы бы лучше делать что-то вроде:

  1. Сделать каталог
  2. Установите разрешения так только вы можете получить к нему доступ.
  3. перейдите в этот каталог
  4. делать всю работу за свою работу
  5. кд обратно к исходному рабочему каталогу
  6. удалить созданный каталог.