Автоматическое издание должно быть выполнено с использованием 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 Удалить пустые линии Если этот сценарий запущен от имени пользователя 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 , в частности, требует ответа.
До тех пор, пока у сценария есть разрешение на удаление файлов, с этим нет никаких проблем. В системах на базе unix нет никаких ограничений для сценария на изменение или удаление исходного файла. Структура файловой системы обрабатывается таким образом, что физическое хранилище, связанное с файлом, освобождается только тогда, когда все процессы закрывают файл (после удаления файл больше не будет виден в структуре каталога, но процесс, который все еще держит в коде, указывающем на данные файла, может получить к нему доступ: только тогда, когда никто не помнит в коде, файл теряется).
Если, конечно, интерпретатор, который читает сценарий, не захочет закрыть и открыть файл заново. Бэш не должен быть проблемой.
Кроме того, это выглядит как одноразовая работа. Не используйте кронтаб
. Используйте на
или даже просто количество сна && ./script
, что обычно является быстрым и грязным способом сделать это (но не будет работать, если машина перезагружается или терминал закрыт).