Как найти процесс файлов .nfs в каталогах и убить всех

#bash #ubuntu #makefile #gnu-make #fuser

#удар #ubuntu #сделать файл #gnu-сделать #Термоблок

Вопрос:

Я пытаюсь удалить папку с именем sim_build , но не могу, потому что .nfs* в sim_build ней (а также во вложенных папках) есть несколько файлов, которые заняты/не закрыты. В настоящее время я нахожу .nfs* файлы в каталогах вручную с помощью fuser --kill /path_to_nfs/.nfs* . после удаления всех .nfs* файлов я удаляю папку с помощью rm -rf sim_build .

Как вы можете видеть, это слишком громоздко. Как лучше всего автоматизировать это в файле makefile?

любая помощь будет признательна!

Комментарии:

1. Я не уверен, что понимаю, в чем проблема. Просто создайте фальшивую цель без зависимостей и используйте свой сценарий в качестве ее рецепта. Но использование make для этого немного странно. Сценарий bash сделал бы то же самое.

2. файл makefile предназначен не только для этой задачи. На самом деле у меня есть файл makefile, который выполняет совсем другие задачи. Что я сделаю, так это расширю clean , чтобы удалить .nfs* файлы тоже. причина автоматизации в том, что я не знаю, где .nfs* находятся файлы. каждый раз, когда я запускаю моделирование, создаются некоторые папки с разными именами и .nfs* файлами.

3. В любом случае, здесь нет никакой тайны. Напишите командные строки, которые делают то, что вы хотите, в своей оболочке, затем скопируйте их в рецепт makefile, сделайте отступ с помощью вкладки и замените все $ на $$ . Выполнено. если это не сработает, опубликуйте созданное вами правило, вырежьте и вставьте неверный вывод и опишите, что не так и чего вы хотели вместо этого, тогда мы сможем помочь.