Wawancara

Pertanyaan wawancara Linux: 24 pertanyaan beserta jawabannya

Diperbarui: · Skillaria.Top

Di wawancara Linux, pertanyaan paling sering menyangkut struktur sistem berkas dan inode, hard link dan symbolic link, izin akses dan sudo, proses dan sinyal, proses booting, serta jaringan: cara memeriksa port yang terbuka, cara kerja resolusi DNS, dan apa yang dilakukan ketika server tidak bisa dijangkau.

Linux ditanyakan dalam wawancara untuk DevOps engineer, administrator sistem, SRE, dan pengembang backend. Pewawancara jarang mengharapkan hafalan flag perintah: yang mereka nilai adalah apakah Anda memahami cara kerja sistem dan bisa menemukan penyebab masalah. Berikut kumpulan pertanyaan Linux yang paling sering muncul di wawancara, dari dasar sampai diagnostik, lengkap dengan jawaban dan perintahnya.

Tips: saat menjawab, sebutkan perintah yang akan Anda pakai untuk memeriksa pernyataan Anda. Kalimat "saya akan cek dengan ss -tlnp" terdengar lebih meyakinkan dibanding pernyataan umum.

Sistem berkas

1. Apa itu FHS dan apa isi direktori utamanya?

FHS (Filesystem Hierarchy Standard) adalah standar letak direktori. Seluruh pohon dimulai dari root /, tidak ada disk dengan huruf, dan sistem berkas lain dipasang ke direktori dalam pohon tersebut.

  • /etc — konfigurasi sistem dan layanan;
  • /var — data yang berubah: log (/var/log), cache, antrean, basis data;
  • /home — direktori home pengguna, /root — direktori home root;
  • /usr — program dan pustaka; /bin dan /sbin di distribusi modern biasanya tautan ke /usr/bin dan /usr/sbin;
  • /tmp — berkas sementara, /boot — kernel dan bootloader;
  • /proc dan /sys — sistem berkas virtual berisi informasi tentang proses dan kernel, /dev — berkas perangkat.

2. Apa itu inode?

Inode adalah struktur sistem berkas yang menyimpan metadata berkas: jenis, izin, pemilik, ukuran, cap waktu, jumlah hard link, dan penunjuk ke blok data. Nama berkas tidak disimpan di inode: nama tercatat di direktori sebagai pasangan "nama → nomor inode".

Nomor inode ditampilkan oleh ls -i, detailnya oleh stat file. Jumlah inode pada sebuah sistem berkas terbatas, dan df -i menunjukkan berapa yang sudah terpakai. Situasi klasiknya: "disk masih banyak ruangnya, tetapi berkas tidak bisa dibuat" — inode habis karena jutaan berkas kecil.

3. Apa beda hard link dan symbolic link?

Hard link (ln file link) adalah nama lain untuk inode yang sama. Kedua nama setara, dan data baru dihapus ketika jumlah link mencapai nol. Batasannya: tidak bisa menautkan direktori dan tidak bisa melewati batas satu sistem berkas.

Symbolic link (ln -s target link) adalah berkas tersendiri dengan inode sendiri, yang berisi path ke target. Ia bisa menunjuk ke direktori dan ke sistem berkas lain, tetapi "rusak" jika target dihapus atau dipindahkan.

4. Ruang disk habis, tetapi du menunjukkan lebih sedikit daripada df. Mengapa?

Penyebab paling umum: berkas sudah dihapus, tetapi masih dibuka oleh suatu proses — misalnya log besar milik layanan yang sedang berjalan dihapus. Namanya sudah tidak ada, sehingga du tidak melihatnya, tetapi blok-blok masih terpakai, dan df tetap menghitungnya.

Mencari berkas seperti ini: lsof +L1 atau lsof | grep deleted. Solusinya: mulai ulang proses, atau kosongkan berkas lewat deskriptornya: : > /proc/PID/fd/N. Ke depannya, log sebaiknya dibersihkan dengan truncate atau rotasi logrotate, bukan dengan rm.

5. Bagaimana proses booting Linux?

Firmware (BIOS atau UEFI) menginisialisasi perangkat keras lalu menyerahkan kendali ke bootloader, biasanya GRUB. Bootloader membaca konfigurasinya, lalu memuat kernel dan initramfs — sistem berkas root sementara yang berisi driver yang dibutuhkan untuk mengakses root yang sebenarnya — ke memori.

