LInux学习(一)

文章目录

Linux 系统识别

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

一、四种基本文件系统

linux有四种基本文件系统类型:
–普通文件:如文本文件、c语言源代码、shell脚本等,可以用cat、less、more、vi等来察看内容,用mv来改名;
–目录文件:包括文件名、子目录名及其指针,可以用ls列出目录文件;
–链接文件:是指向一索引节点的那些目录条目,用ls来查看时,链接文件的标志用l开头,而文件后以"->"指向所链接的文件;
–特殊文件:如磁盘、终端、打印机等都在文件系统中表示出来,常放在/dev目录内;
可以用file命令来识别。
在这里插入图片描述

1.1、文件路径

linux系统中,所有的文件与目录都是由根目录**/**开始,不是以/开头的就是相对路径;
.:表示当前目录,也可以用./表示;
…:表示上一级目录,也可以用…/表示;
~:代表用户自己的宿主目录;

/ :根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。

/bin:系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。

/boot:这个目录主要在放置开机会使用到的文件,包括Linux核心文件以及开机选单与开机所需配置文件等等。

/dev 在Linux系统上,任何装置与接口设备都是以文件的型态存在于这个目录当中的。

/etc 系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、 各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有root有权力修改。

/home 这是系统默认的用户家目录(home directory)。在你新增一个一般使用者账号时, 默认的用户家目录都会规范到这里来。

/lib:系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库, 以及在/bin或/sbin底下的指令会呼叫的函式库而已。 什么是函式库呢?妳可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程序的执行之意。

/media:media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦! 包括软盘、光盘、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom等等。

/mnt:如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。 在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。

/opt 这个是给第三方协力软件放置的目录。

/root 系统管理员(root)的家目录。

/sbin:Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他用户最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序。

/srv srv可以视为『service』的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。

/tmp 这是让一般使用者或者是正在执行的程序暂时放置文件的地方。 这个目录是任何人都能够存取的,所以你需要定期的清理一下。
/lost+found 这个目录是使用标准的ext2/ext3文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时, 将一些遗失的片段放置到这个目录下。

/proc 这个目录本身是一个『虚拟文件系统(virtual filesystem)』喔!他放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等等。

/sys 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记录与核心相关的信息。 包括目前已加载的核心模块与核心侦测到的硬件装置信息等等。

1.2、四种交互作用的形态

可分享的(shareable) 不可分享的(unshareable)
不变的(static) /usr (软件放置处) /etc (配置文件)
/opt (第三方协力软件) /boot (开机与核心档)
可变动的(variable) /var/mail (使用者邮件信箱) /var/run (程序相关)
/var/spool/news (新闻组) /var/lock (程序相关)

上表中的目录就是一些代表性的目录,该目录底下所放置的数据在底下会谈到,这里先略过不谈。 我们要了解的是,什么是那四个类型?
可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
不变的:有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

二、目录详解

2.1、/

处于Linux文件系统树形结构的最顶端,我们称它为Linux文件系统的root,它是Linux文件系统的入口。所有的目录、文件、设备都在/之下,它是Linux文件系统最顶层的唯一的目录;
        一般建议在根目录下面只有目录,不要直接存放文件;根目录是linux系统启动时系统第一个载入的分区,所以启动过程中用到的文件应该都放在这个分区中,其中/etc、/bin、/dev、/lib、/sbin这5个子目录都应该要与根目录连在一起,不可独立成为某个分区;
/bin:存放所有用户都可以使用的linux基本操作命令;(目录中多是可执行的二进制文件)
/dev:设备文件目录,虚拟文件系统,主要存放所有系统中device的相关信息,不论是使用的或未使用的设备,只要有可能使用到,就会在/dev中建立一个相对应的设备文件;设备文件分为2种类型:        字符设备文件和块设备文件(目录中基本上都是设备文件,如硬盘设备文件/dev/sda)
        /dev/console:系统控制台,也就是直接和系统连接的监视器;
        /dev/hd:IDE设备文件;
        /dev/sd:sata、usb、scsi等设备文件;
        /dev/fd:软驱设备文件;
        /dev/tty:虚拟控制台设备文件;
        /dev/pty:提供远程虚拟控制台设备文件;
        /dev/null:所谓"黑洞",所有写入该设备的信息都将消失,如当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到/dev/null中即可;

2.3、/home

默认存放用户的宿主目录(除了root用户)
        /home/~/.bashrc:提供bash环境中所需使用的别名;
        /home/~/.bash_profile:提供bash环境所需的变量;一般先执行.bashrc后,才会再执行.bash_profile;
        /home/~/.bash_history:用户历史命令文件,记录用户曾经输入过的所有命令;(默认为1000条,可以通过HISTSIZE变量更改)
        /home/~/.bash_logout:当用户注销的同时,系统会自动执行.bash_logout文件,如果管理员需要记录用户注销的一些额外记录、动作或其他信息,就可以利用这个机制去完成;

2.4、/lost+found

当系统在运行时,有时会无法避免宕机、断电或不正常重启动,在这样的情况下,当系统重新启动时,发现某些文件写入未完成或其他问题产生,一般会使用fsck进行文件修复,而这些被修复或救回的文件,就会被放在这个目录下,只要是一个文件系统,系统就会自动在该文件系统所在的目录下建立"lost+found"目录。

2.5、/misc

自动挂载服务目录,对应autofs服务;

2.6、/proc

虚拟文件系统,此目录是kernel加载后,在内存里面建立的一个虚拟目录,有专属的文件系统,主要提供系统一些实时的信息,此目录下不能建立和删除文件;(某些文件可以修改)
        /proc主要作用可以整理为:
        --整理系统内部的信息;
        --存放主机硬件信息;
        --调整系统执行时的参数;
        --检查及修改网络和主机的参数;
        --检查及调整系统的内存和性能;
        /proc下常用的信息文件有:
        /proc/cpuinfo:cpu的硬件信息,如类型、厂家、型号和性能等
        /proc/devices:记录所有在/dev目录中相关的设备文件分类方式
        /proc/filesystems:当前运行内核所配置的文件系统
        /proc/interrupts:可以查看每一个IRQ的编号对应到哪一个硬件设备
        /proc/loadavg:系统"平均负载",3个数据指出系统当前的工作负载
        /proc/dma:当前正在使用的DMA通道 
        /proc/ioports:将目前系统上所有可看到的硬件对应到内存位置的分配表的详细信息呈现出来
        /proc/kcore:系统上可以检测到的物理内存,主机内存多大,这个文件就有多大
        /proc/kmsg:在系统尚未进入操作系统阶段,把加载kernel和initrd的信息先记录到该文件中,后续会将日志信息写入/var/log/message文件中
        /proc/meminfo:记录系统的内存信息
        /proc/modules:与lsmod命令查看到的模块信息完全一致
        /proc/mtrr:负责内存配置的机制
        /proc/iomem:主要用于储存配置后所有内存储存的明细信息
        /proc/partitions:这个文件可以实时呈现系统目前看到的分区
        /proc/数字目录:数字目录很多,它们代表所有目前正在系统中运行的所有程序
        /proc/bus:有关该主机上现有总线的所有信息,如输入设备、PCI接口、PCMCIA扩展卡及USB接口信息
        /proc/net目录:存放的都是一些网络相关的虚拟配置文件,都是ASCII文件,可以查看(与ifconfig、arp、netstat等有关)
        /proc/scsi:保存系统上所有的scsi设备信息(包括sata和usb设备的信息)
        /proc/sys目录:存放系统核心所使用的一些变量,根据不同性质的文件而存放在不同的子目录中,可以通过/etc/sysctl.conf文件设置和更改其默认值;变量时实时的变更,有很多设置很象是开关,设置后马上生效;
        /proc/tty:存放有关目前可用的正在使用的tty设备的信息
        /proc/self:存放到查看/proc的程序的进程目录的符号连接,当2个进程查看proc时,这将会是不同的连接;主要便于程序得到它自己的进程目录;
        /proc/stat:系统的不同状态信息;
        /proc/uptime:系统启动的时间长度;
        /proc/version:系统核心版本;

2.7、/sbin

系统管理相关的二进制文件存放在这个目录下,一些可执行文件普通用户只具备较小的权限;(多数管理命令默认只有管理员可以使用)
/srv:默认为空,主要用于存放一些软件的配置文件,某些软件可能会把配置文件默认存放在这个目录下,多数都是/etc目录下,此目录没有被具体的定义;
/tftpboot:远程启动tftpserver的根目录,这个目录只有安装了tftp-server软件后才会产生;

2.8、/usr

安装除操作系统本身外的一些应用程序或组件,一般可以认为linux系统上安装的应用程序默认都安装在此目录中;
        /usr/bin:一般用户有机会使用到的程序,或者该软件默认就是要让所有用户使用才会放在该目录中;
        /usr/sbin:一些系统有可能会用到的系统命令,与/sbin比起来,都是一些较次要的文件;
        /usr/etc:自行安装或非系统主要的配置文件目录;
        /usr/games:只要是电脑游戏相关的软件,就都安装到这个目录;
        /usr/include:存放的文件都是一些系统中用户所会使用到的C语言header文件,保存的都是".h"的文件;
        /usr/kerberos:kerberos是一种安全机制,让用户可以直接使用支持kerberos机制系统上的部分资源;
        /usr/lib:存放一些函数库、执行文件及连接文件,特别的是,存放在这里面的文件都是不希望直接被用户或shell脚本所使用的文件,在/usr/lib中有非常多的子目录,每一个软件都有其各自所需的函数库;
        /usr/libexec:这个目录下的文件及文件夹应该都可以放置在/usr/lib下;
        /usr/local:linux系统中安装的共享软件程序最好的方式是安装在/usr/local下,按照linux标准目录结构,新建立的软件都应该放在/usr/local下;
                /usr/local/bin:存放软件执行文件的目录;
                /usr/local/sbin:同样存放软件执行文件的目录,但此目录专门针对系统所使用的文件;
                /usr/local/lib:软件相关的函数库;
                /usr/local/share:当文件性质不好归属时就会放在此,man手册就放在这个目录下;
                /usr/local/src:所安装软件的源代码放置在此;
        /usr/share:此目录都是一些共享信息,最常被用到的就是/usr/share/man这个目录,/usr/share里的信息时跨平台的;
        /usr/share/doc:放置一些系统帮助文件的地方;
        /usr/share/man:manpage的文件存放目录,也是使用man查看手册页时查询的路径;
        /usr/src:主要储存内核源代码的文件;
        /usr/X11R6:存放一些X windows系统的相关文件;

2.9、/boot

存放开机启动加载程序的核心文件;(如kernel和grup)
        config-2.6.18-164.el5:系统kernel的配置文件,内核编译完成后保存的就是这个配置文件;
        lost+found:说明/boot是一个独立的ext3文件系统;
        vmlinuz-2.6.18-164.el5:系统使用kernel,非常重要;
        grub:多系统启动管理程序grub的目录,里面存放的都是grub在启动时所需要的画面、配置及各阶段的配置文件;其中grub.conf是grub的配置文件;
        symvers-2.6.18-164.el5.gz
        initrd-2.6.18-164.el5.img:此文件是linux系统启动时的模块供应主要来源,initrd的目的就是在kernel加载系统识别cpu和内存等核心信息之后,让系统进一步知道还有那些硬件是启动所必须使用的;
        System.map-2.6.18-164.el5:是系统kernel中的变量对应表;(也可以理解为是索引文件)        

2.10、/etc

主机、系统或网络配置文件存放目录;
        简单的将/etc目录分为以下几类:
        --基本文件:所有直接放在/etc目录下的文件归类为基本文件;
                aliases:用于设置邮件别名;
                auto.*:代表的是一系列autofs服务所需要的配置文件,这个服务主要是让管理员可以事先定义出一些网络、本机或光驱等默认的路径;
                auto.master:负责规划目录的分配与使用,目前默认提供三种自动挂载模式;
                auto.misc:文件中的配置都以实体连接本机的磁盘驱动器为主;
                auto.net:并不是一个配置文件,而是一个脚本文件,在使用上其实不须做任何调整;;
                auto.smb:与auto.net一样,都是以个脚本文件;
                bashrc:用户登录功能配置,全局配置,对所有用户生效,主要配置别名;
                profile:与系统环境配置或初始化软件的相关配置,全局配置,对所有用户生效,主要配置变量;
                DIR_COLORS:用于配置ls命令的颜色,主要针对tty登录的用户;
                DIR_COLORS.xterm:用于配置ls命令的颜色,主要针对xterm登录的用户;
                fstab:系统启动时自动挂载文件系统的配置文件;
                inittab:启动时系统所需要的第一个配置文件;也即是init进程的配置文件;
                issue:用户本机登录时,看到的欢迎信息;
                issue.net:用户网络登录时,看到的欢迎信息;
                ld.so.conf:包含ld.so.conf.d/*.conf配置;主要是ld.so.conf.d/*.conf目录的作用;
                localtime:系统所使用的时区对应的配置文件;对应的时区文件都存在于/usr/share/zoneinfo/
                motd:登录成功的用户显示的信息对应的配置文件;
                mtab:可以当做是检查当前文件系统挂载情况的配置文件;与mount命令结果一致;
                prelink.conf:定义哪些执行文件和函数库是需要预先连接的;
                securetty:主要是login程序在使用的,只要是列在该文件中的接口,就表示是可以使用的接口,相反,若从列表中删除,则无法使用该接口;
                shells:记录目前系统所拥有shell种类的路径,通过cssh命令使用;
                sudoers:sudo命令对应的配置文件,用于配置权限的分配方式;
                sysctl.conf:主要是帮助用户配置/proc/sys目录下所有文件的值,与sysctl命令对应;
                syslogd.conf:是syslogd服务的配置文件
                host.conf:主机名解析配置文件,主要说明解析的方式及顺序;
                hosts:主机名解析配置文件,主要列出所有需要本地解析的主机名与IP地址的对应关系;
                hosts.allow和hosts.deny:linux网络安全机制TCP Wrapper对应的配置文件;
                nsswitch.conf:主要记录系统应如何查询主机名、密码、用户组、网络等,或是查询顺序的编排;
                resolv.conf:记录DNS服务器地址,用于DNS域名解析;
                services:定义了网络服务的默认端口号;
                xinetd.conf:xinetd的主配置文件,目的是为xinetd.d下的所有子服务建立一个标准的规范使其可以遵循;
                anacrontab:属于一种任务计划软件的配置文件,anacrontab软件和crond其实有点相辅相成,crond负责任务计划,而anacrontab则是负责以"间隔多久"为主要的目标;
                at.deny:该文件属于拒绝列表,只要被记录在其中的用户,就无法使用at所提供的任务计划服务;
                at.allow:与at.deny刚好相反;
                crontab:crontab的主配置文件,crond默认会执行的文件可以参考此配置文件;
                cron.deny:该文件属于拒绝列表,只要被记录在其中的用户,就无法使用crond所提供的任务计划服务;
                cron.allow:与cron.deny刚好相反;
                exports:是NFS服务的主配置文件,主要目的就是将本机的目录共享到网络上,供其他人使用;
                group与gshadow:用户组配置文件,group主要保存用户组信息,gshadow主要保存群组密码;
                login.defs:设置系统在建立账号时所参考的配置;
                passwd:主要保存系统用户账号的信息;
                shadow:linux系统通常包经过"hash"处理后的密码存储在这个文件中;
                protocols:通信协议对应端口号的一个对照表,包含协议名称、协议号码、注释等;
                wgetrc:wget程序对应的配置文件,其中有quota、mail header、重传文件的预设次数、firewall和proxy等相关设置;
                init.d:RHEL中所有服务的默认启动脚本都存放在这里;这个是链接文件,链接到/etc/rc.d/init.d;
                csh.cshrc和csh.login: 用户启动c shells执行的初始化配置文件;
                printcap:linux系统中打印机设备对应的配置文件;
        --服务器目录:如samba、http、vsftpd等服务器配置相关目录;
                cups:linux下的打印机服务器,目录下存放的是打印机服务的配置文件;
                dnsmasq.d:dnsmasq是一种DNS的"轻薄机种",转为区域或小型网络所设计,拥有比一般DNS更为方便简易的配置;
                httpd:apache网页服务器的配置文件所在目录;
                mail:Mail Server组件的主要配置目录,如sendmail;
                ntp:网络时间服务器的配置目录,其主要配置文件为/etc/ntp.conf;
                openldap:目录明显是LDAP的配置目录,软件名称为OpenLDAP;
                postfix:postfix组件所提供的主要配置文件目录;
                samba:文件共享服务samba的主要配置文件目录;
                smrsh:这是sendmail为了限制用户可使用的命令设计的程序,将原本用户所使用的/bin/sh替换为/usr/sbin/smrsh;
                snmp:简单网络管理软件的配置文件目录,存在snmpd.conf主配置文件;
                squid:这是linux下的代理服务器squid的配置文件目录,主配置文件是squid.conf;
                ssh:SSH服务的主要配置目录,主配置文件是sshd_config;
                vsftpd:vsftpd服务器的主要配置目录,主配置文件是vsftpd.conf;
                xinetd.d:xinetd是一个管理多个服务的daemon,这个目录下列出的服务都是由xinetd进程管理的,其主配置文件是/etc/xinetd.conf;
        --系统目录:如sysconfig、xen或网络配置等与系统运行相关的目录;
                blkid:此目录所存放的其实是一个块设备ID的临时文件,主要是记录系统中所有区块设备的标签名称、硬件的唯一识别码、文件系统的格式等基本信息;
                bluetooth:linux下使用蓝牙设备所需的配置文件;启动蓝牙检测的主要服务仍是/etc/rc.d/init.d/bluetooth,该程序使用的是hcid.conf配置文件;
                cron.X:cron.X的目录都是给cron软件存放其需要任务计划的文件所使用的,按任务计划时间的长短及配置特性分为cron.d、cron.daily、cron.hourly、cron.monthly、cron.weekly五个主要目录;
                dbus-1:D-BUS的主要配置目录,D-BUS也是一种IPC交流的方式;
                default:这里是存放一些系统软件默认值的目录,存放某些软件执行时的基本参数;
                firmware:这个目录所存放的东西是非常底层的信息,是CPU所需的microcode的实体文件;
                foomatic:与打印机相关的配置目录,实现打印一对多的方式,在foomatic中,可以记录多条打印机数据,让用户只在使用前先行配置所有需要使用的打印机即可;
                hal:全名Hardware Abstraction Layer,是linux一种管理硬件的机制,它会帮所有的应用程序或用户搜集所有PCI及USB等硬件信息,因此,用户可以很简单并实时地通过HAL的方式取得硬件的相关数据;
                isdn:ISDN服务的主要配置目录,里面包含可拨号的用户、电话、联机方式等;
                ld.so.conf.d:这个目录是ldconfig所使用的,更准确的说,它是由/etc/ld.so.conf文件所决定的;ldconfig命令的目的在于将系统中的一些函数库预先存放到内存中,让系统使用时可以比以往通过硬盘的读取速度来的更快,这样可以大幅提高系统性能,尤其当要重复读取时更明显;ldconfig要将哪些函数库丢到内存中,则须看/etc/ld.so.conf文件中所记录的信息;
                logrotate.d:此目录对系统管理员来说,是十分重要的一个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值