Belirli bir kabuk oturumunun tarihini numaralandırmak


30

Kesinlikle burada garip bir şey elde etmeye çalışıyorum, ancak GNU / Linux'taki bir kabuk seansı için tarihi yerel olarak yapmak istiyorum. Bir programın farklı tarihlerde nasıl davrandığını kara kutuya test etmem gerekiyor ve sistem genelinde tarihi değiştirmek istenmeyen yan etkilere neden olabilir (cron işleri, karışık günlükler vb.).

Herhangi bir fikir ?

Yanıtlar:


27

Yürütülebilir dosyaları faketime(ubuntu depolarından sudo apt-get install faketime) aşağıdakileri kullanarak kullanabilirsiniz :

faketime -f "-15d" date

Ya da bütün kabuk içinde sahte zaman bile

faketime -f "-15d" bash -l

1
Kyle Brant, bu cevabı 2010'da tekrar yayınladı . Lütfen , mevcut cevaplardan büyük ölçüde farklı kılacak şekilde genişletmek için cevabınızı düzenleyin .
CVn

5
Benim çözümüm Kyle Brant'ın yanıtladığı gibi kütüphane önyüklemesini kullanmaktan çok daha kolay çünkü libfaketime .so dosyasının konumu çok özel ve linux dağıtımına ve paket yöneticilerine bağlı.
abonec,

3
@ MichaelKjörling Bu cevap, Kyle Brant'ınki ile tamamen aynı değil.

1
@ MichaelKjörling Bu cevap Kyle Brant'ınkinden çok daha kolaydır.
Ken Sharp,

29

Bunu henüz denemedim. Fakat eğer bu güncelse , birileri kütüphaneyi daha önce yazmış gibi görünüyorsa, libfaketime ile ön yükleyebilirsiniz .

Temel kullanım:

user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov  8 12:01:12 CEST 2007

ltraceUygulamanızın kullandığı tüm zaman işlevlerinin kapsandığından emin olmak için kullanabilirsiniz .


7

TZ değişkenini bir tuhaf değere ayarlayabilirsiniz.

$ date
Tue May  4 06:24:43 CDT 2010
$ date -u
Tue May  4 11:24:47 UTC 2010
$ export TZ='CDT-3:12'
$ date
Tue May  4 14:36:53 CDT 2010
$ export TZ='CDT+5:37'
$ date
Tue May  4 05:48:00 CDT 2010

1
Zekice bir numara, ancak yalnızca saat dilimini değiştirir, bu nedenle [-12 saat, + 11 saat] aralığıyla sınırlandırılmış olursunuz.
nicoulaj

1
@ nicoulaj date Thu Aug 9 12:12:50 CDT 2018, `TZ = 'UTC + 120: 00' tarih Sat Ağu 4 09:00:47 UTC 2018 , TZ = 'UTC-120: 00' tarih Sal 14 Ağu 09:01:41 UTC 2018`. Kabaca + - bir hafta.
phil pirozhkov

3

Alternatif bir time()uygulaması olan bir kütüphaneyi önceden yükleyebilirsiniz .


1
Program (lar) ın şimdiki zamana nasıl eriştiğine bağlı olarak, gettimeofday, clock_gettime ve / veya muhtemelen başkalarının alternatif uygulamalarını önceden yüklemeniz gerekebilir, ancak evet, bu yaklaşımı daha önce başarı ile kullandım.
Kjetil Joergensen

Bu bir Java programı ve libfaketime ile iyi çalışıyor gibi görünüyor.
nicoulaj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.