Bagaimana cara mengatur Ubuntu untuk menyinkronkan jam saya dengan server waktu?

23

Saya ingin Ubuntu secara otomatis menyinkronkan jam sistem saya dengan server waktu saat startup.

Namun, PC saya tidak terhubung ke Internet sampai setelah saya login (ditambah 5 - 10 detik untuk ukuran yang baik).

Bagaimana saya mengaturnya untuk melakukan ini?

Nathan Osman
sumber
2
Sudah ada jawaban yang sangat baik di sini yang menjelaskan cara menginstal ntpd sehingga komputer Anda terus menyinkronkan dirinya dengan server waktu internet, tetapi saya hanya ingin menambahkan bahwa secara default Ubuntu akan menyinkronkan waktu dengan ntp.ubuntu.com setiap kali antarmuka jaringan Anda datang "up" (mis. ketika Anda memulai komputer Anda). Tampaknya ini tidak terjadi dalam kasus Anda karena cara Anda terhubung ke internet, tetapi pembaca lain tidak boleh berasumsi bahwa Ubuntu tidak menyinkronkan waktu tanpa ntpd diinstal.
Ini adalah salah satu yang menjelaskan cara mengaturnya ke time.nist.gov
SDsolar

Jawaban:

32

Ini dilakukan dengan NTP, yang tersedia instruksi . Pada dasarnya, Anda harus menginstal daemon NTP. Tampaknya ada beberapa pilihan yang tersedia tetapi yang "standar" ada dalam paket ntp. Menurut instruksi di halaman tertaut,

sudo apt-get install ntp

akan mengatur semuanya agar disinkronkan dengan server NTP Ubuntu.

EDIT : Saya melewatkan "saat startup." Umumnya disarankan untuk menggunakan ntpd untuk mendapatkan sinkronisasi terus menerus antara sistem Anda dan server, tetapi jika Anda benar-benar hanya ingin menyinkronkan sekali, jawaban mfisch tampaknya menjadi yang Anda cari.

David Z
sumber
3
Saya pikir secara umum dia akan lebih baik hanya memiliki ntpd selalu berjalan dan hanya gagal terhubung ketika dia tidak online, itu tidak berarti berbahaya. Dengan itu, metode saya juga harus bekerja;)
mfisch
Saya baik-baik saja dengan itu berjalan terus menerus.
Nathan Osman
1
George, lakukan saja itu. Saya berharap untuk menjawab pertanyaan "nyata" Anda karena hal yang paling menjengkelkan di dunia adalah mengajukan pertanyaan seperti ini dan memiliki semua tanggapan adalah "mengapa Anda ingin melakukan itu?"
mfisch
Untuk Ubuntu 18.04 saran untuk menginstal ntpd berlaku lebih lama. Secara default systemd-timesyncd.service akan menyinkronkan waktu.
ernstkl
9

Jika Anda pergi ke "Sistem-> Administrasi-> Waktu dan Tanggal", Anda akan mendapatkan GUI untuk mengatur tanggal / waktu.

Opsi disediakan untuk menggunakan server waktu. Jika Anda memeriksanya dan NTP tidak diinstal, ia akan menanyakan apakah Anda ingin menginstalnya. Cukup klik "ya", dan biarkan ia melakukan tugasnya :)

Jawa kecil
sumber
Lupa hal "startup". NTP melakukan tugasnya secara teratur, yang berarti Anda harus disinkronkan setiap kali Anda online ... Tapi satu-satunya cara untuk memastikan adalah dengan menggunakan beberapa jenis skrip yang disediakan oleh mfisch. Sekarang jujur: sekali disinkronkan, ada sedikit kemungkinan bahwa komputer Anda akan kacau pada jamnya. Jadi, jika Anda menggunakan sinkronisasi waktu default, dan membiarkannya melakukannya di latar belakang, Anda sebaiknya melakukan sebagian besar waktu, tanpa harus melakukan apa-apa lagi.
Little Jawa
Bukankah ini berlabel "Waktu dan Tanggal"?
Firefeather
@Firefeather: mungkin saja. Saya tidak memiliki antarmuka bahasa Inggris, jadi saya tidak tahu;)
Little Jawa
Ah, konyol aku, lupa tentang internasionalisasi. Sistem en-us saya menamakannya "Waktu dan Tanggal".
Firefeather
6

Anda dapat melakukan ini menggunakan at dan ntpdate . di mungkin sudah diinstal, tetapi ntpdate mungkin tidak. (apt-get install ntpdate).

Pertama buat skrip kecil yang menjalankan ntpdate, mari kita sebut itu update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

Dalam file .bash_login Anda (yang mungkin perlu Anda buat) tambahkan ini:

at -f ~/update_time.sh now + 1 minute

Itu harus melakukan apa yang Anda inginkan. Anda dapat mengubah delay yang di penggunaan menjadi 5 menit, 10 menit dll

EDIT: Saya baru menyadari bahwa Anda harus menjadi root untuk menjalankan ntpdate. Anda harus mengatur bit SUID pada skrip update_time.sh yang saya sebutkan. Anda dapat melakukannya dengan menjalankan ini dari perintah (hanya perlu dijalankan sekali):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
mfisch
sumber
1
iirc Anda tidak dapat menetapkan suid pada skrip .sh.
Broam
Bisakah Anda melakukan suid pada ntpdate secara langsung? Itu mungkin akan mencapai hal yang sama.
mfisch
2
Mengapa menggunakan at? Dan jika Anda akan menjalankan secara otomatis ntpdate, mengapa tidak menginstal ntplayanan saja?
Reinier Post
1
Catatan: ntpdate tidak lagi diinstal secara default pada Ubuntu (16.04+) dan sudah usang karena timedatectl. timedatectl mengontrol layanan timeyncd digital systemd, yang digunakan secara default untuk sinkronisasi waktu.
Corey Goldberg
0

Sejak Ubuntu 16.04 timedatectl / timesyncd (yang merupakan bagian dari systemd) menggantikan sebagian besar ntpdate / ntp. Lihat Sinkronisasi Waktu .

Anda mungkin perlu mengaktifkan sinkronisasi waktu menggunakan:

$ sudo timedatectl set-ntp on

Jika Anda ingin menggunakan chrony:

  • Jika Anda memerlukan penggunaan sinkronisasi sekali pakai: $ chronyd -q

  • Jika Anda memerlukan pemeriksaan waktu sekali pakai, tanpa mengatur waktu penggunaan: $ chronyd -Q

  • Untuk sinkronisasi berkelanjutan, solusi yang disarankan adalah chrony:

chrony (d)

Daemon chronyd NTP menghitung penyimpangan dan offset jam sistem Anda dan terus menyesuaikannya, sehingga tidak ada koreksi besar yang dapat menyebabkan log yang tidak konsisten misalnya. Biayanya sedikit daya pemrosesan dan memori, tetapi untuk server modern ini biasanya dapat diabaikan. Instalasi

Untuk menginstal kroni, dari terminal prompt masukkan:

$ sudo apt install chrony

Anda mungkin juga perlu mengaktifkan

sudo timedatectl set-ntp aktif

Pembaruan: Metode lain jika cara di atas tidak berhasil adalah dengan mengatur tugas cron untuk dijalankan$ chronyd -q

JBaczuk
sumber