Linux
1.Linux系统目录结构
树状目录结构
- /bin:是二进制文件(Binaries)的缩写,这个目录存放着最经常使用的命令。
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件及镜像文件。
- /dev:是设备Device的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc:是Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录是以用户的账号命名的。
- /lib:是Library(库)的缩写,这个目录里放着最基本的动态连接共享库,其作用类似于Windows的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /mnt:系统系统该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt上,然后进入该目录就可以查看光驱里的内容了。
- /opt是optional(可选)的缩写,这是给主机额外安装软件所摆放的目录。比如,安装一个ORACLE数据库则就可以放在这个目录下,默认是空的。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- 10./sys:这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的文件系统sysfs。sysfs文件系统集成了下面三种文件系统的信息:针对进程信息的proc文件系统,针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
- /tmp:是temporary(临时)的缩写,这个目录是用来存放一些临时文件的。
- /usr:是unix shared resources(共享资源)的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都被放在这个目录下,类似于windows下的program files目录。
- /var:是variable(变量)的缩写,这个目录中存放着不断扩充着的东西,我们习惯性将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删除或清除。如果你的系统上有/var/run目录,应该让它指向run
在Linux中,有几个目录比较重要,平时需要注意不要误删除或着随意更改内部的文件。
/etc:这是系统中的配置文件,如果更改了该目录下的某个文件可能会导致系统不能启动。
/bin,/sbin,/usr/bin,/usr/sbin:这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下的。值得注意的是/bin,/usr/bin是给系统用户使用的命令(除root外的通用用户),而/sbin,/usr/sbin则是给root使用的指令。
/var:这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就会被记录到这个目录下,具体在/var/log目录下,另外mail的预设放置也在这里。
在Linux或Unix操作系统中,所有的文件和目录都被组织成一个以根结点开始的倒置的树状结构。
文件系统的最顶层是以根目录开始的,系统使用/来表示根目录。在根目录之下的既可以是目录也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。在Linux中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点.来表示,另一个是当前目录的上一级目录,也叫父目录,可以使用两个点…来表示。
- . :代表当前的目录,也可以使用./来表示
- … :代表上一级目录,也可以使用…/来表示。
如果 目录或文件是以一个点.开始,代表这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
2.常用命令
- ls:显示目录下的文件
(1) -a:显示隐藏文件
(2)-l:显示详细内容
(3)-S:显示文件大小排序 - cat:
(1) 可以一次查看多个文件的内容,下面的内容会先打印file1的内容然后打印file2的内容 cat file1 file2
(2) -n 命令可以在每行的前面加上行号:cat -n /etc/logrotate.conf - find
(1) 查找指定文件名的文件(不区分大小写):find -iname “MyProgram.c”
(2) 对找到的文件执行某个命令:find -iname “MyProgram.c” -exec md5sum {} ;
(3)找到home目录下所有的空文件:find ~ -empty - ln: ln [options] source dist
(1)-s:进行软连接 - mv:
(1) 将file1 重命名为file2,如果file2存在则提示是否覆盖:mv -i file1 file2
(2) -v 会输出命名的过程,当文件名中包含通配符时,这个选项会非常方便 mv -v file1 file2 - rm
(1)删除文件前先确认:rm -i filename.txt
(2) 递归删除文件夹下所有文件,并删除该文件夹: rm -r example - cp
(1) 拷贝file1 到file2 ,并保持文件的权限、属主和时间戳:cp -p file1 file2
(2) 拷贝file1 到file2,如果file2存在会提示是否覆盖:cp -i file1 file2 - pwd:输出当前工作目录
- cd:在最近工作的两个目录间进行切换
- mkdir:
(1)在home 目录下创建一个名为temp的目录:mkdir ~/temp
(2) 使用-p选项可创建一个路径上所有目录都不存在的目录 : mkdir -p /dir1/dir2/dir3/ - tail:
(1) 默认显示文件的最后的10行文本:tail filename.txt
(2) 可以使用-n选项指定要显式的行数:tail -n N filename.txt
(3) 可以使用-f 选项进行实时查看,这个命令执行后会等待,如果有新行添加到文件尾部,它会继续输出新的行,在查看日志时这个选项会非常有用。可以通过ctrl -c 终止命令的执行:tail -f log.file - grep:
(1) 在文件中查找字符串(不区分大小写):grep -i “the” demo_file
(2) 在一个文件夹中递归查询包含指定字符串的文件:grep -r “ramesh” * - su:用于切换用户账号
- df:显式文件系统的磁盘使用情况,默认情况下使用df -k 将以字节为单位输出磁盘的使用量;使用df -h 可以以更符合阅读习惯的方式显式磁盘使用情况
- chmod:
(1) 用于改变文件和目录的权限
(2) 给指定文件的属主和属组所有权限(包括读、写、执行):chmod ug+rwx filename
(3) 修改目录的权限,以及递归修改目录下所有文件和子目录的权限:chmod -R ug+rwx file.txt - ping:测试某个地址能否连接
- curl :测试某个url是否可以访问
- ifconfig:
(1) 用于查看和配置Linux系统的网络接口
(2) 查看所有网络接口及其状态:ifconfig -a - kill:用于终止一个进程。一般会先使用ps -ef 查找某个进程得到它的进程号,然后使用kill -9 进程号 来终止该进程。-9 表示强制终止指定进程,一般情况下只需使用 kill 进程编号
- top:监测系统状况,比如cpu,内存的使用,系统上正在运行的进程(load average:系统负载,就是进程队列的长度)
- shutdown:
(1) 关闭系统并立即关机 :shutdown -h now
(2) 重启:shutdown -r now - ps:
(1) 用于显示正在运行中的进程信息
(2) 查看当前正在运行的所有进程 : ps -ef | more - tar:用法 tar [-cxtzjvfpPN] 文件与目录
(1)-c :建立一个压缩文件 eg:tar -zcvf: 打包并压缩文件
(2)-x :解开一个压缩文件 eg: tar -xvf 解压压缩包 - free: 显式系统内存的使用情况,包括物理内存、交换内存和内核缓冲区内存
- vmstat:虚拟内存性能监控、CPU监控
常见面试题:
1.如何理解一切皆文件?
Linux中所有的内容都是以文件的形式保存和管理,包括一切软硬件。这样做明显的好处是,开发者仅需要一套API和开发工具即可调取Linux系统中绝大部分的资源。同时也带来不利之处,如果使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。