Saya harus mencari yang terakhir kali
apt-get update
perintah dijalankan di server saya. Bagaimana saya bisa menentukan informasi ini?
Setidaknya dalam sistem Ubuntu ada file /etc/apt/apt.conf.d/15update-stamp yang mengandung:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Jadi lihat apakah Anda memiliki / var / lib / apt / periodic / update-sukses-cap dan jika Anda memilikinya, Anda dapat menggunakan
stat -c %y /var/lib/apt/periodic/update-success-stamp
perintah untuk mendapatkan waktu doa "apt-get update" terakhir.
Dan jika sistem Anda tidak memiliki file konfigurasi yang tepat, Anda selalu dapat menambahkannya.
/var/lib/apt/periodic/update-stamp
Anda bisa memeriksa waktu akses pada file di / var / lib / apt / daftar yang diperbarui ketika Anda menjalankan pembaruan apt-get. Jika pembaruan apt-get dijalankan dengan sudo, Anda seharusnya memiliki baris yang sudah masuk /var/log/auth.log ketika sudah selesai ..
sumber
Sebuah
apt-get update
mungkin tidak membuat atau memperbarui file, itu memperbarui direktori cache sehingga kita dapat menggunakannya untuk mendapatkan cap waktu ketika yang terakhirapt-get update
dijalankan:sumber
apt-get update
Jangan pergi dari file kunci. File kunci tidak dapat diandalkan, mereka cenderung bergerak seiring waktu dengan rilis Linux baru, dan banyak program membersihkan (menghapus) file kunci ketika mereka selesai dengan mereka.
Perintah berikut akan memberi Anda apa yang Anda cari.
Ini adalah dua perintah dalam satu. Hasil dari filter perintah pertama menjadi yang kedua melalui simbol pipa (|).
Pada perintah pertama, saya menggunakan "ls" untuk membuat daftar isi file dari direktori / var / log / apt, yang merupakan direktori yang menyimpan log riwayat akses untuk apt-get. Bagian "-lt" sebenarnya adalah dua sakelar. Sakelar "l" pertama memberi tahu "ls" untuk mencantumkan satu file per baris dengan detail. Sakelar "t" kedua memberi tahu "ls" untuk mengurutkan berdasarkan tanggal dan waktu. "--waktu-gaya" memaksa waktu tanggal untuk ditampilkan dalam format "YYYY-MM-DD HH: MM".
Di bagian "grep" dari perintah, tombol "-o" memberi tahu grep untuk hanya memperlihatkan bagian dari setiap baris yang persis sama dengan persamaan reguler. Ekspresi reguler yang saya gunakan di sini mendeteksi waktu tanggal yang berada dalam format yang ditentukan dalam perintah "ls". Anda juga akan melihat potongan sihir kecil di akhir perintah "grep" yang ada "-m" dengan nomor "1" segera menyusul. Ini memberitahu "grep" untuk berhenti mencari yang cocok setelah menemukan yang pertama.
Jadi, secara ringkas, kami mencantumkan detail file log apt sehingga kami dapat melihat tanggal modifikasi terakhir, lalu mengurutkan berdasarkan tanggal dan memberi tahu grep untuk menarik tanggal pertama dari atas, yang kemudian dikembalikan. Itu tanggal terakhir yang tepat untuk berlari.
Untuk bermain sebagai advokat iblis untuk sesaat, bagaimanapun, itu umum untuk platform Debian seperti Ubuntu untuk menjadwalkan apt-get sebagai pekerjaan yang berjalan secara teratur. Jika Anda mencari orang di ujung eksekusi apt-get, Anda sebenarnya dapat menemukan mesin. Anda selalu dapat mencocokkan log akses dengan log apt untuk melihat apakah ada stempel waktu yang bersamaan. Dimungkinkan juga untuk melihat riwayat perintah pengguna sampai batas tertentu.
Semoga ini membantu!
sumber
/var/log/apt
dalamnya juga masuk ketika saya misalnya melakukanapt-get install some-package
. Sebenarnya di Ubuntu itu tidak mencatat sesuatu ketika saya melakukannyaapt-get update
Saya menduga Anda dapat memeriksa waktu modifikasi terakhir pada file / var / cache / apt untuk mencari tahu kapan pembaruan terakhir diterapkan ke daftar paket.
Saya baru saja menguji ini, dan menjalankan "sudo apt-get update" dua kali berturut-turut, dan tanggal tidak berubah dari nilai mereka saat ini, tetapi saya menduga ini karena tidak ada pembaruan baru untuk diterapkan, dan bahwa cache sudah habis saat ini.
sumber
sumber
Synaptic mencatat file histori (> File> History), aptitude mencatat kedua histori di / var / log / aptitude dan paket yang diinstal secara otomatis di / var / lib / aptitude / pkgstates, sehingga Anda dapat memeriksanya untuk aktivitas terbaru.
sumber
Saya gunakan
/var/cache/apt
untuk menentukan apakah saya perlu menjalankanapt-get update
. Secara default, jika perbedaan antara waktu saat ini dan waktu cache/var/cache/apt
kurang dari 24 jam, saya tidak perlu menjalankanapt-get update
. Interval pembaruan default dapat ditimpa dengan mengirimkan angka ke fungsirunAptGetUpdate()
Output sampel:
Saya mengekstrak fungsi-fungsi ini dari github pribadi saya: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
sumber
info
danisEmptyString
? Juga,info
adalah pilihan nama fungsi yang buruk karena itu juga merupakan perintah. Selain itu, solusi yang bagus!/var/log/dpkg.log akan menyimpan riwayat dari apa yang telah dilakukan, tetapi belum tentu aplikasi mana yang disebut dpkg (synaptic, apt-get, dll).
sumber
bungkus apt-get dalam skrip yang pertama-tama menulis stempel waktu ke file, dan kemudian melakukan pekerjaan biasa. dengan begitu, Anda dapat menentukan format cap waktu dan lokasi;)
sumber
Berikut ini adalah one-liner sederhana untuk menjalankan pembaruan jika belum dijalankan pada hari terakhir.
Itu mencari file pembaruan-sukses-cap, yang dimodifikasi lebih dari satu hari yang lalu. Jika ia menemukan file dengan usia yang tepat, maka ia menjalankan pembaruan. Catatan: file perbarui-keberhasilan-cap harus ada agar ini berfungsi.
sumber