Kernel menginisialisasi perangkat, memasang sistem berkas root, dan menjalankan proses pertama di ruang pengguna dengan PID 1 — di sebagian besar distribusi ini adalah systemd. Ia menyalakan layanan sampai target default, misalnya multi-user.target. Waktu setiap tahap ditampilkan oleh systemd-analyze.

6. Apa fungsi mount dan di mana pemasangan otomatis dijelaskan?

mount memasang sistem berkas dari sebuah perangkat ke direktori (titik pemasangan): mount /dev/sdb1 /mnt/data. Pemasangan yang aktif ditampilkan oleh findmnt atau mount tanpa argumen.

Pemasangan saat boot dijelaskan di /etc/fstab. Perangkat sebaiknya ditulis dengan UUID (ditampilkan oleh blkid), bukan dengan nama seperti /dev/sdb1 yang bisa berubah. Sebelum reboot, perubahan diperiksa dengan mount -a: kesalahan di fstab bisa menghentikan boot.

Pengguna dan izin

7. Bagaimana izin akses di Linux bekerja?

Setiap berkas memiliki pemilik, grup, dan tiga set izin: untuk pemilik, grup, dan pihak lain. Setiap set berisi r (baca), w (tulis), dan x (eksekusi). Dalam bentuk angka, r=4, w=2, x=1, sehingga chmod 640 file memberi pemilik baca dan tulis, grup baca, dan pihak lain tidak mendapat apa-apa.

$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf

Pemilik diubah dengan chown user:group file, izin dengan chmod.

8. Apa arti izin r, w, dan x untuk direktori?

Untuk direktori artinya berbeda: r — boleh melihat daftar nama; w — boleh membuat, menghapus, dan mengganti nama berkas di dalamnya; x — boleh masuk ke direktori dan mengakses berkas berdasarkan nama.

Akibatnya, seseorang bisa menghapus berkas meskipun berkas itu bukan miliknya, asalkan ia punya izin tulis pada direktori. Tanpa x pada direktori, izin r tidak berguna: nama terlihat, tetapi berkasnya tidak bisa dibuka.

9. Apa itu SUID, SGID, dan sticky bit?

SUID pada berkas yang dapat dieksekusi membuat program berjalan dengan hak pemiliknya, bukan hak pengguna yang menjalankannya. Contoh klasik adalah /usr/bin/passwd: ia dimiliki root dan bisa mengubah /etc/shadow. SGID pada berkas melakukan hal yang sama untuk grup, dan pada direktori membuat berkas baru mewarisi grup direktori, yang berguna untuk folder bersama.

Sticky bit pada direktori hanya mengizinkan pemiliknya menghapus berkas, meskipun direktori itu bisa ditulis oleh semua orang. Begitulah /tmp bekerja: pada ls -ld /tmp Anda akan melihat drwxrwxrwt. Untuk mengaudit semua berkas SUID: find / -perm -4000 -type f 2>/dev/null.

10. Apa itu umask?

umask adalah maska yang mengurangi izin pada berkas dan direktori baru. Izin dasar adalah 666 untuk berkas dan 777 untuk direktori, dan umask menghilangkan bit tertentu dari keduanya. Dengan umask umum 022, berkas dibuat dengan izin 644 dan direktori dengan 755. Nilai saat ini ditampilkan oleh perintah umask.

11. Di mana pengguna dan kata sandi disimpan?

Akun pengguna ada di /etc/passwd: nama, UID, GID grup utama, direktori home, dan shell. Hash kata sandi dipindahkan ke /etc/shadow, yang hanya bisa dibaca root — dengan begitu hash tidak tersedia bagi pengguna biasa untuk diserang secara offline. Grup dijelaskan di /etc/group.

Informasi pengguna sebaiknya dilihat dengan id user dan getent passwd user — yang kedua juga mencakup sumber eksternal seperti LDAP.

12. Bagaimana cara kerja sudo dan apa keunggulannya dibanding login sebagai root?

sudo menjalankan perintah atas nama pengguna lain (secara default root) berdasarkan aturan di /etc/sudoers dan berkas di /etc/sudoers.d/. Pengguna memasukkan kata sandinya sendiri, bukan kata sandi root, dan setiap tindakan dicatat beserta pelakunya.

Aturan bisa mengizinkan semuanya (alena ALL=(ALL:ALL) ALL) atau perintah tertentu saja. Sudoers hanya diedit dengan visudo: ia memeriksa sintaks sebelum menyimpan, dan kesalahan tidak akan menghilangkan akses sudo Anda. Di Ubuntu, hak administrator diberikan lewat keanggotaan grup sudo, di keluarga RHEL lewat grup wheel.

