Существует небольшая проблема с sed
в режиме редактирования на месте -i
. sed
создает временный файл в том же каталоге под названием sedy08qMA
, где y08qMA
- случайно сгенерированная строка. Этот файл заполняется измененным содержимым исходного файла. После выполнения операции sed
удаляет исходный файл и переименовывает временный файл с исходным именем. Таким образом, это не настоящее inplace edit. Он создает новый файл с правами вызывающего пользователя и новым номером inode. Такое поведение в основном не плохо, но, например, жесткие ссылки могут быть нарушены.
Однако, если вы хотите true inplace edit, вам следует использовать ed
. Он читает команды из stdin и редактирует файл напрямую, без временного файла (это делается через буфер памяти ed
). Обычно для создания списка команд используется printf
:
printf "%s\n" '1,$s/search/replace/g' wq | ed -s file
Команда printf
выдает следующий результат:
1,$s/search/replace/g
wq
Эти две строки - команды ed
. Первая ищет строку search
и заменяет ее на replace
. Вторая записывает (w
) изменения в файл и завершает работу (q
). -s
подавляет диагностический вывод.
Записи добавляются в журнал каждый раз, когда выполняется задание cron
. Чтобы уменьшить время между записями, вам придется просмотреть задания cron и изменить их тайминг. Однако это может привести к поломке того, что зависит от выполнения этих заданий через определенные промежутки времени.
Если они действительно раздражают вас, то просто следуйте инструкциям в отчёте об ошибке Debian и запретите cron
регистрировать запись в auth.log
при каждом выполнении задания. То есть, отредактируйте /etc/pam.d/common-session-noninteractive
и добавьте:
session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid