Perangkat lama yang terasa lambat sering bukan karena aplikasi yang sedang dibuka, melainkan karena puluhan proses kecil yang menyala diam-diam sejak login: updater yang memeriksa repositori, indexer yang memindai seluruh disk, daemon sinkronisasi cloud yang tidak pernah dipakai. Satu per satu memang ringkas, tetapi kolektifnya besar — tiap daemon memakan puluhan megabyte RAM dan tiap bangunannya memicu I/O kecil yang mahal pada HDD tua. Chapter ini memetakan tiga sumber pemakan resource diam-diam, membedah cara mengauditnya, lalu melatih skrip penyusun daftar kandidat untuk dimatikan.
Tiga Sumber Pemakan Resource Diam-Diam #
Pemakaian background pada desktop Linux datang dari tiga tempat berbeda, dan ketiganya ditangani dengan cara berbeda pula:
- Service systemd — daemon yang dinyalakan otomatis saat boot:
bluetooth.servicepada PC desktop tanpa adapter bluetooth,cups.serviceuntuk printer yang tidak pernah ada,tracker-miner-fsyang mengindeks isi disk demi pencarian file. - Autostart desktop — aplikasi yang ikut dinyalakan saat login lewat file
.desktopdi folder~/.config/autostart/: pusat pembaruan, agent cloud-sync, helper periferal. - Pilihan aplikasi itu sendiri — aplikasi yang secara sah kita pakai tetapi punya alternatif yang jauh lebih hemat.
Urutan penanganan mengikuti urutan daftar: service menyala paling awal, autostart menyusul saat login, dan penggantian aplikasi adalah keputusan terakhir.
Mengaudit Service yang Menyala #
Perintah systemctl list-unit-files --state=enabled mendaftar semua unit yang akan dinyalakan otomatis saat boot. Berikut contoh tampilan hasilnya pada desktop lama yang belum pernah diaudit:
UNIT FILE STATE VENDOR PRESET
NetworkManager.service enabled enabled
atd.service enabled enabled
avahi-daemon.service enabled enabled
bluetooth.service enabled enabled
cups.service enabled enabled
cups-browsed.service enabled enabled
ssh.service enabled enabled
tracker-miner-fs.service enabled enabledAudit dilakukan dengan mengajukan dua pertanyaan pada tiap baris: perangkat/fungsinya ada di mesin ini? dan fungsinya benar-benar dipakai? bluetooth.service jelas sia-sia pada PC tanpa adapter bluetooth; cups dan cups-browsed melayani printer; avahi-daemon menyiarkan penemuan layanan jaringan (mDNS) yang jarang dibutuhkan di rumah; tracker-miner-fs mengindeks file demi pencarian desktop — pekerjaan berat untuk HDD lama; atd menjalankan tugas terjadwal at yang nyaris tak pernah dipakai di desktop. Sebaliknya, NetworkManager dan ssh.service justru dipertahankan: yang pertama mengelola koneksi, yang kedua adalah pintu kita masuk bila layar atau sesi bermasalah. Untuk mematikan kandidat secara nyata: sudo systemctl disable --now bluetooth.service — disable mencabutnya dari boot dan --now juga menghentikannya seketika; mekanisme keduanya dibedah di Chapter systemctl
dan Managing Services
. Daftar opsi lengkapnya terdokumentasi di systemctl(1)
.
Latihan: Skrip Penyusun Kandidat yang Aman Dimatikan #
Keputusan “mana yang boleh dimatikan” bisa dirumuskan sebagai aturan, dan aturan bisa dilatih sebagai skrip. Fixture berikut meniru daftar service di atas, lalu skrip menyaringnya berdasarkan jawaban dua pertanyaan sederhana:
cat > daftar-service.txt <<'AKHIR'
bluetooth.service enabled
cups.service enabled
cups-browsed.service enabled
NetworkManager.service enabled
avahi-daemon.service enabled
tracker-miner-fs.service enabled
atd.service enabled
ssh.service enabled
AKHIR
cat > kandidat-off.sh <<'SKRIP'
#!/bin/bash
# kandidat-off.sh <daftar-service> <ada-bluetooth> <ada-printer>
while read -r unit state; do
[ "$state" = "enabled" ] || continue
case "$unit" in
bluetooth.service)
[ "$2" = "tidak" ] && echo "MATIKAN $unit - PC ini tidak punya bluetooth" ;;
cups*|avahi-daemon*)
[ "$3" = "tidak" ] && echo "MATIKAN $unit - tidak ada printer di rumah" ;;
tracker-miner*)
echo "MATIKAN $unit - indexing file memakan I/O HDD lama" ;;
atd.service)
echo "MATIKAN $unit - antrean 'at' tidak pernah dipakai" ;;
esac
done < "$1"
SKRIP
bash kandidat-off.sh daftar-service.txt tidak tidakOutput yang Dihasilkan:
MATIKAN bluetooth.service - PC ini tidak punya bluetooth
MATIKAN cups.service - tidak ada printer di rumah
MATIKAN cups-browsed.service - tidak ada printer di rumah
MATIKAN avahi-daemon.service - tidak ada printer di rumah
MATIKAN tracker-miner-fs.service - indexing file memakan I/O HDD lama
MATIKAN atd.service - antrean 'at' tidak pernah dipakaiEnam dari delapan service masuk daftar kandidat. Bedah skripnya:
- Baris 15 (
while read -r unit state): membaca fixture baris demi baris, memecah tiap baris ke dua variabel — nama unit dan statusnya. - Baris 16 (
[ "$state" = "enabled" ] || continue): hanya service berstatusenabledyang diproses; baris lain (misalnyadisabled) dilewati tanpa pesan. - Baris 17–26 (
casedengan pola):cups*menangkapcups.servicesekaliguscups-browsed.servicekarena tanda*cocok dengan akhiran apa pun; unit yang tidak cocok pola apa pun (sepertiNetworkManager.service) otomatis lolos tanpa dicetak — itulah cara skrip “mempertahankan” yang penting. - Baris 19 dan 21 (
[ "$2" = "tidak" ] && echo ...): kandidat bluetooth dan printer bergantung jawaban pengguna yang masuk sebagai argumen — jalankan ulang denganya yadan kedua kelompok itu hilang dari daftar. - Baris 30: dua jawaban
tidakmencerminkan PC desktop tanpa bluetooth dan printer — skenario paling umum untuk mesin tua.
Autostart Desktop: Aplikasi yang Ikut Login #
Service hanyalah separuh cerita. Desktop environment juga menjalankan aplikasi yang mendaftar diri lewat file .desktop di folder ~/.config/autostart/ — mekanisme standar XDG autostart yang dihormati GNOME, Xfce, LXQt, dan kawan-kawannya. Kita bedah isinya lewat replika folder tersebut:
mkdir -p autostart
cat > autostart/pembaruan.desktop <<'AKHIR'
[Desktop Entry]
Type=Application
Name=Pusat Pembaruan
Exec=/usr/bin/update-notifier
Terminal=false
X-GNOME-Autostart-enabled=true
AKHIR
cat > autostart/sinkronisasi.desktop <<'AKHIR'
[Desktop Entry]
Type=Application
Name=Sinkronisasi Berkas
Exec=/usr/bin/cloud-sync --minimized
Terminal=false
X-GNOME-Autostart-enabled=true
AKHIR
for f in autostart/*.desktop; do
nama=$(awk -F= '/^Name=/ { print $2 }' "$f")
perintah=$(awk -F= '/^Exec=/ { print $2 }' "$f")
printf '%-22s -> %s\n' "$nama" "$perintah"
doneOutput yang Dihasilkan:
Pusat Pembaruan -> /usr/bin/update-notifier
Sinkronisasi Berkas -> /usr/bin/cloud-sync --minimizedDua aplikasi diam-diam ikut login. Bedah format dan kodenya:
- Baris 1 (
mkdir -p autostart): opsi-pmembuat folder hanya bila belum ada — perintah ini aman diulang kapan saja, dan pada mesin nyata foldernya adalah~/.config/autostart. - Baris 6 (
Exec=...): kunciExecadalah perintah yang benar-benar dijalankan sesi login — inilah baris yang menentukan aplikasi mana yang menyala. - Baris 8 (
X-GNOME-Autostart-enabled): kunci khusus GNOME untuk menandai entri aktif; mekanisme standarnya tetap kehadiran file itu sendiri. - Baris 20–24 (loop dan
awk -F=):-F=menjadikan tanda sama-dengan sebagai pemisah field, sehinggaprint $2mengambil nilai setelah tanda=pada barisNamedanExec. - Baris 23 (
printf '%-22s ...'): rata kiri lebar 22 karakter menjaga kedua baris tetap sejajar walau namanya beda panjang.
Mengganti Aplikasi Berat dengan yang Setara #
Sumber ketiga adalah keputusan aplikasi itu sendiri, dan di sinilah kejujuran diperlukan. LibreOffice memang lengkap, tetapi untuk menulis satu surat, AbiWord memakai seperenam RAM-nya; untuk halaman sederhana, editor ringan seperti Mousepad menutup 90 persen pekerjaan tulis-menulis. Browser di perangkat sangat tua bisa diganti varian hemat — dengan catatan tegas: mesin render yang usang tidak lagi menerima perbaikan keamanan, jadi jangan dipakai untuk perbankan atau login akun penting; pada mesin 2 GiB ke atas, Firefox plus pemblokir iklan (Chapter Memilih Distro Ringan ) biasanya pilihan paling seimbang. Pemetaan lengkap aplikasi ringan beserta perbandingan konsumsinya kita susun di Chapter Lightweight Desktop Environment .
Dengan service dipangkas dan autostart dibersihkan, pemakaian dasar sistem kini ramping. Baseline dari Chapter Mengukur Penggunaan Resource akan memperlihatkan bedanya — dan langkah berikutnya mengatur ulang cara kernel memperlakukan RAM dan swap itu sendiri di Chapter Optimasi RAM .