root [~]# uname -m i686 root [~]# perl -MPOSIX -le '@a=POSIX::uname(); print pop @a' x86_64 root [~]# root [~]# strace -e uname -vvFf -s 4096 uname -m uname({sysname="Linux", nodename="TRUNCATED", release="2.6.9-023stab033.1-smp", version="#1 SMP Mon Oct 23 21:43:16 MSD 2006", machine="x86_64"}) = 0 uname({sysname="Linux", nodename="TRUNCATED", release="2.6.9-023stab033.1-smp", version="#1 SMP Mon Oct 23 21:43:16 MSD 2006", machine="x86_64"}) = 0 Process 5784 attached [pid 5784] uname({sysname="Linux", nodename="TRUNCATED", release="2.6.9-023stab033.1-smp", version="#1 SMP Mon Oct 23 21:43:16 MSD 2006", machine="x86_64"}) = 0 Process 5784 detached --- SIGCHLD (Child exited) @ 0 (0) --- i686 root [~]# strace -e uname -vvFf -s 4096 perl -MPOSIX -e 'POSIX::uname()' uname({sysname="Linux", nodename="TRUNCATED", release="2.6.9-023stab033.1-smp", version="#1 SMP Mon Oct 23 21:43:16 MSD 2006", machine="x86_64"}) = 0 uname({sysname="Linux", nodename="TRUNCATED", release="2.6.9-023stab033.1-smp", version="#1 SMP Mon Oct 23 21:43:16 MSD 2006", machine="x86_64"}) = 0 root [~]# root [~]# file /lib/ld-2.3.3.so /lib/ld-2.3.3.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped root [~]# root [~]# for i in $(ls /lib); do file $i; done | grep 64 root [~]# for i in $(ls /usr/lib); do file $i; done | grep 64 root [~]# root [/boot]# cat /boot/kernel.h | grep type /* Kernel type i686 */ root [/boot]# uname Get name of current operating system. ($sysname, $nodename, $release, $version, $machine) = POSIX::uname(); Note that the actual meanings of the various fields are not that well standardized, do not expect any great portability. The $sysname might be the name of the operating system, the $nodename might be the name of the host, the $release might be the (major) release number of the operating system, the $version might be the (minor) release number of the operating system, and the $machine might be a hardware iden- tifier. Maybe.