Saya terhubung ke cluster Linux kecil universitas saya melalui Putty dan WinSCP, mentransfer file menggunakan yang terakhir dan mengkompilasi dan menjalankannya dengan yang pertama. Pekerjaan saya sejauh ini telah dilakukan di laboratorium universitas, tetapi hari ini saya telah melakukan beberapa pekerjaan di rumah yang menghasilkan peringatan yang menarik.
Saya mengunggah seluruh folder barang dan, setelah menjalankan make
perintah, saya mendapatkan ini sebagai baris keluaran terakhir:
make: warning: Kemiringan jam terdeteksi. Bangunan Anda mungkin tidak lengkap.
Biner yang dihasilkan bekerja dengan benar, dan sepertinya tidak ada kesalahan tak terduga lainnya dalam proses membangun.
Saya tampaknya dapat memicu kesalahan dengan membangun setelah mengunggah beberapa file baru / pengganti (saya mengedit semuanya secara lokal kemudian mengunggah versi baru), jadi saya ingin tahu apakah ini sesederhana kali modifikasi file yang tidak cocok? Atau sesuatu yang lebih memprihatinkan?
Jadi, haruskah saya khawatir? Bagaimana cara memperbaiki / mencegah ini?
Jawaban:
Pesan itu biasanya merupakan indikasi bahwa beberapa file Anda memiliki waktu modifikasi lebih lambat dari waktu sistem saat ini. Karena
make
memutuskan file mana yang akan dikompilasi ketika melakukan membangun tambahan dengan memeriksa apakah file sumber telah dimodifikasi lebih baru dari file objeknya, situasi ini dapat menyebabkan file yang tidak perlu dibangun, atau lebih buruk, file yang diperlukan tidak dibangun.Namun, jika Anda membangun dari awal (tidak melakukan pembangunan tambahan), Anda mungkin dapat mengabaikan peringatan ini tanpa konsekuensi.
sumber
touch *
akan memperbarui waktu berjalan ke waktu saat ini. Atau Anda dapat mengaktifkan NTP di desktop Anda untuk menyinkronkan jam Anda (dengan anggapan itu adalah desktop Anda yang salah, dan bukan mesin Uni ... jika yang terakhir, mungkin minta sysadmin untuk memperbaikinya?)touch *
ini untuk saat ini, dan saya akan melihat apakah saya dapat mengetahui mana yang salah dan mungkin berbicara dengan admin admin lain kali saat saya berada di situs.find . -exec touch {} \;
touch
itu dapat menerima banyak file untuk ditindaklanjuti , Anda dapat melakukannya (lebih) lebih efisien denganfind . -exec touch {} +
yang akan memintatouch
argumen sebanyak mungkin.Biasanya ini terjadi ketika membangun direktori yang dipasang NFS, dan jam pada klien dan server NFS tidak sinkron.
Solusinya adalah menjalankan klien NTP di server NFS dan semua klien.
sumber
Instal Protokol Waktu Jaringan
Ini juga terjadi pada saya ketika menjalankan
make
SIFE SMB CIFS di server. Solusi yang tahan lama terdiri dari menginstalntp
daemon di server dan klien. (Harap perhatikan bahwa masalah ini tidak diselesaikan dengan menjalankanntpdate
. Ini akan menyelesaikan perbedaan waktu hanya sementara, tetapi tidak di masa mendatang.)Untuk sistem yang diturunkan dari Ubuntu dan Debian, cukup ketik baris berikut pada baris perintah:
Selain itu, seseorang masih perlu mengeluarkan perintah
touch *
sekali (dan hanya sekali) di direktori yang terpengaruh untuk memperbaiki waktu modifikasi file sekali dan untuk semua.Untuk informasi lebih lanjut tentang perbedaan antara
ntp
danntpdate
, silakan merujuk ke:sumber
Solusi sederhana:
akan melakukan semuanya OK.
Untuk info lebih lanjut: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html
sumber
Menurut pengguna m9dhatter di LinuxQuestions.org :
sumber
Jawaban lain di sini sangat membantu dalam menjelaskan masalah ini, jadi saya tidak akan mengulanginya di sini. Tetapi ada satu solusi yang dapat menyelesaikannya yang belum terdaftar: jalankan saja
make clean
, lalu jalankan kembalimake
.Setelah menghapus semua file yang sudah dikompilasi akan mencegah make memiliki file untuk membandingkan cap waktu, menyelesaikan peringatan.
sumber
make clean
Anda akan menyelesaikan masalah (dengan membuat orang lain).touch
pada semua file. Anda benar bahwa itu akan memerlukan kompilasi ulang penuh, tetapi apakah itu layak atau tidak waktu akan bervariasi tergantung pada prioritas dan ukuran proyek Anda. Saya tidak berpikir itu tepat untuk mengatakan itu "bukan solusi nyata" hanya karena itu bukan yang terbaik atau memiliki beberapa kekurangan. Itu akan memperbaiki masalah; Kedengarannya seperti solusi bagi saya.make clean
Saya memiliki ini di masa lalu - karena jam berada di mesin. Pertimbangkan pengaturan NTP agar semua mesin memiliki waktu yang sama.
sumber
Ini biasanya hanya karena ketidakcocokan waktu antara host Anda dan mesin klien. Anda dapat mencoba menyinkronkan waktu pada mesin Anda menggunakan ntp .
sumber
Solusinya adalah menjalankan klien NTP, jalankan saja perintah seperti di bawah ini
172.16.12.100 adalah server ntp
sumber
ntpdate
hanya koreksi satu kali. Lebih baik menginstalntp
pada server dan klien untuk mendapatkan solusi yang tahan lama.Ganti baterai arloji di komputer Anda. Saya telah melihat pesan kesalahan ini ketika koin mencari baterai pada motherboard membutuhkan penggantian.
sumber
(Untuk berjaga-jaga kalau ada yang mendarat di sini) Jika Anda memiliki hak sudo, satu opsi adalah menyinkronkan waktu sistem
sumber
Lakukan pengecekan jika hasil kompilasi, mis. Somefile.o, lebih tua dari sumbernya, mis. Somefile.c. Peringatan di atas berarti ada sesuatu tentang timestaps file yang aneh. Mungkin jam sistem dari server Universitas berbeda dari jam Anda dan Anda misalnya mendorong pukul 1 siang file dengan tanggal modifikasi jam 2 siang. Anda dapat melihat waktu di konsol dengan mengetik tanggal.
sumber
Ini terjadi pada saya. Itu karena saya berlari
make -j 4
dan beberapa pekerjaan selesai rusak. Peringatan ini harus diharapkan saat menggunakan-j
opsi.sumber