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


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.