13. Bagaimana menambahkan pengguna ke grup, dan mengapa perubahan belum berlaku?

Perintah usermod -aG docker alena menambahkan pengguna ke grup tambahan. Opsi -a wajib: tanpanya, -G akan mengganti seluruh daftar grup.

Perubahan berlaku saat login baru: sesi yang sedang berjalan menyimpan daftar grup lama. Anda bisa keluar dan masuk lagi, atau membuka shell dengan grup baru menggunakan newgrp docker. Cek hasilnya dengan id.

Proses

14. Apa itu proses, PID, dan bagaimana melihat proses?

Proses adalah program yang sedang berjalan, dengan ruang alamat, berkas terbuka, dan pengenal PID sendiri. Setiap proses memiliki induk (PPID); induk bersama semua proses adalah proses dengan PID 1. Daftar proses ditampilkan oleh ps aux dan ps -ef, pohonnya oleh pstree atau ps -ef --forest, dan secara real-time oleh top dan htop.

15. Apa beda sinyal SIGTERM dan SIGKILL?

kill PID secara default mengirim SIGTERM (15) — permintaan sopan untuk berhenti. Proses bisa menangkapnya, menutup koneksi, menyimpan data, lalu keluar. SIGKILL (9, kill -9) tidak bisa ditangkap: kernel langsung mengakhiri proses tanpa pembersihan.

Urutan yang benar adalah SIGTERM terlebih dahulu, dan SIGKILL hanya jika proses tidak merespons. Sinyal lain yang sering dipakai adalah SIGHUP: banyak daemon memuat ulang konfigurasinya saat menerimanya.

16. Apa itu proses zombie?

Zombie adalah proses yang sudah selesai, tetapi induknya belum membaca kode keluarnya dengan wait(). Ia hampir tidak memakai sumber daya, tetapi masih menempati entri di tabel proses. Di ps, statusnya Z.

Zombie tidak bisa dibunuh karena sudah mati. Yang dibutuhkan adalah induknya "menguburkan"nya — perbaiki program induk, atau hentikan induknya, sehingga zombie diwarisi oleh PID 1 dan dibersihkan.

17. Apa arti load average?

Tiga angka di uptime dan top adalah rata-rata jumlah proses yang menunggu giliran dijalankan dalam 1, 5, dan 15 menit terakhir. Di Linux, proses dalam keadaan tidak bisa diinterupsi (status D), yang biasanya menunggu disk, juga ikut dihitung.

Nilainya dibandingkan dengan jumlah core (nproc): load 4 pada 4 core berarti beban penuh, pada 16 core berarti seperempatnya. Load tinggi dengan pemakaian CPU rendah menandakan masalah I/O; ini diperiksa dengan iostat atau kolom wa di top.

Jaringan

18. Bagaimana melihat alamat IP, rute, dan port yang terbuka?

Alamat antarmuka: ip a. Tabel routing: ip r. Perintah lama ifconfig dan netstat dari paket net-tools tidak terpasang secara default di banyak distribusi.

Port yang sedang mendengarkan beserta proses pemiliknya ditampilkan oleh ss -tlnp: t — TCP, l — hanya yang mendengarkan, n — tanpa mengubah ke nama, p — dengan proses. Untuk UDP, gunakan ss -ulnp.

$ sudo ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*     users:(("nginx",pid=812,fd=6))
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*     users:(("sshd",pid=640,fd=3))

19. Layanan mendengarkan di 127.0.0.1:8080 — bisakah diakses dari luar?

Tidak. Alamat 127.0.0.1 adalah loopback interface, hanya bisa diakses dari mesin yang sama. Agar menerima koneksi dari luar, layanan harus mendengarkan alamat interface eksternal atau 0.0.0.0 (semua alamat IPv4). Ini penyebab umum "port terbuka, tetapi dari luar tidak bisa", selain firewall.

20. Bagaimana Linux mengubah nama host menjadi alamat IP?

Urutan sumber ditentukan oleh baris hosts: di /etc/nsswitch.conf, biasanya pertama berkas /etc/hosts, lalu DNS. Alamat server DNS diambil dari /etc/resolv.conf; pada sistem dengan systemd-resolved, di sana tertulis alamat lokal 127.0.0.53, sedangkan server yang sebenarnya ditampilkan oleh resolvectl status.

