Cara menggunakan "tanggal" untuk mencetak hari besok dalam seminggu

4

Pada CentOS 6 Linux saya gunakan date +%a di beberapa cronjobs dan skrip untuk menghasilkan nama-nama logfile seperti myprog-Tue.txt dan ini bekerja dengan baik untuk saya sejak bertahun-tahun.

Tapi sekarang untuk satu program saya perlu menghapus file log sebelumnya, yaitu di cronjob saya sebelum saya memulai program saya dan mengarahkan hasilnya ke myprog-Tue.txt, Saya ingin menghapus myprog-Wed.txt.

Dengan cara ini saya ingin mendapatkan file log lama dari jalan saya, tetapi masih memiliki 5-6 hari file log sekitar.

Jadi saya sudah mencoba:

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

Adakah yang tahu apa yang salah di sini?

Alexander Farber
sumber
2
Anda mungkin ingin memposting pertanyaan Linux Anda di sini: unix.stackexchange.com
Jason Enochs
@JasonEnochs Tidak ada yang menentang memposting pertanyaan Linux di sini di SuperUser, meskipun ada situs yang lebih khusus. (Sama untuk Lepaskan & amp; Linux dan Tanya Ubuntu.) Alexander , apa pun yang Anda lakukan, lakukan tidak cukup posting pertanyaan yang sama di beberapa situs di jaringan. Jika Anda ingin pertanyaan Anda dimigrasikan ke situs lain, "tandai" untuk perhatian moderator menggunakan opsi alasan kustom, minta migrasi, dan moderator akan melihat dan mengambil tindakan yang sesuai.
a CVn
4
IMHO ini adalah ide yang buruk untuk memiliki nama-of-minggu. bagaimana jika Anda memiliki dua minggu log? bagaimana jika Anda me-restart siang hari. Paling-paling kedua skenario di atas akan membingungkan, paling buruk Anda akan (mungkin) menimpa file yang ada.
Rich Homolka

Jawaban:

6

Anda akan melakukannya seperti ini:

date -d "+1 days" +%a

Itu membuat:

Duduk

Jason Enochs
sumber
11

Masalahnya bukan bagaimana Anda bisa menggunakannya date untuk menampilkan apa yang Anda inginkan ... masalah Anda adalah:

Cara ini Saya ingin mengeluarkan file log lama, tetapi masih memiliki 5-6 hari file log .

Jadi, mengapa tidak menggunakan find untuk menghapus semua file tetapi minggu ini?

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

Sebagai tambahan, date memiliki banyak implementasi berbeda - Saya ingat terakhir kali saya menggunakannya agak sulit untuk menemukan yang benar flags untuk melakukan apa yang saya inginkan ... dan itu tidak mudah untuk membuatnya bekerja dengan cara yang sama antara Linux dan mesin AIX ... jadi, kalau-kalau komentar ini membantu Anda untuk memutuskan date :)

jimm-cl
sumber
1
+1 untuk menyelesaikan masalah dan tidak hanya menjawab pertanyaan :)
a CVn
Ya, terima kasih - saya juga menggunakan perintah "find / xargs" di tempat lain. Tetapi dalam hal ini saya tidak ingin bergantung pada "mtime", karena saya terkadang mengedit / melihat file log dengan "vi".
Alexander Farber
1
@AlexanderFarber ini tidak boleh berubah mtime kecuali Anda menyimpan file. Apakah Anda mungkin memikirkan atime? Juga, mungkin Anda harus menggunakannya view dari pada vi, view membuka hanya baca secara default.
Rich Homolka
Ini mungkin membantu untuk memahami atime, mtime, dan ctime: unix.stackexchange.com/a/91200/74190 . Selain itu, Ext4 dan sistem file lainnya tampaknya menyimpan tanggal pembuatan file - mungkin itu sesuatu yang dapat Anda manfaatkan (jika menggunakan salah satu dari sistem file itu).
jimm-cl
2
@ Jim BTW: +1 untuk AIX ... Saya macet menggunakannya bertahun-tahun yang lalu. Juga, karena ini adalah Linux, Anda dapat mengandalkan -delete operator untuk (GNU) find. Anda dapat mengganti | xargs rm {} \; dengan -delete dan tidak akan terjebak dengan aturan mengutip atau -tidak menjalankan-jika-kosong.
Rich Homolka
1

Menggunakan -d pilihan untuk menentukan frasa:

date -d '+ 1 day' +%a
choroba
sumber
1

Entri lain untuk "cara mengelola file log Anda secara masuk akal" ....

Anda bisa melihat logrotate yang seharusnya menjadi bagian dari kebanyakan distribusi Linux. Itu dapat mengelola penghapusan dan kompresi. Banyak daemon Linux menggunakan ini, sehingga Anda dapat melihat beberapa contoh file konfigurasi.

Sedikit lebih sederhana rotatelogs yang menangani bagian rotasi, tetapi tidak melakukan penghapusan (Anda find ... -delete akan melakukan itu.

Rich Homolka
sumber