Saya menjalankan Ubuntu pada sistem embedded berbasis ARM yang tidak memiliki RTC yang didukung baterai. Waktu bangun ada di suatu tempat selama tahun 1970. Jadi, saya menggunakan layanan NTP untuk memperbarui waktu ke waktu saat ini.
Saya menambahkan baris berikut ke /etc/rc.local
file:
sudo ntpdate -s time.nist.gov
Namun, setelah startup, masih perlu beberapa menit sampai waktu diperbarui, selama periode itu saya tidak dapat bekerja secara efektif dengan tar
dan make
.
Bagaimana saya bisa memaksa pembaruan jam pada waktu tertentu?
UPDATE 1: Berikut ini (terima kasih kepada Eric dan Stephan) berfungsi dengan baik dari baris perintah, tetapi gagal memperbarui jam ketika dimasukkan ke dalam /etc/rc.local
:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
Apa yang saya lakukan salah?
UPDATE 2: Saya mencoba mengikuti beberapa saran yang datang sebagai tanggapan terhadap pembaruan 1, tetapi tampaknya tidak ada yang benar-benar melakukan pekerjaan seperti yang diperlukan. Inilah yang saya coba:
- Ganti server ke
us.pool.ntp.org
- Gunakan jalur eksplisit ke program
- Lepaskan
ntp
layanan sama sekali dan meninggalkan hanyasudo ntpdate ...
dirc.local
- Hapus
sudo
dari perintah di atas dirc.local
Menggunakan di atas, mesin masih mulai pada tahun 1970. Namun, ketika melakukan ini dari baris perintah setelah login (via ssh
), jam akan diperbarui segera setelah saya memohon ntpdate
.
Hal terakhir yang saya lakukan adalah menghapus itu dari rc.local
dan melakukan panggilan ke ntpdate
dalam .bashrc
file saya . Ini memperbarui jam seperti yang diharapkan, dan saya mendapatkan waktu saat ini yang sebenarnya setelah prompt perintah tersedia.
Namun , ini berarti bahwa jika mesin dihidupkan dan tidak ada pengguna yang login, maka waktu tidak akan pernah mendapat pembaruan. Saya dapat, tentu saja, menginstal ulang ntp
layanan sehingga setidaknya jam diperbarui dalam beberapa menit dari startup, tapi kemudian kita kembali ke kotak 1.
Jadi, apakah ada alasan mengapa menempatkan ntpdate
perintah di rc.local
tidak melakukan tugas yang diperlukan, sementara melakukannya dengan .bashrc
baik?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
file /etc/rc.locale .. semuanya sudah dijalankan sebagai root.timedatectl
, tetapi askubuntu.com/questions/832646/…Jawaban:
Mungkin
ntp
layanan berjalan, itu sebabnyantpdate
tidak dapat membuka soket (port 123 UDP) dan terhubung ke server ntp.Coba dari baris perintah:
Jika Anda ingin
/etc/rc.local
menggunakan ini sebagai berikut:sumber
service
dari rc.local dan cron tapi saya berhasil memperbaikinya menggunakan /etc/init.d/xxx sebagai gantinya. Sebenarnya saya pikir Anda tidak harus memberikan path lengkap kentpdate
, saya suka menggunakan path lengkap dalam skrip hanya untuk memastikan file yang tepat akan ditemukan.us.pool.ntp.org
itu lebih responsif.-u
opsi ini, Anda tidak perlu menghentikan layanan ntp:sudo ntpdate -u time.nist.gov
Alih-alih ntpdate (yang sudah usang ), gunakan
Perintah
-gq
memberitahu ntp daemon untuk memperbaiki waktu terlepas dari offset (g
) dan keluar segera (q
) setelah mengatur waktu.sumber
ntpd
manual, saya tidak yakin bagaimana ini memaksa pembaruan?sudo ntpd -gq
jangan keluar! Saya pada 14.10 dan saya harus CTRL + C untuk melanjutkan ... atau berapa lama waktu yang dibutuhkan?sudo service ntp...
menjadisudo service ntpd...
.Gunakan sntp untuk mengatur waktu dengan segera. Sebagai contoh:
Angka-angka setelah -s dapat berupa server waktu ntp, yang mana adalah NIST di Ft. Collins, Colorado.
sumber
Seperti orang lain telah menunjukkan solusi terbaik adalah dengan menginstruksikan ntpd untuk mengabaikan ambang panik, yang secara default adalah 1000 detik. Anda dapat mengonfigurasi ambang panik dengan salah satu dari dua cara:
/etc/default/ntp
dan pastikan opsi -g ada.tinker panic 0
di atasSejauh ini pada dasarnya apa yang direkomendasikan orang lain namun ada satu langkah lagi yang saya pikir harus Anda ambil. Instal program jam palsu:
Dengan jam palsu dipasangi mesin Anda tidak akan mulai berpikir itu tahun 1970 lagi. Ketika mesin Anda melakukan booting, ia akan menyetel jamnya ke stempel waktu palsu-hwclock yang ditulis selama reboot / shutdown terakhir. Ini berarti Anda dapat memiliki jam yang agak tepat jika ada masalah jaringan saat Anda boot.
sumber
-g
tampaknya tidak melakukan apa pun untuk saya (di baris perintah, saya tidak punya/etc/default/ntp
), tetapi menambahkantinker panic 0
untukntp.conf
bekerjatinker panic 0
pasti tampaknya telah bekerja.ntpdate adalah program yang berbeda dari net dameon. NTPDate mungkin error saat boot karena ntpd berjalan pada socket itu.
Dari baris perintah, jalankan
Anda juga dapat menghapus instalan ntpd secara bersamaan (apt-get remove ntp) dan menambahkan skrip cron untuk menggunakan ntpdate setiap jam atau lebih.
MEMPERBARUI
Layanan ntp mungkin tidak akan memiliki nilai yang berarti bagi Anda di sistem ini, jadi hapus dulu itu.
Sekarang tambahkan perintah:
untuk
/etc/rclocal
Mulai ulang. Harus bagus pada saat itu.
sumber
Gunakan
timedatectl
(unit layanan systemd) untuk mengatur waktu.ntp
sudah ditinggalkan.Anda dapat memeriksa waktu pembaruan dengan log
journalctl -xe | tail
Referensi
man timesyncd.conf
sumber
jika semua yang ingin Anda lakukan adalah mengatur jam sekali, sederhana
sumber
Cara yang benar untuk melakukan ini pada sistem Debian / Mint / Ubuntu (atau turunan Debian lainnya) adalah dengan memiliki jalur
dalam file
Ini memastikan bahwa ketika ntpd dimulai dari skrip /etc/init.d/ntp, ntpd dijalankan dengan opsi "-g", yaitu
untuk memungkinkan ntpd memperbaiki waktu sistem ketika lebih dari 1000 detik, misalnya ketika waktu sistem 1 Januari 1970 saat startup karena tidak ada RTC perangkat keras.
sumber
/etc/default/ntp
, tetapi waktu tidak disinkronkan.tlsdate
mengatur jam lokal dengan menghubungkan dengan aman dengan TLS ke server jarak jauh dan mengekstrak waktu jauh dari jabat tangan yang aman. Tidak sepertintpdate
,tlsdate
menggunakan TCP, misalnya menghubungkan ke layanan yang diaktifkan HTTPS atau TLS jarak jauh, dan menyediakan beberapa perlindungan terhadap musuh yang mencoba memberi Anda informasi waktu berbahaya.sumber
Perhatikan bahwa beberapa sistem berbasis Ubuntu saat ini bahkan tidak menggunakan layanan NTP secara default sekarang. Di mesin Linux Mint 19 (Ubuntu 18.04) saya, waktu disimpan oleh
systemd-timesyncd
.Jadi untuk mendapatkan waktu terbaru setelah kehilangan sinkronisasi, saya jalankan saja
Sejak 15,04 Ubuntu menggunakan systemd secara default. Oleh karena itu sistem kritis seperti waktu dikelola melalui systemd. Untuk menemukan layanan apa yang digunakan sistem Anda, jalankan sesuatu seperti
Untuk TechJS pada 16,04 layanannya adalah
ntp
. Untuk saya sendiri di Ubuntu 18.04 (Mint 19) layanannyasystemd-timesyncd
. Menariknya, saya masuk ke server 16,04 yang saya miliki dan menggunakansystemd-timesyncd
juga.sumber
Coba gunakan
-b
opsi untuk melangkah waktu.sumber
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting
. Namun, saya pikir saya sudah mencoba ini sebelumnyarc.local
tetapi tidak membantu.ntpdate -b <ipaddress>
Baik,
Saya menjalankan raspbian (debian wheezy) pada raspberry pi saya, yang tidak memiliki jam. Saya merasa berguna untuk menulis skrip kecil dan menjalankannya setelah antarmuka internet saya menyala, sehingga saya yakin bahwa saat jaringan tersedia, jam akan diperbarui.
Pertama periksa apakah Anda memiliki
ntpdate
paket dengan menjalankanAnda perlu menambahkan yang berikut ke dalam Anda
/etc/network/interfaces
(pasti dieth0
sini hanya sebuah contoh):Dan buat skrip berikut di
/usr/local/sbin/update-time.sh
(jangan lupa untuk membuatnya bisa dieksekusi olehchmod
):sumber
Algoritme ntpd membuang offset sampel yang melebihi 128 ms, kecuali interval di mana tidak ada [nilai absolut] offset sampel kurang dari 128 ms melebihi 900 detik. Sampel pertama setelah itu, apa pun offsetnya, langkah jam ke waktu yang ditunjukkan. Dalam prakteknya ini mengurangi tingkat alarm palsu di mana jam di melangkah dalam kesalahan ke insiden yang semakin rendah.
Biasanya, ntpd keluar jika offset melebihi batas kewarasan, yaitu 1000 detik secara default. Ini bisa dimatikan dengan opsi -g:
-g Biasanya, ntpd keluar jika offset melebihi batas kewarasan, yaitu 1000 detik secara default. Jika batas kewarasanan diatur ke nol, tidak ada pemeriksaan kewarasan dilakukan dan offset apa pun dapat diterima. Opsi ini mengesampingkan batas dan memungkinkan waktu diatur ke nilai apa pun tanpa batasan; Namun, ini bisa terjadi hanya sekali. Setelah itu, ntpd akan keluar jika batas terlampaui. Opsi ini dapat digunakan dengan opsi -q.
keduanya dari http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
sumber
Jika Anda dapat menyediakan waktu untuk menunggu berapa pun waktu yang diperlukan sebelum sistem Anda sinkron, Anda dapat menggunakan
ntp-wait
perintah:sumber
Jika Anda menggunakan systemd, Anda dapat menggunakan perintah ini:
Dan kemudian waktu diperbarui dalam waktu dekat 10-15 detik.
Diuji pada ubuntu mate 16.04
sumber
ntpd
danntpdate
dijalankan secara default menggunakan port terbatas (UDP 123). Jika Anda berada di belakang firewall,ntpd
tidak akan pernah berfungsi, tetapintpdate
dapat bekerja dengan-u
opsi tersebut. Misalnya:ntpdate -u 0.ubuntu.pool.ntp.org
atauntpdate -u time.nist.gov
keduanya harus bekerja dengan baik.sumber