Действительно ли безопасно удалить файл сценария из того сценария?

Pardus 2011, Kde является основной настольной средой. это быстро, изящно, не тратит слишком много памяти, стабильной, полностью интегрированной с gtk приложениями (благодаря новой gtk теме). Это действительно удобно для пользователя (Так как это - основные клиенты, правительственные институты.)

9
29.02.2012, 21:50
2 ответа

Это это безопасный удалить файл оболочки при выполнении его, начиная с обработчиков файлов не затронуто (ре), перемещающим соответствующий файл.

Для получения дополнительной информации посмотрите здесь.

5
27.01.2020, 20:07
  • 1
    Просто знайте, что это не могло бы работать, в зависимости от Вашей системы (т.е. rm <it-self> не успешно выполнится на HP-UX. –  Ouki 29.02.2012, 14:02
  • 2
    @Ouki, почему? Разве это не нарушило бы POSIX? –  maxschlepzig 29.02.2012, 19:59
  • 3
    @maxschlepzig POSIX позволяет удаление последней ссылки на исполняемый файл, который в настоящее время выполняется для сбоя: unlink может перестать работать с ETXTBUSY. (Странно, “чистая процедура” и “совместно использованный текст” не определяются в спецификации; AFAIK они имеют в виду компонент исполняемой программы: сам исполняемый файл или библиотека это использует). Все главные нельды кроме HP-UX позволяют исполняемым файлам быть переименованными и несвязанными. –  Gilles 'SO- stop being evil' 29.02.2012, 21:49
  • 4
    @Ouki, Которым должно быть легко обойти путем простого окончания сценария exec rm /path/to/foo. –  kasperd 01.06.2015, 01:02

Я был всегда озабочен этим так, я сделал:

(sleep 5; rm /path/to/shell/script) &
exit 0

Поочередно можно объединить в цепочку к временному сценарию:

echo >/tmp/rmme rm /path/to/shell/script
. /tmp/rmme
1
27.01.2020, 20:07
  • 1
    В обоих из Ваших предложенных подходов все еще будет процесс оболочки, который не закончил выполнять сценарий к тому времени, когда он удален. –  kasperd 01.06.2015, 00:57

Теги

Похожие вопросы