Apakah updatedb
perlu sama sekali? Saya tidak pernah menggunakan locate
dan server saya cenderung memiliki puluhan juta file yang biasanya membuat updatedb untuk berjalan lama dan mengkonsumsi I / O yang dibutuhkan oleh MySQL dan / atau perangkat lunak lain.
Bisakah saya menghapusnya dari cron dan berharap semuanya berfungsi? (dengan segala yang saya maksud perangkat lunak biasa ditemukan di server: linux, cpanel, mysql, apache, php dll).
sumber
rpm
juga punya--whatrecommends
. Saya pikir Fedora mulai melihatnya sebagai sebuah konsep dalam beberapa tahun terakhir. (Lama setelah sisi debian / ubuntu default untuk menginstal dependensi "merekomendasikan" serta yang "membutuhkan")./var/lib/mlocate
?Anda dapat menonaktifkan pemindaian direktori yang memiliki banyak file (
/var/www
misalnya) dengan mengedit/etc/updatedb.conf
file konfigurasi. Jika Anda benar-benar ingin menonaktifkannya, maka cukup hapus cronjob.sumber
Hapus itu menggunakan manajer paket Anda, jika paket lain menggunakannya, Anda akan tahu, karena harus bergantung padanya (ketergantungan paket).
Saya memiliki server dengan
Nginx
,php-fpm
danmysql
, dan berfungsi dengan baik tanpaupdatedb
.sumber
aptitude remove
,aptitude why
atauaptitude search '?installed ?recommends(mlocate)'
. Ini semua akan menunjukkan merekomendasikan dependensi, selain yang membutuhkan. apt sekarang menginstal paket yang direkomendasikan secara default, jadi sementara mereka tidak dianggap penting, mereka mungkin dapat diandalkan untuk menyediakan beberapa sub-fungsi yang sangat berguna.Saya tidak akan mengambil risiko dengan mengatakan ini, tetapi kemungkinan besar itu tidak diperbaruib yang menyebabkan masalah Anda. Mungkin ada hal lain yang tidak Anda inginkan, baik aplikasi cadangan yang belum Anda konfigurasikan dengan 'kesukaan' Anda atau masalah keamanan dengan struktur grup profil / sistem Anda.
Kasus lain di mana kelihatannya alokasi memori sistem bekerja melawan pengguna adalah skenario ketika seseorang 'tidak mengetahui susun sistem file virtual'. Dan itu adalah masalah booger. 'Bom logika virtual' bisa dibilang begitu.
Ini cukup sering terjadi pada drive USB yang diformat dalam FAT32 pada sistem ext 4 yang kemudian ditransfer ke sistem zfs yang tidak benar diatur dengan csh shell sebagai shell login man. Itu menciptakan rekursi virtual dari masalah "Read-File only USB file system" pada disk dan memformat / me-mount drive ke vFat dari fat32, yang pada gilirannya menciptakan sektor blok yang buruk, dan mengekstrak (hampir memindahkan) direktori hingga ke tingkat direktori induk, yang menyebabkan loop tak terbatas! Direktori tidak secara fisik berada pada level hierarki induk. Sintaks penyebab csh adalah penyebabnya. * CATATAN: Drive dibaca hanya pada semua sistem tetapi sistem c-shell zfs login.
Untuk benar-benar menonaktifkan updatedb dapat membuat logika buruk mengacu pada alokasi memori dan 'efek roll back' .. Jika Anda pernah memiliki roll kembali ketika Anda tidak menginginkannya, Anda tahu apa yang saya maksud ketika dua jam senilai baris perintah scripting adalah Fubar-red karena Anda tidak mengalokasikan pekerjaan Anda memproses ke memori.
Sekarang jika Anda memiliki dua atau lebih prosesor fisik (mis. Dual core atau lebih), dan ddr3 ram, maka denda Anda. Selama Anda tidak menjalankan grafik yang berat, dalam hal ini jika daya yang menyebabkan masalah Anda, updatedb akan menjadi yang terakhir dalam daftar Anda. Jika Anda mencoba untuk menyamarkan gerakan Anda ke sistem untuk beberapa alasan maka ada cara lain untuk melakukannya daripada menonaktifkan updatedb, dan pada kenyataannya updateb akan memperkuat tindakan Anda yang 'tidak terjadi apa-apa' sejauh penyamaran pada sistem Anda.
Sejujurnya berdasarkan pada ukuran file biner / usr / bin / updatedb dan mempertimbangkan arsitektur sinyal / sistem komunikasi dengan-di OS dan bahwa Bash adalah 10 kali ukuran shell dasbor atau abu yang dihubungkan secara timbal balik, panggilan asyncronous adalah sangat murah di sistem.
Jika Anda masuk ke shell yang menjalankan skrip berurutan yang telah Anda tulis, dan Anda adalah seorang administrator (misalnya sudo), jalankan perintah berikut:
Maka Anda mungkin ingin membuat variabel lokal di dalam skrip Anda (updatedb membutuhkan hak sistem, AKA root / sudo / wheel), misalnya:
Dalam hal ini urutannya menggunakan STDOUT / STDIN dari skrip shell lain yang telah Anda tulis dan dieksekusi sebagai variabel dengan dalam skrip utama Anda atau mengatakan Anda memiliki paket admin pribadi atau bisnis yang diatur di mana Anda mengunggah / mengunduh / port dari cdrom atau usb atau apa pun, yang sangat besar dan memiliki skrip instalasi pribadi untuk mereka, ANDA INGIN DIPERPANJANGb. Ketika shell terminal terbuka, itu adalah contoh aplikasi utama Anda. Aplikasi lain dapat / tidak berjalan secara asinkron tetapi updatedb adalah salah satu yang paling murah dalam hal keseluruhan kebutuhan sistem / komputasi. Banyak kali, terutama dengan di lxdm Desk Enviro's dan Lxterm (hal itu sangat cepat), tetapi tidak semata-mata; tanpa menambahkan updatedb ke skrip saya, sistem telah menembak saya kesalahan bahwa file tidak ada atau sesuatu yang aneh terjadi. Dan aku suka APA!
Shell lebih cepat dari sistem yang dikelolanya Saya jamin itu!
Dalam hal ini Anda kemudian akan memanggil variabel updatedb untuk mengunci urutan sebelumnya ke dalam memori, seperti yang ditunjukkan
Apakah Anda melihat apa yang saya katakan? Jika Anda bertanya ini karena Anda menjalankan tes kecepatan eksekusi yaitu gaya Andrew Tanenbaum daripada memilikinya. Lain bijak menggunakan alat ini untuk keuntungan Anda.
sumber
locate
tidak berguna karena saya tidak yakin itu diindeks. Ketika file lebih tua, saya mencarifzf
dan pencarian fuzzy.Setidaknya dalam ArchLinux, tampaknya itu
man-db.timer
danupdatedb.timer
diaktifkan secara default (yaitu: file-file berikut ada), tetapi adano installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units). This means they are not meant to be enabled using systemctl. [...]
(output darisystemctl enable {man-,update}db.timer
).Ini adalah tautan simbolis yang ada dalam sistem file:
/usr/lib/systemd/system/multi-user.target.wants/man-db.timer
/usr/lib/systemd/system/multi-user.target.wants/updatedb.timer
Seharusnya hanya masalah menghapusnya.
Namun, mereka akan diciptakan kembali pada setiap ulang / instalasi / upgrade dari
man-db
,mlocate
paket, masing-masing.Untuk ArchLinux, solusi yang mungkin adalah memiliki kait untuk pacman untuk menghapusnya.
Namun, itu akan menghapusnya di setiap acara seperti itu, bahkan jika Anda ingin mereka diaktifkan di upgrade.
Dalam hal ini, Anda dapat menonaktifkan kait ketika ingin timer diaktifkan.
Tetapi, mengaktifkan timer hanya akan berpengaruh pada instalasi ulang / peningkatan paket, karena tidak ada bagian yang dikonfigurasikan dalam
.timer
file unit default untuk mengarahkansystemctl enable
timer secara langsung .Manual
ln -s ../man-db.timer /usr/lib/systemd/system/multi-user.target.wants/man-db.timer
atauln -s ../updatedb.timer /usr/lib/systemd/system/multi-user.target.wants/updatedb.timer
perintah akan diperlukan untuk mengaktifkan timer, dan menghapus tautan untuk menonaktifkannya.Anda dapat mengesampingkan unit khusus
/etc/systemd/system/{man-,update}db.timer
, menyediakanWantedBy=multi-user.target
di[Install]
bagian untuk memungkinkansystemtl enable|disable
, tetapi tautan/usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer
masih akan dibuat pada saat pemasangan ulang / peningkatan, secara efektif mengaktifkan kembali.timer
s.Anda juga bisa berlari
systemctl mask man-db.timer updatedb.timer
untuk menutupi penghitung waktu.Bahkan jika masih mungkin untuk menjalankan secara manual
systemctl start man-db.service updatedb.service
untuk memulai layanan yang sesuai, Anda tidak akan dapat memulai timer secara manual, untuk alasan apa pun yang diinginkan / perlu dilakukan oleh pengguna.Penanganan masalah ini tidak mengizinkan adanya override
/etc/systemd/system/{man-,update}db.timer
file unit kustom jika diinginkan / diperlukan, karena systemd perlu menggantinya dengan tautan simbolik/dev/null
untuk menandakan unit yang di-mask.Masking tampaknya menjadi solusi yang paling tidak mengganggu.
Saya lebih suka menghapus secara manual
/usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer
setelah setiap peningkatan, dan memiliki menimpa file unit/etc/systemd/system/{man-,update}db.timer
memiliki[Install]
bagianWantedBy=multi-user.target
untuk mengaktifkansystemctl
mengaktifkan / menonaktifkan manual .Sayangnya, tidak ada pekerjaan sederhana di sekitar ini, yang setidaknya, bisa saya pikirkan, saat ini.
Ini mengasumsikan bahwa paket-paket itu
man-db
,mlocate
ingin / perlu untuk tetap diinstal dalam sistem: menghapusnya tidak akan menjadi solusi yang diinginkan / berguna.Lihat juga ini:
https://www.reddit.com/r/archlinux/comments/36fqzh/updatedbservice_and_mandbservice_increases_boot/
sumber