Since this post is a snapshot in time. I recommend that you download a copy of the book which is updated frequently to improve and expand the content.
---------------------------------------
Linux Directory Structure
To a new user of Linux, the file structure may feel like something at best arcane and in some cases arbitrary. Of course this isn’t entirely the case and in spite of some distribution specific differences, there is a fairly well laid out hierarchy of directories and files with a good reason for being where they are.
We are frequently comfortable with the concept of navigating this structure using a graphical interface similar to that shown below, but to operate effectively at the command line we need to have a working knowledge of what goes where.
Linux Directories |
The directories we are going to describe form a hierarchy similar to the following;
Directory Hierarchy |
For a concise description of the directory functions check out the cheat sheet. Alternatively their function and descriptions are as follows;
/
The /
or ‘root’ directory contains all other files and directories. It is important to note that this is not the root users home directory (although it used to be many years ago). The root user’s home directory is /root
. Only the root user has write privileges for this directory.
/
or ‘root’ directory contains all other files and directories. It is important to note that this is not the root users home directory (although it used to be many years ago). The root user’s home directory is /root
. Only the root user has write privileges for this directory.
/bin
/boot
The /boot
directory contains the files needed to successfully start the computer during the boot process. As such the /boot
directory contains information that is accessed before the Linux kernel begins running the programs and process that allow the operating system to function.
/boot
directory contains the files needed to successfully start the computer during the boot process. As such the /boot
directory contains information that is accessed before the Linux kernel begins running the programs and process that allow the operating system to function.
/dev
The /dev
directory holds device files that represent physical devices attached to the computer such as hard drives, sound devices and communication ports as well as ‘logical’ devices such as a random number generator and /dev/null
which will essentially discard any information sent to it. This directory holds a range of files that strongly reinforces the Linux precept that Everything is a file.
/dev
directory holds device files that represent physical devices attached to the computer such as hard drives, sound devices and communication ports as well as ‘logical’ devices such as a random number generator and /dev/null
which will essentially discard any information sent to it. This directory holds a range of files that strongly reinforces the Linux precept that Everything is a file.
/etc
The /etc
directory contains configuration files that control the operation of programs. It also contains scripts used to startup and shutdown individual programs.
/etc
directory contains configuration files that control the operation of programs. It also contains scripts used to startup and shutdown individual programs.
/etc/cron.d
The /etc/cron.d
, /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
directories contain scripts which are executed on a regular schedule by the crontab process.
/etc/cron.d
, /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
directories contain scripts which are executed on a regular schedule by the crontab process.
/etc/rc?.d
The /rc0.d
, /rc1.d
, /rc2.d
, /rc3.d
, /rc4.d
, /rc5.d
, /rc6.d
, /rcS.d
directories contain the files required to control system services and configure the mode of operation (runlevel) for the computer.
/rc0.d
, /rc1.d
, /rc2.d
, /rc3.d
, /rc4.d
, /rc5.d
, /rc6.d
, /rcS.d
directories contain the files required to control system services and configure the mode of operation (runlevel) for the computer.
/home
Because Linux is an operating system that is a ‘multi-user’ environment, each user requires a space to store information specific to them. This is done via the /home
directory. For example, the user ‘pi’ would have /home/pi
as their home directory.
/home
directory. For example, the user ‘pi’ would have /home/pi
as their home directory.
/lib
The /lib
directory contains shared library files that supports the executable files located under /bin
and /sbin
. It also holds the kernel modules (drivers) responsible for giving Linux a great deal of versatility to add or remove functionality as needs dictate.
/lib
directory contains shared library files that supports the executable files located under /bin
and /sbin
. It also holds the kernel modules (drivers) responsible for giving Linux a great deal of versatility to add or remove functionality as needs dictate.
/lost+found
The /lost+found
directory will contain potentially recoverable data that might be produced if the file system undergoes an improper shut-down due to a crash or power failure. The data recovered is unlikely to be complete or undamaged, but in some circumstances it may hold useful information or pointers to the reason for the improper shut-down.
/lost+found
directory will contain potentially recoverable data that might be produced if the file system undergoes an improper shut-down due to a crash or power failure. The data recovered is unlikely to be complete or undamaged, but in some circumstances it may hold useful information or pointers to the reason for the improper shut-down.
/media
The /media
directory is used as a directory to temporarily mount removable devices (for example, /media/cdrom
or /media/cdrecorder
). This is a relatively new development for Linux and comes as a result of a degree of historical confusion over where was best to mount these types of devices (/cdrom
, /mnt
or /mnt/cdrom
for example).
/media
directory is used as a directory to temporarily mount removable devices (for example, /media/cdrom
or /media/cdrecorder
). This is a relatively new development for Linux and comes as a result of a degree of historical confusion over where was best to mount these types of devices (/cdrom
, /mnt
or /mnt/cdrom
for example).
/mnt
The /mnt
directory is used as a generic mount point for filesystems or devices. Recent use of the directory is directing it towards it being used as a temporary mount point for system administrators, but there is a degree of historical variation that has resulted in different distributions doing things different ways (for example, Debian allocates /floppy
and /cdrom
as mount points while Redhat places them in/mnt/floppy
and /mnt/cdrom
respectively).
/mnt
directory is used as a generic mount point for filesystems or devices. Recent use of the directory is directing it towards it being used as a temporary mount point for system administrators, but there is a degree of historical variation that has resulted in different distributions doing things different ways (for example, Debian allocates /floppy
and /cdrom
as mount points while Redhat places them in/mnt/floppy
and /mnt/cdrom
respectively).
/opt
The /opt
directory is used for the installation of third party or additional optional software that is not part of the default installation. Any applications installed in this area should be installed in such a way that it conforms to a reasonable structure and should not install files outside the /opt
directory.
/opt
directory is used for the installation of third party or additional optional software that is not part of the default installation. Any applications installed in this area should be installed in such a way that it conforms to a reasonable structure and should not install files outside the /opt
directory.
/proc
The /proc
directory holds files that contain information about running processes and system resources. It can be described as a pseudo filesystem in the sense that it contains runtime system information, but not ‘real’ files in the normal sense of the word. For example the/proc/cpuinfo
file which contains information about the computers cpus is listed as 0 bytes in length and yet if it is listed it will produce a description of the cpus in use.
/proc
directory holds files that contain information about running processes and system resources. It can be described as a pseudo filesystem in the sense that it contains runtime system information, but not ‘real’ files in the normal sense of the word. For example the/proc/cpuinfo
file which contains information about the computers cpus is listed as 0 bytes in length and yet if it is listed it will produce a description of the cpus in use.
/root
The /root
directory is the home directory of the System Administrator, or the ‘root’ user. This could be viewed as slightly confusing as all other users home directories are in the /home
directory and there is already a directory referred to as the ‘root’ directory (/
). However, rest assured that there is good reason for doing this (sometimes the /home
directory could be mounted on a separate file system that has to be accessed as a remote share).
/root
directory is the home directory of the System Administrator, or the ‘root’ user. This could be viewed as slightly confusing as all other users home directories are in the /home
directory and there is already a directory referred to as the ‘root’ directory (/
). However, rest assured that there is good reason for doing this (sometimes the /home
directory could be mounted on a separate file system that has to be accessed as a remote share).
/sbin
The /sbin
directory is similar to the /bin
directory in the sense that it holds binary executables / commands, but the ones in /sbin
are essential to the working of the operating system and are identified as being those that the system administrator would use in maintaining the system. Examples of these commands are fdisk, shutdown, ifconfig and modprobe.
/sbin
directory is similar to the /bin
directory in the sense that it holds binary executables / commands, but the ones in /sbin
are essential to the working of the operating system and are identified as being those that the system administrator would use in maintaining the system. Examples of these commands are fdisk, shutdown, ifconfig and modprobe.
/srv
The /srv
directory is set aside to provide a location for storing data for specific services. The rationale behind using this directory is that processes or services which require a single location and directory hierarchy for data and scripts can have a consistent placement across systems.
/srv
directory is set aside to provide a location for storing data for specific services. The rationale behind using this directory is that processes or services which require a single location and directory hierarchy for data and scripts can have a consistent placement across systems.
/tmp
The /tmp
directory is set aside as a location where programs or users that require a temporary location for storing files or data can do so on the understanding that when a system is rebooted or shut down, this location is cleared and the contents deleted.
/tmp
directory is set aside as a location where programs or users that require a temporary location for storing files or data can do so on the understanding that when a system is rebooted or shut down, this location is cleared and the contents deleted.
/usr
The /usr
directory serves as a directory where user programs and data are stored and shared. This potential wide range of files and information can make the /usr
directory fairly large and complex, so it contains several subdirectories that mirror those in the root (/
) directory to make organisation more consistent.
/usr
directory serves as a directory where user programs and data are stored and shared. This potential wide range of files and information can make the /usr
directory fairly large and complex, so it contains several subdirectories that mirror those in the root (/
) directory to make organisation more consistent.
/usr/bin
The /usr/bin
directory contains binary executable files for users. The distinction between /bin
and /usr/bin
is that /bin
contains the essential commands required to operate the system even if no other file system is mounted and /usr/bin
contains the programs that users will require to do normal tasks. For example; awk
, curl
, php
, python
. If you can’t find a user binary under /bin
, look under /usr/bin
.
/usr/bin
directory contains binary executable files for users. The distinction between /bin
and /usr/bin
is that /bin
contains the essential commands required to operate the system even if no other file system is mounted and /usr/bin
contains the programs that users will require to do normal tasks. For example; awk
, curl
, php
, python
. If you can’t find a user binary under /bin
, look under /usr/bin
.
/usr/lib
The /usr/lib
directory is the equivalent of the /lib
directory in that it contains shared library files that supports the executable files for users located under /usr/bin
and /usr/sbin
.
/usr/lib
directory is the equivalent of the /lib
directory in that it contains shared library files that supports the executable files for users located under /usr/bin
and /usr/sbin
.
/usr/local
The /usr/local
directory contains users programs that are installed locally from source code. It is placed here specifically to avoid being inadvertently overwritten if the system software is upgraded.
/usr/local
directory contains users programs that are installed locally from source code. It is placed here specifically to avoid being inadvertently overwritten if the system software is upgraded.
/usr/sbin
The /usr/sbin
directory contains non-essential binary executables which are used by the system administrator. For example cron
anduseradd
. If you can’t locate a system binary in /usr/sbin
, try /sbin
.
/usr/sbin
directory contains non-essential binary executables which are used by the system administrator. For example cron
anduseradd
. If you can’t locate a system binary in /usr/sbin
, try /sbin
.
/var
The /var
directory contains variable data files. These are files that are expected to grow under normal circumstances For example, log files or spool directories for printer queues.
/var
directory contains variable data files. These are files that are expected to grow under normal circumstances For example, log files or spool directories for printer queues.
/var/lib
The /var/lib
directory holds dynamic state information that programs typically modify while they run. This can be used to preserve the state of an application between reboots or even to share state information between different instances of the same application.
/var/lib
directory holds dynamic state information that programs typically modify while they run. This can be used to preserve the state of an application between reboots or even to share state information between different instances of the same application.
/var/log
The /var/log
directory holds log files from a range of programs and services. Files in /var/log
can often grow quite large and care should be taken to ensure that the size of the directory is managed appropriately. This can be done with the logrotate
program.
/var/log
directory holds log files from a range of programs and services. Files in /var/log
can often grow quite large and care should be taken to ensure that the size of the directory is managed appropriately. This can be done with the logrotate
program.
/var/spool
The /var/spool
directory contains what are called ‘spool’ files that contain data stored for later processing. For example, printers which will queue print jobs in a spool file for eventual printing and then deletion when the resource (the printer) becomes available.
/var/spool
directory contains what are called ‘spool’ files that contain data stored for later processing. For example, printers which will queue print jobs in a spool file for eventual printing and then deletion when the resource (the printer) becomes available.
/var/tmp
The /var/tmp
directory is a temporary store for data that needs to be held between reboots (unlike /tmp
).
/var/tmp
directory is a temporary store for data that needs to be held between reboots (unlike /tmp
).
No comments:
Post a Comment