Untuk memeriksa, gunakan dig example.com atau dig @1.1.1.1 example.com (kueri ke server tertentu). Satu catatan penting: dig dan nslookup langsung menanyakan DNS dan tidak membaca /etc/hosts, sedangkan getent hosts example.com menempuh jalur yang sama dengan aplikasi.

21. Apa beda TCP dan UDP?

TCP membuat koneksi (jabat tangan tiga arah SYN, SYN-ACK, ACK), menjamin pengiriman dan urutan data, serta mengirim ulang paket yang hilang. Protokol ini dipakai oleh HTTP, SSH, dan sebagian besar basis data. UDP mengirim datagram tanpa koneksi dan tanpa jaminan, tetapi dengan latensi lebih rendah — dipakai untuk kueri DNS, panggilan video, dan gim.

22. Situs tidak bisa dibuka. Bagaimana Anda mencari penyebabnya?

Telusuri lapisan demi lapisan, dari nama ke aplikasi:

  1. Apakah nama bisa di-resolve: dig site.example, dan apakah alamatnya sesuai yang diharapkan.
  2. Apakah host bisa dijangkau: ping (bisa saja diblokir), traceroute atau mtr.
  3. Apakah port terbuka: nc -zv host 443 atau curl -v https://site.example.
  4. Di server: apakah layanan berjalan (systemctl status nginx), apakah port didengarkan (ss -tlnp), apakah firewall memblokir (sudo nft list ruleset, sudo ufw status).
  5. Log aplikasi dan journalctl -u dari layanan.

Pewawancara menilai urutan berpikir yang sistematis, bukan daftar utilitas tertentu.

23. Apa itu keadaan TIME_WAIT?

Setelah koneksi TCP ditutup, pihak yang menutupnya terlebih dahulu menahan socket dalam keadaan TIME_WAIT selama beberapa waktu, agar paket terlambat dari koneksi lama tidak masuk ke koneksi baru dengan alamat dan port yang sama. Jumlah TIME_WAIT yang besar wajar untuk server atau klien yang sibuk membuka banyak koneksi singkat. Jumlahnya bisa dihitung dengan ss -tan state time-wait | wc -l.

24. Apa beda /etc/hosts dan DNS, dan kapan yang pertama dibutuhkan?

/etc/hosts adalah tabel statis lokal "alamat — nama" di satu mesin. Ia dibaca sebelum DNS (dengan nsswitch standar) dan berguna untuk pengujian: misalnya mengarahkan domain ke server baru sebelum catatan DNS diubah. DNS adalah sistem terdistribusi, dan jawabannya terlihat oleh semua klien. Kesalahan di /etc/hosts sering menjadi penyebab situasi "di komputer saya situs terbuka, tetapi bagi semua orang tidak".

Kesimpulan

Pertanyaan Linux di wawancara menguji tiga hal: apakah Anda memahami model sistem (inode, izin, proses, booting), mengenal alat diagnostik (ss, dig, journalctl, lsof), dan mampu mencari penyebab masalah secara bertahap. Jawablah dengan perintah dan contoh dari pengalaman Anda. Sistem berkas, izin, dan jaringan dibahas secara mendalam dengan praktik dalam kursus Linux.

Pertanyaan umum

Apa yang biasanya ditanyakan tentang Linux untuk posisi junior DevOps?

Biasanya dasar-dasarnya: navigasi dan izin, pengelolaan proses dan systemctl, membaca log, perintah jaringan seperti ip, ss, dig, dan curl, serta dasar skrip bash. Sering juga diberikan tugas praktik seperti "cari tahu apa yang memakan disk".

Apakah perlu menghafal flag perintah?

Tidak. Cukup katakan bahwa Anda akan memeriksa flagnya di man. Yang lebih penting adalah memahami alat mana yang memecahkan masalah dan apa arti keluarannya.

Distribusi apa yang sebaiknya dipelajari untuk wawancara?

Distribusi server populer apa pun: Ubuntu atau Debian, atau yang kompatibel dengan RHEL seperti Rocky Linux. Dasarnya sama; perbedaannya terutama pada manajer paket dan nama beberapa layanan.

Bagaimana mempersiapkan bagian praktik wawancara Linux?

Jalankan mesin virtual dan kerjakan tugas nyata: jadikan web server sebagai layanan systemd, atur login dengan kunci SSH, firewall, dan cari proses berdasarkan port. Menjelaskan langkah Anda dengan suara keras juga bagian dari persiapan.