Сценарий оболочки Unix для удаления всех трассировок себя после выполнения через crontab

Автоматическое издание должно быть выполнено с использованием SED (1) (см. MAN SED )

Подобные ваши ищеты

 sed -i -e s/old/new/g -e /deletethis/d -e '/^$/d' postgresdb.out

Я не уверен, что вы ожидаете с :% S / \ N \ N // D .

Где

  • -I означает редактирование на месте (обычно SED будет выводить издание сделать стандартный выход)
  • -E ... сделать издание / удаление
  • -E '/ ^ ^ $ / D ' Shoudl Удалить пустые линии
0
21.10.2014, 14:07
2 ответа

Если этот сценарий запущен от имени пользователя root ... тогда удаление записи из crontab может быть выполнено путем удаления его строки crontab из / var / spool / cron / корень. (Это то, что используют crontab -l и crontab -e ).

В конце ваших команд удаления добавьте следующую строку (заменив {pattern} имя вашего скрипта):

sed -i '/{pattern}/d' /var/spool/cron/root

Итак, если ваша запись в crontab, которая запускает code.sh , выглядит как

0 21 * * * /etc/cron.daily/code.sh

Команда будет выглядеть так:

sed -i '/code.sh/d' /var/spool/cron/root

Это удалит строку, содержащую "code.sh", из корневого файла crontab.

Вы можете добавить строку выше в конец вашего скрипта, чтобы оба файла были удалены, а запись была удалена из crontab. Как заявил @Barmar, вы можете просто удалить обе папки через некоторое время.

Да, это очень старый вопрос, но прямой вопрос об удалении из crontab , в частности, требует ответа.

1
28.01.2020, 02:51

До тех пор, пока у сценария есть разрешение на удаление файлов, с этим нет никаких проблем. В системах на базе unix нет никаких ограничений для сценария на изменение или удаление исходного файла. Структура файловой системы обрабатывается таким образом, что физическое хранилище, связанное с файлом, освобождается только тогда, когда все процессы закрывают файл (после удаления файл больше не будет виден в структуре каталога, но процесс, который все еще держит в коде, указывающем на данные файла, может получить к нему доступ: только тогда, когда никто не помнит в коде, файл теряется).

Если, конечно, интерпретатор, который читает сценарий, не захочет закрыть и открыть файл заново. Бэш не должен быть проблемой.

Кроме того, это выглядит как одноразовая работа. Не используйте кронтаб. Используйте на или даже просто количество сна && ./script, что обычно является быстрым и грязным способом сделать это (но не будет работать, если машина перезагружается или терминал закрыт).

0
28.01.2020, 02:51

Теги

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