Zamanı geçici olarak değiştirme


18

Yazılımımın yalnızca günün belirli saatlerinde gerçekleşen yönlerini test etmem gerekiyor. Bütün gün beklemek yerine (ve 2: 00'de buraya gelmek yerine), zamanı değiştirmek istiyorum.

Ama bunu kalıcı olarak değiştirmemeyi tercih ederim .

Bunu kullanarak zamanı değiştirebileceğimi dateve sonra tekrar değiştirebileceğimi biliyorum, ama daha iyi bir yol var mı?

Söz konusu işletim sistemi bir VM'de çalışan RHEL6'dır.


Değeri için, VM'mdeki zamanı geçici olarak değiştirmekte sorun yaşadım, ancak tek başına bir sistemle ilgili herhangi bir sorunum olmadı. Bunu okumaya değer olabilir: Ubuntu'da Zaman Senkronizasyonunu Devre Dışı Bırakma
GrandAdmiral

Yanıtlar:


24

Sistem raporunun uygulamanıza belirli bir zaman vermesini sağlayan libfaketime( GitHub'da da ) adlı bir kütüphane var . Sistemin program yürütme süresi boyunca sabit bir zaman bildirmesini sağlayabilir veya saati belirli bir zamanda başlatabilirsiniz (örneğin, 01:59:30). Temel olarak, faketime kütüphanesini kütüphane yükleyici aracılığıyla programınızın bellek içi görüntüsüne bağlarsınız ve sistem zamanı ile ilgili tüm sistem çağrılarını kendi yolunda yakalar ve yönetir. Sistem saatini tam olarak değiştirmez , ancak çalışmakta olan başka bir şeyi etkilemeden özel uygulamanıza bildirilen süreyi değiştirir , bu da muhtemelen peşinde olduğunuz şeydir (aksi takdirde, yalnızca küresel olanı değiştirmek için hiçbir neden göremiyorum Sistem zamanı).

Nasıl kullanılacağına dair bir dizi olası varyant var, ancak bir işlemin libfaketime ile ne zaman düşündüğünü değiştirme, bunları denemek için örnek kodla birlikte oldukça kapsamlı bir listeye sahip gibi görünüyor . Google, ne arayacağınızı bildiğiniz göz önüne alındığında bazı örnekleri de açabilmelidir.

RHEL depolarıyla önceden paketlenmemiş gibi görünüyor, ancak örneğin Debian bunu paket adı altında sağlıyorfaketime . Ayrıca kaynak kodundan derlemek için ileriye bakar (görünüşe göre bir configureadıma veya böyle bir şeye bile ihtiyaç duymaz ).


1
Bulabildiğim herhangi bir Fedora / CentOS / RHEL deposunda bunun bir ön binası yok. Burada bu RPM var, ancak CentOS için yeniden oluşturulması gerekiyor.
slm

@slm Yazık ki, ama kaynaktan denemek zor olmamalı (denemeden söyledim).
CVn

1
Hayır, sadece herkesin onları görmekten kurtarmasını bilmesine izin veriyordum. Oldukça düz görünüyor.
slm

6

Ne yapacağım ilk önce uzak bir sunucu ile zaman senkronize etmek için bir ntphizmet yüklemek . Ardından, hizmeti durdurun, tarihi manuel olarak değiştirin, oynatın ve hizmeti yeniden başlatın:

service ntpd stop
date -s "Aug 11 2012"
[ do stuff ]
service ntpd start

1
"Bildiğim kadarıyla, tek bir işlem için zamanı değiştiremezsiniz, çünkü bu sistem çapında bir şeydir." Aslında, bir şekilde; cevabımı gör.
CVn

2
@ MichaelKjörling gerçekten, ama yazma sırasındaki bilgim cevabınızı genişletmedi. Bildiğim kadarıyla olarak bildiği hiçbir şekilde :) yoktur.
terdon

Sizinkini göndermeden yaklaşık 90 saniye önce cevabımı gönderdim. ;)
bir CVn

1
@ MichaelKjörling yup, ve aslında benim (ben göremiyorum, seninkini gördüğümde yayınladıktan hemen sonra yapıldı) benim düzenledi "bildiğim kadarıyla" eklemek için :).
terdon
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.