Как к правильно автоматически/вручную поворачивают файлы журнала для производственного Приложения для направляющих

Можно использовать диалоговую утилиту. Это может работы как внутри, так и снаружи терминала.

Для получения его на X-сервере можно использовать его xdialog или gdialog/zenity вариант. Обратите внимание, что zenity является recommendend для XFCE, начиная с его использования GTK +. На самом деле я думаю, что Kdialog является вариантом KDE Xdialog.

Вот простой сценарий Zenity, работая на X-сервере с да/нет поле:

DIALOG=zenity
$DIALOG --title " My first dialog" --clear \
--yesno "Hi, this is my first dialog" 10 30

Вот простое учебное руководство с различным примером о другом доступном диалоговом окне. И существует также хорошее учебное руководство о zenity.

О Вашем графическом диалоговом окне прогресса существует то, выделенное с этой целью. Вот демонстрационный сценарий документации:

#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
  --title="Update System Logs" \
  --text="Scanning mail logs..." \
  --percentage=0

if [ "$?" = -1 ] ; then
        zenity --error \
          --text="Update canceled."
fi

4
23.05.2017, 14:33
1 ответ

logrotate используется системой для вращения журналов, таким образом, у Вас есть 2 варианта. Можно или включить вращение их, приложение входит в системные вращения или установку собственное и или выполненный их вручную или от crontab пользователя root (Предполагающий, что приложение направляющих запущено как корень, учитывая, он - каталог, /root/...).

Системное вращение

Для установки logrotation в существующих ранее системы просто добавляют новый файл к каталогу /etc/logrotate.d. Назовите его railsapp.conf. Я использовал бы другие примеры там для построения его. Также собрат с logrotate страница справочника.

Пользовательское вращение

Если Вы хотите выполнить свой собственный экземпляр logrotate только необходимо предоставить ему переключатели командной строки, чтобы сделать так.

  1. Сначала сделайте копию /etc/logrotate.conf /root/rails_logrotate.conf
  2. Отредактируйте файл так, чтобы он имел вращение журнала, настроил способ, которым Вы хотите (т.е. сохраните все журналы, вращайтесь еженедельно, и т.д.),
  3. Выполните его

    # 1st time
    $ logrotate -d -f -s $HOME/my_logrotate.state logrotate.conf
    
    # afterwards
    $ logrotate -d -s $HOME/my_logrotate.state logrotate.conf
    

    Если вещи смотрят хорошо, можно повторно выполнить эти команды без -d переключатель. Это для отладки целей только и на самом деле не сделает ни одной из задач, просто показать Вам, что она сделала бы.

    $ logrotate -s $HOME/my_logrotate.state logrotate.conf     
    

    Вы могли также использовать -v переключатель для создания этого подробным, подобным выводу замеченный при использовании -d переключатель.

Пример

  1. Запустите с этого файла журнала.

    $ dd if=/dev/zero of=afile bs=1k count=10k
    10240+0 records in
    10240+0 records out
    10485760 bytes (10 MB) copied, 0.0702393 s, 149 MB/s
    
    $ ll afile
    -rw-rw-r-- 1 saml saml 10485760 Aug  6 14:37 afile
    
    $ touch -t 201307010101 afile
    $ ll afile
    -rw-rw-r-- 1 saml saml 10485760 Jul  1 01:01 afile
    
  2. Теперь выполненный logrotate

    $ logrotate -v -f -s $HOME/my_logrotate.state logrotate.conf
    reading config file logrotate.conf
    reading config info for /home/saml/afile 
    
    Handling 1 logs
    
    rotating pattern: /home/saml/afile  forced from command line (1 rotations)
    empty log files are rotated, old logs are removed
    considering log /home/saml/afile
      log needs rotating
    rotating log /home/saml/afile, log->rotateCount is 1
    dateext suffix '-20130806'
    glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    glob finding old rotated logs failed
    renaming /home/saml/afile to /home/saml/afile-20130806
    creating new /home/saml/afile mode = 0664 uid = 500 gid = 501
    
  3. Проверьте результаты

    $ ll afile*
    -rw-rw-r-- 1 saml saml        0 Aug  6 14:40 afile
    -rw-rw-r-- 1 saml saml 10485760 Jul  1 01:01 afile-20130806
    

Еженедельный крон

Для создания этого выполнения каждое воскресенье, Вы могли создать следующую crontab запись для пользователя root.

$ crontab -e

Добавьте следующие строки:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
0 0 * * sun logrotate -v -f -s $HOME/my_logrotate.state $HOME/logrotate.conf

Затем сохраните вышеупомянутое.

Можно также использовать эти типы ярлыков вместо того, чтобы указать фактические дни, минуты, secs, и т.д.

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Ссылки

11
27.01.2020, 20:47
  • 1
    Спасибо за ответ. Я прочитал ту ссылку перед этим сообщением, но некоторые аспекты смутили меня. С Вами пример у меня создалось впечатление, что переключатель-d был для отладки и вызвал журнал к не, на самом деле вращаются или быть затронутым. Я неправильно понимаю переключатель? Кроме того, Вы знаете, существует ли способ заставить журнал вращаться в определенный день/время как каждое воскресенье в полночь? Я должен ожидать до окончания часов работы для проверения этого. –  Damainman 06.08.2013, 21:15
  • 2
    @Damainman - посмотрите обновления. Если Вам нужен он в определенные времена, затем создают cronjob для него. Я добавлю это к ответу также. –  slm♦ 06.08.2013, 21:43
  • 3
    Потрясающий, я протестирую это сегодня вечером и обновлю этот вопрос.Еще раз спасибо! –  Damainman 06.08.2013, 21:52
  • 4
    Мои извинения и я полагаем, что это происходит из-за моего отсутствия знаний, но я действительно не совсем понимаю, почему rails_logrotate.conf был создан, но не назвал в Вашей команде "$HOME/my_logrotate.state logrotate.conf". Что делает my_logrotate.state? Также для пользовательского вращения, я могу создать rails_logrotate.conf в/etc/logrotate.d, сделать не конкретный время/критерии, чтобы выполнить и просто выполнить его вручную при необходимости? –  Damainman 07.08.2013, 12:03
  • 5
    , я понял это с Вашими примерами :).-s и my_logrotate.state только необходимы при использовании другого файла состояния журнала. Также вместо того, чтобы использовать logrotate.conf от Вашего пользователя rotatation пример, я вместо этого использовал/root/mytools/rails_logrotate.conf.Еще раз спасибо! –  Damainman 07.08.2013, 13:19

Теги

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