Есть много способов сделать это. Первый, возможно, менее удобный, это вызов vim
с файлами, которые вы хотите отредактировать - создайте:
vim first_file second_file ...
Вызов двух файлов в двух буферах. Для переключения с одного файла на другой используйте :n
и :N
. Чтобы перечислить редактируемые файлы, выполните команду :args
. :буфер помощи
поможет Вам больше в этом.
Это должно ответить на Ваш вопрос. Но вот более подробная информация:
Есть способ редактировать файлы более удобным способом, разделив экран консоли с помощью vim. Для этого откройте два кадра с помощью :split
(:sp
) или :vsplit
(:vs
) при использовании vim. Затем перемещайтесь в этих кадрах, используя комбинацию Ctrl + W > Ctrl + W. Также можно использовать Ctrl + W + стрелка или клавиша (H, J, K или L), соответствующие следующему кадру. После этого отредактируйте нужный файл с помощью :e имя_файла
. :help opening-window
поможет Вам в этом больше.
Теперь, если Вы хотите увидеть различия между файлами, используйте аргумент -d
или вызовите программу vimdiff (это одно и то же) с соответствующими файлами. :help diff
поможет вам в этом больше.
vim -d first_file second_file ...
Пожалуйста, дайте мне знать, если у вас возникнет какая-то проблема.
. Простой способ сделать это, если он соответствует вашим потребностям, - это иметь специальный файл журнала, который обновляется каждый день. Сначала вы добавляете в / etc / (r) syslog.conf
, вероятно, в самом верху на случай, если есть какие-то правила, которые что-то отбрасывают после регистрации:
*.* -/var/log/daily.log
Он получит все сообщения; то есть все, что есть в любом другом журнале, будет в этом.
Тогда вам просто понадобится скрипт, который можно запустить через cron. Вы можете использовать для этого logrotate
, но в этом случае особого смысла нет.
#!/bin/sh
gzip /var/log/daily.log
# Do whatever with the gzipped file
touch /var/log/daily.log
kill -s HUP `pidof syslogd` # see below
Этот последний шаг необходим для перезапуска syslogd, поэтому он повторно открывает новый /var/log/daily.log
- иначе вы ничего не увидите там после этого. Если вы используете rsyslog, используйте вместо него pidof rsyslogd
. Протестируйте, попробовав pidof
, который когда-либо был первым.
Наконец, в / etc / crontab
:
0 0 * * * root /path/to/rotationscript
Будет делать это в полночь каждый день.
Рассматривали ли вы возможность использования logrotate ?
Logrotate - это утилита для ротации файлов журнала через запланированные промежутки времени. После установки его, вы должны сконфигурировать его с разделами, которые выглядят следующим образом:
/var/log/*.log /var/log/auth /var/log/messages {
daily
rotate 5
copytruncate
compress
dateext
}
Когда вы его установили, ваш менеджер пакетов уже должен был добавить его в /etc/cron.daily
, поэтому вам не нужно делать что-нибудь еще.
В результате вы получите такие журналы, как /var/log/auth.20140420.gz
. Если вы хотите собрать их, все, что вам нужно сделать, это найти файлы .gz
.
В моем примере я намеренно не сделал / var / log / *
, хотя в вашем исходном вопросе говорится, что вы хотите повернуть все журналы в / var / журнал
. Это связано с тем, что в / var / log
есть такие вещи, как utmp
и wtmp
, которые не являются обычными файлами журнала и не подлежат ротации.
Есть 2 метода ротации журналов.Вы можете переименовать журнал, а затем сказать программе, пишущей журнал, чтобы повторно открыть файл журнала, или вы можете скопировать содержимое файла журнала с новым именем, а затем обрезать оригинал.
Метод перемещения лучше, но в некоторых приложениях нет возможности уведомить их о повторном открытии журнала, поэтому копирование / усечение безопаснее.
Параметр copytruncate
- это параметр, который управляет этим поведением. Если вы хотите использовать метод перемещения, удалите его и поместите в раздел postrotate
(см. Страницу руководства).