Як використовувати "дата" для друку завтрашнього дня тижня


4

У CentOS 6 Linux я використовую date +%aдекілька задач і сценаріїв, щоб генерувати такі імена логфілів, як myprog-Tue.txtце добре працює для мене вже багато років.

Але тепер для однієї програми мені потрібно видалити попередні логіни, тобто в моєму завданні, перш ніж запустити програму і перенаправити її вихід myprog-Tue.txt, я хотів би видалити myprog-Wed.txt.

Таким чином, я хотів би вимкнути старі журнали, але все ще маю 5-6 днів журналів.

Тому я спробував:

# date -v+1d +%a
date: invalid option -- 'v'
Try `date --help' for more information.

Хтось знає, що тут не так?


2
Ви можете опублікувати свої питання щодо Linux тут: unix.stackexchange.com
— Jason Enochs

@JasonEnochs Тут немає нічого проти розміщення питань Linux на SuperUser, навіть якщо існує більш спеціалізований сайт. (Те саме для Unix & Linux та Ask Ubuntu.) Олександр , що б ви не робили, не просто публікуйте одне і те ж питання на кількох сайтах у мережі. Якщо ви хочете, щоб ваше запитання було перенесено на інший сайт, "позначте" його для уваги модератора, використовуючи спеціальний параметр причини, попросіть міграцію, і модератори оглянуть і вживатимуть відповідних дій.
— CVn

4
ІМХО це погана ідея мати назву тижня. що робити, якщо у вас два тижні журналів? що робити, якщо перезапустити протягом дня. У кращому випадку обидва сценарії вище були б заплутаними, в гіршому випадку ви (можливо) перезаписали існуючий файл.
— Багата Гомолка

Відповіді:



11

Проблема полягає не в тому, як ви можете використовувати, dateщоб вивести те, що ви хочете ... ваша проблема полягає в:

Таким чином, я хотів би вимкнути старі журнали, але все ще маю 5-6 днів журналів .

Отже, чому б не використовувати findдля видалення всіх файлів, окрім цього тижня?

find /path/to/files/ -mtime +7 -exec rm {} \;

Крім того, dateє багато різних реалізацій - я пам’ятаю, коли останній раз я його використовував, було важко знайти право flagsробити те, що я хотів ... і непросто було змусити його працювати однаково між Linux та AIX машина ... так, на всякий випадок, цей коментар допоможе вам прийняти рішення date:)


1
+1 для вирішення проблеми, а не просто відповіді на питання :)
— CVn

Так, дякую - я також використовую подібні команди "find / xargs". Але в цьому випадку я не хочу покладатися на "mtime", тому що інколи редагую / переглядаю журнали з "vi".
— Олександр Фарбер

1
@AlexanderFarber це не повинно змінювати mtime, якщо ви не збережете файл. Ви, можливо, думали про аніме? Також, можливо, ви повинні використовувати viewзамість vi, viewвідкривається лише за замовчуванням.
— Багата Гомолка

Це може допомогти зрозуміти atime, mtimeі ctime: unix.stackexchange.com/a/91200/74190 . Крім того, схоже, що у Ext4 та інших файлових системах зберігається дата створення файлів - можливо, саме цим ви можете скористатися (якщо використовується будь-яка з цих файлових систем).
— jimm-cl

2
@jim BTW: +1 для AIX ... Я застряг у використанні цього років тому. Крім того, оскільки це Linux, ви можете покластися на -deleteоператора пошуку (GNU). Ви можете замінити | xargs rm {} \;з -deleteі не застрягти з посиланням на правила або -по-вступного , якщо порожньо.
— Багата Гомолка


1

Ще один запис для "як грамотно керувати файлами журналу" ....

Ви можете подивитися логротат, який повинен бути частиною більшості дистрибутивів Linux. Він може керувати видаленням і стисненням. Для цього використовується безліч демонів Linux, тому ви можете переглянути деякі прикладові конфігураційні файли.

Трохи простішими є rotatelogs, які обробляють частину обертання, але не роблять жодного видалення (ви find ... -deleteб це зробили.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.