Linux - file tree
In this session, we have covered the most common directories in the Linux file tree. It also shows that on Unix everything is a file.
filesystem hierarchy standard
Many Linux distributions partially follow the Filesystem Hierarchy Standard. The FHS (Filesystem Hierarchy Standard) may help make more Unix/Linux file system trees conform better in the future. It is known from the FHS that The filesystem hierarchy standard has been designed to be used by Unix distribution developers, package developers, and system implementers. However, it is primarily intended to be a reference and is not a tutorial on how to manage a Unix filesystem or directory hierarchy.
man hier
There are some differences in the filesystems between Linux distributions. For help about your machine, enter man hier to find information about the file system hierarchy. This manual will explain the directory structure on your computer.
the root directory /
All Linux systems have a directory structure that starts at the root directory (the home directory of the root directory). The root directory is represented by a forward slash, like this: /. Everything that exists on your Linux system can be found below this root directory. Let's take a brief look at the contents of the root directory.
datasoft@datasoft-linux:~$ ls /
bin cdrom etc initrd.img lost+found mnt proc run srv tmp var
boot dev home lib media opt root sbin sys usr vmlinuz
binary directories
Binaries are files that contain compiled source code (or machine code). Binaries can be executed on the computer. Sometimes binaries are called executables.
/bin
The /bin directory contains standard system utilities. According to the FHS the /bin
directory should contain /bin/cat and /bin/date (among others).
The following information shows the common Unix/Linux commands like cat, cp, cpio, date, dd,
echo, grep, and so on.
datasoft@datasoft-linux:~$ ls /bin
bash fgconsole nc sed
bunzip2 fgrep nc.openbsd setfacl
busybox findmnt netcat setfont
bzcat fuser netstat setupcon
bzcmp fusermount nisdomainname sh
bzdiff getfacl ntfs-3g sh.distrib
bzegrep grep ntfs-3g.probe sleep
bzexe gunzip ntfs-3g.secaudit ss
bzfgrep gzexe ntfs-3g.usermap static-sh
bzgrep gzip ntfscat stty
bzip2 hostname ntfsck su
bzip2recover ip ntfscluster sync
bzless kbd_mode ntfscmp tailf
bzmore kill ntfsdump_logfile tar
cat kmod ntfsfix tempfile
chacl less ntfsinfo touch
...
other /bin directories
You can find a /bin subdirectory in many other directories. A user named serena could put
her own programs in /home/serena/bin.
Some applications, often when installed directly from source will put themselves in /opt. A
samba server installation can use /opt/samba/bin to store its binaries.
/sbin
T/sbin contains binaries to configure the operating system. Many of the system binaries
require root privilege to perform certain tasks.
Below a screenshot containing system binaries to change the ip address, partition a disk
and create an ext4 file system.
datasoft@datasoft-linux:~$ ls -l /sbin/ifconfig /sbin/fdisk /sbin/mkfs.ext4
-rwxr-xr-x 1 root root 105444 Apr 16 21:37 /sbin/fdisk
-rwxr-xr-x 1 root root 69484 Dec 8 2013 /sbin/ifconfig
lrwxrwxrwx 1 root root 6 Jun 20 11:30 /sbin/mkfs.ext4 -> mke2fs
/lib
Binaries found in /bin and /sbin often use shared libraries located in /lib. Below is a screenshot of the partial contents of /lib.
datasoft@datasoft-linux:/$ cd lib
datasoft@datasoft-linux:/lib$ ls
apparmor libip4tc.so.0 modules
brltty libip4tc.so.0.1.0 modules-load.d
cpp libip6tc.so.0 plymouth
crda libip6tc.so.0.1.0 recovery-mode
firmware libiptc.so.0 resolvconf
hdparm libiptc.so.0.0.0 systemd
i386-linux-gnu libxtables.so.10 terminfo
ifupdown libxtables.so.10.0.0 udev
init linux-sound-base ufw
klibc-SDKhWJaiUdo4OxxZ-mvprY1CZus.so lsb xtables
ld-linux.so.2 modprobe.d
/lib/modules
Typically, the Linux kernel loads kernel modules from /lib/modules/$kernel-version/. This directory is discussed in detail in the Linux kernel chapter.
/lib32 and /lib64
We currently are in a transition between 32-bit and 64-bit systems. Therefore, you may encounter directories named /lib32 and /lib64 which clarify the register size used during compilation time of the libraries. A 64-bit computer may have some 32-bit binaries and libraries for compatibility with legacy applications. This screenshot uses the file utility to demonstrate the difference.
The ELF (Executable and Linkable Format) is used in almost every Unix-like operating system since System V.
/opt
The purpose of /opt is to store optional software. In many cases, this is software from outside the distribution repository. You may find an empty /opt directory on many systems.
A large package can install all its files in /bin, /lib, /etc subdirectories within /opt/ $packagename/. If for example the package is called wp, then it installs in /opt/wp, putting binaries in /opt/wp/bin and manpages in /opt/wp/man.
configuration directories
/boot
The /boot directory contains all files needed to boot the computer. These files don't change very often. On Linux systems, you typically find the /boot/grub directory here. /boot/grub contains /boot/grub/grub.cfg (older systems may still have /boot/grub/grub.conf) which defines the boot menu that is displayed before the kernel starts.
/etc
All the administrative files and configuration files should be located in /etc. Many times the name of a configuration files is the same as the application, daemon, or protocol with .conf added as the extension.
datasoft@datasoft-linux:/$ ls /etc/*.conf
/etc/adduser.conf /etc/insserv.conf /etc/pnm2ppa.conf
/etc/apg.conf /etc/kernel-img.conf /etc/popularity-contest.conf
/etc/blkid.conf /etc/kerneloops.conf /etc/resolv.conf
/etc/brltty.conf /etc/ld.so.conf /etc/rsyslog.conf
/etc/ca-certificates.conf /etc/libaudit.conf /etc/sensors3.conf
/etc/colord.conf /etc/logrotate.conf /etc/signond.conf
/etc/debconf.conf /etc/ltrace.conf /etc/sysctl.conf
/etc/deluser.conf /etc/mke2fs.conf /etc/ts.conf
/etc/fuse.conf /etc/mtools.conf /etc/ucf.conf
/etc/gai.conf /etc/netscsid.conf /etc/updatedb.conf
/etc/hdparm.conf /etc/nsswitch.conf /etc/usb_modeswitch.conf
/etc/host.conf /etc/pam.conf /etc/wodim.conf
datasoft@datasoft-linux:/$
There is much more to be found in /etc.
/etc/init.d/
A lot of Unix/Linux distributions have an /etc/init.d directory that contains scripts to start and stop daemons. This directory could disappear as Linux migrates to systems that replace the old init way of starting all daemons.
/etc/X11/
The graphical display (aka X Window System or just X) is driven by software from the X.org foundation. The configuration file for your graphical display is /etc/X11/xorg.conf.
/etc/skel/
The skeleton directory /etc/skel is copied to the home directory of a newly created user. It usually contains hidden files like a .bashrc script.
/etc/sysconfig/
This directory, which is not mentioned in the FHS, contains a lot of Red Hat Enterprise Linux configuration files. We will discuss some of them in greater detail. The screenshot below is the /etc/sysconfig directory from RHELv4u4 with everything installed.
datasoft@datasoft-linux:/etc$ ls /etc | more
acpi
adduser.conf
alternatives
anacrontab
apg.conf
apm
apparmor
apparmor.d
apport
apt
aptdaemon
at-spi2
avahi
bash.bashrc
bash_completion
bash_completion.d
bindresvport.blacklist
blkid.conf
blkid.tab
bluetooth
brlapi.key
brltty
brltty.conf
--More--
The file /etc/sysconfig/firstboot tells the Red Hat Setup Agent not to run at boot time. If you want to run the Red Hat Setup Agent at the next reboot, then simply remove this file, and run chkconfig --level 5 firstboot on. The Red Hat Setup Agent allows you to install the latest updates, create a user account, join the Red Hat Network and more. It will then create the /etc/sysconfig/firstboot file again.
The /etc/sysconfig/harddisks file contains some parameters to tune the hard disks. The file explains itself.
You can see hardware detected by kudzu in /etc/sysconfig/hwconf. Kudzu is software from Red Hat for automatic discovery and configuration of hardware.
The keyboard type and keymap table are set in the /etc/sysconfig/keyboard file. For more console keyboard information, check the manual pages of keymaps(5), dumpkeys(1), loadkeys(1) and the directory /lib/kbd/keymaps/.
We will discuss networking files in this directory in the networking chapter.
data directories
/home
Users' home directories are stored here, users can store personal or project data under /home. It is common (but not mandatory by the fhs) practice to name the users home directory after the user name in the format /home/ $USERNAME. For example:
datasoft@datasoft-linux:/$ ls /home
datasoft
Besides giving every user (or every project or group) a location to store personal files, the home directory of a user also serves as a location to store the user profile. A typical Unix user profile contains many hidden files (files whose file name starts with a dot). The hidden files of the Unix user profiles contain settings specific for that user.
/root
On many systems /root is the default location for personal data and profile of the root user. If it does not exist by default, then some administrators create it.
/srv
You may use /srv for data that is served by your system. The FHS allows locating cvs, rsync, ftp and www data in this location. The FHS also approves administrative naming in / srv, like /srv/project55/ftp and /srv/sales/www.
On Sun Solaris (or Oracle Solaris) /export is used for this purpose.
/media
The /media directory serves as a mount point for removable media devices such as CDROM's, digital cameras, and various usb-attached devices. Since /media is rather new in the Unix world, you could very well encounter systems running without this directory. Solaris 9 does not have it, Solaris 10 does. Most Linux distributions today mount all removable media in /media.
datasoft@datasoft-linux:/$ ls /home
datasoft
/mnt
The /mnt directory should be empty and should only be used for temporary mount points (according to the FHS).
Unix and Linux administrators used to create many directories here, like /mnt/something/. You likely will encounter many systems with more than one directory created and/or mounted inside /mnt to be used for various local and remote filesystems.
/tmp
Applications and users should use /tmp to store temporary data when needed. Data stored in /tmp may use either disk space or RAM. Both of which are managed by the operating system. Never use /tmp to store data that is important or which you wish to archive.
in memory directories
/dev
Device files in /dev appear to be ordinary files, but are not actually located on the hard disk. The /dev directory is populated with files as the kernel is recognizing hardware.
common physical devices
Common hardware such as hard disk devices are represented by device files in /dev. Below a screenshot of SATA device files on a laptop and then IDE attached drives on a desktop. (The detailed meaning of these devices will be discussed later.)
datasoft@datasoft-linux:/$ ls /dev/sd*
/dev/sda /dev/sda10 /dev/sda5 /dev/sda7 /dev/sda9
/dev/sda1 /dev/sda2 /dev/sda6 /dev/sda8
Besides representing physical hardware, some device files are special. These special devices can be very useful.
/dev/tty and /dev/pts
For example, /dev/tty1 represents a terminal or console attached to the system. (Don't break your head on the exact terminology of 'terminal' or 'console', what we mean here is a command line interface.) When typing commands in a terminal that is part of a graphical interface like Gnome or KDE, then your terminal will be represented as /dev/pts/1 (1 can be another number).
/dev/null
On Linux you will find other special devices such as /dev/null which can be considered a black hole; it has unlimited storage, but nothing can be retrieved from it. Technically speaking, anything written to /dev/null will be discarded. /dev/null can be useful to discard unwanted output from commands. /dev/null is not a good location to store your backups ;-).
/proc conversation with the kernel
/proc is another special directory, appearing to be ordinary files, but not taking up disk space. It is actually a view of the kernel, or better, what the kernel manages, and is a means to interact with it directly. /proc is a proc filesystem.
datasoft@datasoft-linux:/$ mount -t proc
proc on /proc type proc (rw,noexec,nosuid,nodev)
When listing the /proc directory you will see many numbers (on any Unix) and some interesting files (on Linux)
datasoft@datasoft-linux:/$ ls /proc
1 1632 19 2195 34 751 cpuinfo mounts
10 1635 1901 22 346 754 crypto mtrr
1014 1643 1904 2201 35 761 devices net
1063 1647 1909 2202 36 78 diskstats pagetypeinfo
11 1656 1927 2261 37 79 dma partitions
1107 1660 1931 2272 417 8 driver sched_debug
1130 1664 1935 23 481 80 execdomains schedstat
12 1667 1949 2302 49 802 fb scsi
13 1686 1954 2308 495 846 filesystems self
1323 1695 1958 2315 5 885 fs slabinfo
136 17 1962 2324 50 888 interrupts softirqs
137 1709 1977 24 52 889 iomem stat
1498 1710 2 2481 53 896 ioports swaps
15 1712 20 25 54 9 ipmi sys
1500 1714 2012 2503 55 949 irq sysrq-trigger
1563 1723 2057 2551 565 954 kallsyms sysvipc
1571 1724 2067 26 577 957 kcore timer_list
1580 1725 2082 27 592 975 key-users timer_stats
1586 1730 2090 2726 596 984 kmsg tty
1598 1744 21 276 597 986 kpagecount uptime
16 1760 2105 28 618 995 kpageflags version
1614 1772 2110 282 638 acpi latency_stats version_signature
1618 1794 2117 29 671 asound loadavg vmallocinfo
1622 18 2129 3 679 buddyinfo locks vmstat
1623 1804 2143 31 7 bus mdstat zoneinfo
1625 1813 2152 319 740 cgroups meminfo
1626 1818 2159 32 744 cmdline misc
1631 1898 2182 33 750 consoles modules
Let's investigate the file properties inside /proc. Looking at the date and time will display the current date and time showing the files are constantly updated (a view on the kernel).
datasoft@datasoft-linux:/$ date
Wed Jul 30 16:13:52 IST 2014
datasoft@datasoft-linux:/$ ls -al /proc/cpuinfo
-r--r--r-- 1 root root 0 Jul 30 16:14 /proc/cpuinfo
datasoft@datasoft-linux:/$
datasoft@datasoft-linux:~$ date
Wed Jul 30 17:28:27 IST 2014
datasoft@datasoft-linux:~$ ls -al /proc/cpuinfo
-r--r--r-- 1 root root 0 Jul 30 17:28 /proc/cpuinfo
Most files in /proc are 0 bytes, yet they contain data--sometimes a lot of data. You can see this by executing cat on files like /proc/cpuinfo, which contains information about the CPU.
datasoft@datasoft-linux:~$ file /proc/cpuinfo
/proc/cpuinfo: empty
datasoft@datasoft-linux:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Pentium(R) CPU G620 @ 2.60GHz
stepping : 7
microcode : 0x25
cpu MHz : 1600.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 5188.25
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Pentium(R) CPU G620 @ 2.60GHz
stepping : 7
microcode : 0x25
cpu MHz : 1600.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 5188.25
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
datasoft@datasoft-linux:~$
Just for fun, here is /proc/cpuinfo on a Sun Sunblade 1000...
datasoft@datasoft-linux:~$ cat /proc/cpuinfo | more
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Pentium(R) CPU G620 @ 2.60GHz
stepping : 7
microcode : 0x25
cpu MHz : 1600.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
--More--
Most of the files in /proc are read only, some require root privileges, some files are writable, and many files in /proc/sys are writable. Let's discuss some of the files in /proc.
/proc/interrupts
On the x86 architecture, /proc/interrupts displays the interrupts.
datasoft@datasoft-linux:~$ cat /proc/interrupts
CPU0 CPU1
0: 16 0 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc0
9: 3 0 IO-APIC-fasteoi acpi
12: 4 0 IO-APIC-edge i8042
16: 29 0 IO-APIC-fasteoi ehci_hcd:usb1
19: 17283 26337 IO-APIC-fasteoi ata_piix, ata_piix
23: 55734 64589 IO-APIC-fasteoi ehci_hcd:usb2
40: 13 0 PCI-MSI-edge mei_me
41: 500032 0 PCI-MSI-edge i915
42: 470 0 PCI-MSI-edge snd_hda_intel
43: 43010 0 PCI-MSI-edge eth0
NMI: 24 26 Non-maskable interrupts
LOC: 359598 369234 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 24 26 Performance monitoring interrupts
IWI: 9565 11827 IRQ work interrupts
RTR: 0 0 APIC ICR read retries
RES: 101165 71652 Rescheduling interrupts
CAL: 202 596 Function call interrupts
TLB: 3370 6154 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 42 42 Machine check polls
ERR: 0
MIS: 0
On a machine with two CPU's, the file looks like this.
datasoft@datasoft-linux:~$ cat /proc/interrupts
CPU0 CPU1
0: 16 0 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc0
9: 3 0 IO-APIC-fasteoi acpi
12: 4 0 IO-APIC-edge i8042
16: 29 0 IO-APIC-fasteoi ehci_hcd:usb1
19: 17283 26337 IO-APIC-fasteoi ata_piix, ata_piix
23: 55734 64589 IO-APIC-fasteoi ehci_hcd:usb2
40: 13 0 PCI-MSI-edge mei_me
41: 500032 0 PCI-MSI-edge i915
42: 470 0 PCI-MSI-edge snd_hda_intel
43: 43010 0 PCI-MSI-edge eth0
NMI: 24 26 Non-maskable interrupts
LOC: 359598 369234 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 24 26 Performance monitoring interrupts
IWI: 9565 11827 IRQ work interrupts
RTR: 0 0 APIC ICR read retries
RES: 101165 71652 Rescheduling interrupts
CAL: 202 596 Function call interrupts
TLB: 3370 6154 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 42 42 Machine check polls
ERR: 0
/proc/kcore
The physical memory is represented in /proc/kcore. Do not try to cat this file, instead use a debugger. The size of /proc/kcore is the same as your physical memory, plus four bytes.
datasoft@datasoft-linux:~$ ls -lh /proc/kcore
-r-------- 1 root root 1020M Jul 30 17:41 /proc/kcore
datasoft@datasoft-linux:~$
/sys Linux 2.6 hot plugging
The /sys directory was created for the Linux 2.6 kernel. Since 2.6, Linux uses sysfs to support usb and IEEE 1394 (FireWire) hot plug devices. See the manual pages of udev(8) (the successor of devfs) and hotplug(8) for more info (or visit http://linuxhotplug. sourceforge.net/ ).
Basically the /sys directory contains kernel information about hardware.
/usr Unix System Resources
Although /usr is pronounced like user, remember that it stands for Unix System Resources. The /usr hierarchy should contain shareable, read only data. Some people choose to mount /usr as read only. This can be done from its own partition or from a read only NFS share.
/usr/bin
The /usr/bin directory contains a lot of commands.
datasoft@datasoft-linux:~$ ls /usr/bin | wc -l
1421
/usr/include
The /usr/include directory contains general use include files for C.
datasoft@datasoft-linux:~$ ls /usr/include/
aio.h fcntl.h math.h pwd.h sysexits.h
aliases.h features.h mcheck.h python2.7 syslog.h
alloca.h fenv.h memory.h rdma tar.h
argp.h fmtmsg.h mntent.h re_comp.h termio.h
argz.h fnmatch.h monetary.h regex.h termios.h
ar.h fstab.h mqueue.h regexp.h tgmath.h
arpa fts.h mtd resolv.h thread_db.h
asm-generic ftw.h nautilus-sendto rpc time.h
assert.h _G_config.h net rpcsvc ttyent.h
...
/usr/lib
The /usr/lib directory contains libraries that are not directly executed by users or scripts.
datasoft@datasoft-linux:~$ ls /usr/lib | head -7
2013.com.canonical.certification:checkbox
2013.com.canonical.certification:plainbox-resources
accountsservice
aisleriot
apg
apt
aspell
/usr/local
The /usr/local directory can be used by an administrator to install software locally.
datasoft@datasoft-linux:~$ ls /usr/local/
bin etc games include lib man sbin share src
datasoft@datasoft-linux:~$ du -sh /usr/local
11M /usr/local
/usr/share
The /usr/share directory contains architecture independent data. As you can see, this is a fairly large directory.
datasoft@datasoft-linux:~$ ls /usr/share/ | wc -l
283
datasoft@datasoft-linux:~$ du -sh /usr/share/
1.1G /usr/share/
This directory typically contains /usr/share/man for manual pages.
datasoft@datasoft-linux:~$ ls /usr/share/man
ar ca@valencia en_GB fr hr ko man5 nb pt_BR sq uk
ast cs eo fr.ISO8859-1 hu ku man6 nl ro sr uz
be cy es fr.UTF-8 id lt man7 nn ru sv vi
bg da et fy io lv man8 oc se ta zh_CN
bn de eu gd it man1 mhr pa shn te zh_HK
bo el fa gl ja man2 ml pl si th zh_TW
bs en_AU fi he kk man3 ms ps sk tr
ca en_CA fo hi km man4 my pt sl ug
And it contains /usr/share/games for all static game data (so no high-scores or play logs).
datasoft@datasoft-linux:~$ ls /usr/share/games/
ls: cannot access /usr/share/games/: No such file or directory
/usr/src
The /usr/src directory is the recommended location for kernel source files.
datasoft@datasoft-linux:~$ ls -l /usr/src/
total 8
drwxr-xr-x 24 root root 4096 Apr 17 06:54 linux-headers-3.13.0-24
drwxr-xr-x 7 root root 4096 Apr 17 06:55 linux-headers-3.13.0-24-generic
/var variable data
Files that are unpredictable in size, such as log, cache and spool files, should be located in /var.
/var/log
The /var/log directory serves as a central point to contain all log files.
datasoft@datasoft-linux:~$ ls /var/log
alternatives.log dist-upgrade fsck syslog
apport.log dmesg gpu-manager.log syslog.1
apport.log.1 dmesg.0 hp syslog.2.gz
apport.log.2.gz dmesg.1.gz installer udev
apt dmesg.2.gz kern.log unattended-upgrades
auth.log dmesg.3.gz lastlog upstart
boot.log dmesg.4.gz lightdm wtmp
bootstrap.log dpkg.log pm-powersave.log Xorg.0.log
btmp faillog samba Xorg.0.log.old
cups fontconfig.log speech-dispatcher
/var/log/messages
A typical first file to check when troubleshooting on Red Hat (and derivatives) is the /var/ log/messages file. By default this file will contain information on what just happened to the system. The file is called /var/log/syslog on Debian and Ubuntu.
/var/cache
The /var/cache directory can contain cache data for several applications.
datasoft@datasoft-linux:/$ ls /var/cache/
apparmor cups fontconfig pm-utils
apt debconf ldconfig pppconfig
apt-xapian-index dictionaries-common lightdm samba
cracklib flashplugin-installer man software-center
/var/spool
The /var/spool directory typically contains spool directories for mail and cron, but also serves as a parent directory for other spool files (for example print spool files).
/var/lib
The /var/lib directory contains application state information.
Red Hat Enterprise Linux for example keeps files pertaining to rpm in /var/lib/rpm/.
/var/...
/var also contains Process ID files in /var/run (soon to be replaced with /run) and temporary files that survive a reboot in /var/tmp and information about file locks in /var/lock. There will be more examples of /var usage further in this tutorial.
Exercise, Practice and Solution :
1. Does the file /bin/cat exist ? What about /bin/dd and /bin/echo. What is the type of these files?
Code:
ls /bin/cat ; file /bin/cat
ls /bin/dd ; file /bin/dd
ls /bin/echo ; file /bin/echo
2. What is the size of the Linux kernel file(s) (vmlinu*) in /boot ?
Code:
ls -lh /boot/vm*
3. Create a directory ~/test. Then issue the following commands:
cd ~/test
dd if=/dev/zero of=zeroes.txt count=1 bs=100
od zeroes.txt
dd will copy one times (count=1) a block of size 100 bytes (bs=100) from the file /dev/zero to ~/test/zeroes.txt. Can you describe the functionality of /dev/zero ?
Code:
cd ~/test
dd if=/dev/zero of=zeroes.txt count=1 bs=100
od zeroes.txt
dd will copy one times (count=1) a block of size 100 bytes (bs=100) from the file /dev/zero
to ~/test/zeroes.txt. Can you describe the functionality of /dev/zero ?
/dev/zero is a Linux special device. It can be considered a source of zeroes. You cannot send
something to /dev/zero, but you can read zeroes from it.
4. Now issue the following command:
dd if=/dev/random of=random.txt count=1 bs=100 ; od random.txt
dd will copy one times (count=1) a block of size 100 bytes (bs=100) from the file /dev/ random to ~/test/random.txt. Can you describe the functionality of /dev/random ?
Code:
dd if=/dev/random of=random.txt count=1 bs=100 ; od random.txt
dd will copy one times (count=1) a block of size 100 bytes (bs=100) from the file /dev/
random to ~/test/random.txt. Can you describe the functionality of /dev/random ?
/dev/random acts as a random number generator on your Linux machine.
5. Issue the following two commands, and look at the first character of each output line.
ls -l /dev/sd* /dev/hd*
ls -l /dev/tty* /dev/input/mou*
The first ls will show block(b) devices, the second ls shows character(c) devices. Can you tell the difference between block and character devices ?
Code:
ls -l /dev/sd* /dev/hd*
ls -l /dev/tty* /dev/input/mou*
The first ls will show block(b) devices, the second ls shows character(c) devices. Can you
tell the difference between block and character devices ?
Block devices are always written to (or read from) in blocks. For hard disks, blocks of 512
bytes are common. Character devices act as a stream of characters (or bytes). Mouse and
keyboard are typical character devices.
6. Use cat to display /etc/hosts and /etc/resolv.conf. What is your idea about the purpose of these files?
Code:
/etc/hosts contains hostnames with their ip address
/etc/resolv.conf should contain the ip address of a DNS name server.
7. Are there any files in /etc/skel/ ? Check also for hidden files.
Code:
Issue "ls -al /etc/skel/". Yes, there should be hidden files there.
8. Display /proc/cpuinfo. On what architecture is your Linux running?
Code:
The file should contain at least one line with Intel or other cpu.
9. Display /proc/interrupts. What is the size of this file ? Where is this file stored ?
Code:
The size is zero, yet the file contains data. It is not stored anywhere because /proc is a
virtual file system that allows you to talk with the kernel. (If you answered "stored in RAMmemory,
that is also correct...).
10. Can you enter the /root directory ? Are there (hidden) files?
Code:
Try "cd /root". Yes there are (hidden) files there.
11. Are ifconfig, fdisk, parted, shutdown and grub-install present in /sbin ? Why are these binaries in /sbin and not in /bin ?
Code:
Because those files are only meant for system administrators.
12. Is /var/log a file or a directory ? What about /var/spool ?
Code:
Both are directories.
13. Open two command prompts (Ctrl-Shift-T in gnome-terminal) or terminals (Ctrl-Alt-F1, Ctrl-Alt-F2, ...) and issue the who am i in both. Then try to echo a word from one terminal to the other.
Code:
tty-terminal: echo Hello > /dev/tty1
pts-terminal: echo Hello > /dev/pts/1
14. Read the man page of random and explain the difference between /dev/random and / dev/urandom.
Code:
man 4 random
Previous:
Linux - Working with files contents
Next:
Linux Commands and arguments
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/linux-system-administration/linux-file-tree.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics