Semuanya benar, hanya menunjukkan ukuran yang berbeda.
ls
menunjukkan ukuran file (saat Anda membuka dan membacanya, itulah berapa banyak byte yang akan Anda dapatkan)du
menunjukkan penggunaan disk sebenarnya yang bisa lebih kecil dari ukuran file karena lubangsize
menunjukkan ukuran gambar waktu proses dari suatu objek/dapat dieksekusi yang tidak terkait langsung dengan ukuran file (bss tidak menggunakan byte dalam file tidak peduli seberapa besar, file mungkin berisi informasi debug yang bukan bagian dari gambar waktu proses , dll.)
Jika Anda ingin mengetahui berapa banyak RAM/ROM yang diperlukan oleh sebuah executable tidak termasuk alokasi memori dinamis, size
memberi Anda informasi yang Anda butuhkan.