1. Linux 的目录结构

Linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。

  • /bin:存放着经常使用的命令。
  • /sbin:存放的是系统管理员使用的系统管理程序。
  • /home:存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般以用户的账号命名。
  • /root:超级权限者的用户主目录。
  • /lib:系统开机所需要的最基本的动态连接共享库,与 windows 里的 DLL 文件类似。
  • /lost + found:默认为空,当系统非法关机后,这里就存放了一些文件。
  • /etc:所有的系统管理所需要的配置文件和子目录
  • /usr:用户的很多应用程序和文件都放在这个下,类似于 windows 下的 program files 目录。
  • /boot:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /proc:这是一个虚拟的目录,是系统内存的映射,访问这个目录来获取系统信息。
  • /src:service 缩写,该目录存放一些服务启动之后需要提取的数据。
  • /sys:安装了 2.6 内核中新出现的一个文件系统。
  • /tmp:存放临时文件。
  • /dev:类似于 windows 的设备管理器,把所有的硬件用文件的形式存储。
  • /media:linux 系统会自动识别一些设备,例如 u 盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,可以将外部存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
  • /opt:该主机额外安装软件所摆放的目录。如安装 ORACLE 数据库就可放到该目录下。默认为空。
  • /usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序。
  • /var:习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
  • /selinux:类似360,是一种安全子系统它能控制程序只能访问特定文件。

2. vi 和 vim 的快速使用

三种模式:一般模式,插入模式,末行模式。

  1. 拷贝当前行 yy,拷贝当前行向下的 5 行 5yy,并粘贴 p。
  2. 删除当前行 dd,删除当前行向下的 5 行 5dd。
  3. 在文件中查找某个单词 [末行模式 /关键字 ,回车查找,输入 n 就是查找下一个]
  4. 设置文件的行号,取消文件的行号 [命令行下 :set nu 和 :set nonu]
  5. 到达文档最末行 G,最首行 gg。
  6. 撤销操作 u。
  7. 将光标移动到 20 行 shift+g.

3. 常用的关机&重启指令

  • shutdown -h now :立刻关机
  • shutdown -h 1 “1分钟,关机”:1 分钟后,关机
  • shutdown -r now:立刻重启
  • halt:立刻关机
  • reboot:立刻重启

在重启和关机前,通常需要先执行:sync(把内存中的数据,写入磁盘)。

4. 用户管理操作

  1. 添加用户 xiaoming: useradd xiaoming
  2. 添加用户 zhangsan 并指定家目录 /home/weishao : useradd -d /home/weishao zhangsan
  3. 给 xiaoming 添加密码: passwd xiaoming
  4. 删除用户 xiaoming,但保留家目录: userdel xiaoming (不保留家目录 -r)
  5. 查询 root 信息: id root
  6. 添加用户组 wudang: groupadd wudang
  7. 添加一个用户 zwj,直接将他指定到 wudang: useradd zwj -g wudang
  8. 将 zwj 用户修改到 shaolin: usermod -g shaolin zwj
  9. 删除用户组 wudang: groupdel wudang (删除前确保该用户组无用户)

5. 指定运行级别

  • 运行级别说明:
    • 0:关机
    • 1:单用户(类似安全模式,这个模式可以帮助我们找回 root 密码)
    • 2:多用户状态没有网路服务。
    • 3:多用户状态有网络服务(使用最多)
    • 4:系统未使用保留给用户
    • 5:图形界面
    • 6:系统重启

常用的运行级别是 3 和 5,要修改默认的运行级别可改文件

  • 如果要指定运行级别

    /etc/inittab 的 id:5:initdefault: 这一行中的数字 命令:init [0123456] https 协议

  • 应用实例

    • 通过 init 切换到运行级别 3 : init 3
    • 切换到运行级别 5: init 5
  • 如何找回 root 密码

    启动时->快速输入enter->输入e-> 进入到编辑界面-> 选择中间有kernel 项->输入e(edit)-> 在该行的最后写入 1 [表示修改内核,临时生效]-> 输入enter->输入b [boot]-> 进入到单用模式 【这里就可以做补救工作】

6. more 指令,less 指令,head 指令,tail 指令

  • more:more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
  • less:less指令用来分屏查看文件内容,在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
  • head:head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。
    • 查看文件前 5 行内容: head -n 5 文件
  • tail: tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
    • 实时追踪该文档的所有更新: tail -f 文件

7. 软链接和硬链接

软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径。

  • 在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录: **ln -s /root/ linkToRoot**
  • 删除软连接 linkToRoot: rm -rf linkToRoot

8. find 指令,grep 指令 和 管道符号

  • find: find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
    • 根据名称查找/home 目录下的hello.txt文件: find /home -name hello.txt
    • 查找/opt目录下,用户名称为 nobody的文件: find /opt -user nobody
    • 查找整个linux系统下大于10M的文件(+n 大于 -n小于 n等于): find / -size +10M
  • grep:grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
    • 请在 /etc/profile 文件中,查找 “if” 所在行,并且显示行号: **grep -n if /etc/profile**
    • 配合 管道 | 使用案例, 查看当前服务器有没有 sshd 服务在监听: **netstat -anp | grep sshd**

9. 常用压缩和解压缩

  • gzip 和 gunzip 指令
    • 将 /home下的 hello.txt文件进行压缩: gzip helo.txt
    • 将 /home下的 hello.txt.gz 文件进行解压缩: gunzip hello.txt.gz
  • zip 和 unzip 指令
    • 将 /home下的 所有文件进行压缩成 mypackage.zip: **zip -r mypackage.zip /home/**
    • 将 mypackge.zip 解压到 /opt/tmp 目录下: **unzip -d /opt/tmp mypackage.zip**
  • tar 指令
    • 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz: **tar -zcvf a.tar.gz a1.txt a2.txt**
    • 将myhome.tar.gz 解压到 /opt/tmp2目录下: **tar -zxvf myhome.tar.gz -C /opt/tmp2**
    • -c 产生.tar 打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件

10. 组管理和权限管理

  • 使用root 创建一个文件apple.txt ,然后将其所有者修改成 tom: chowm tom apple.txt
  • 使用root用户创建文件 orange.txt ,然后将这个文件所在组,修改到 police组: chgrp police orange.txt
  • 请将 /home/abc.txt 文件的所有者修改成 tom:chown tom /home/abc.txt
  • 将home下的所有文件和目录的所有者都改成 tom,将所在组改成police: chown -R tom:police /home/
  • 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林): chgrp -R shaolin /home/kkk

11. 定时任务调度

  • 任务调度:是指系统在某个时间执行的特定的命令或程序。
  • 任务调度分类:
    1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
    2. 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
  • 进行定时任务的设置:crontab -e[编辑crontab定时任务] -i[查询crontab] -r[删除当前用户所有的crontab任务]
  • 快速入门:
    • 设置任务调度文件:/etc/crontab
    • 设置个人任务调度,执行 crontab -e 命令,接着输入任务到调度文件,如:
      • /1 * * * * ls –l /etc/ > /tmp/to.txt
      • 意思是每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令

image.png

  • 实例:
    • 每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate.log 文件中 : 1 * * * * date >> /tmp/mydate.log

12. Linux 磁盘分区

Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘,对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,比如sdb1 [表示第2块scsi 硬盘的第1个分区]

  • 查看所有设备挂载情况: lsblk
  • 查询系统整体磁盘使用情况: df -h
  • 查询指定目录的磁盘使用情况,默认为当前目录: du -h /目录

    -s 指定目录占用大小汇总 -h:带计量单位 -a:含文件 —max-depth=1:子目录深度 -c:列出明细同时增加汇总值

    • 查询 /usr目录的磁盘占用情况,深度为1: du -ach --max-depth=1 /usr/
  • 实用指令
    • 统计/home文件夹下文件的个数: ls /home/ | grep "^-" | wc -l
    • 统计 /home 文件夹下目录的个数: ls /home/ | grep "^d" | wc -l
    • 统计 /home 文件夹下文件的个数,包括子文件夹里的: ls -lR /home/ | grep "^-" | wc -l
    • 以树状显示home目录结构: tree /home/

13. Linux 的网络配置

  1. 配置 ip 地址: vi /etc/sysconfig/network-script/ifcfg-eth0
  2. 配置主机名称: vi /etc/udev/rules.d/70-persistent-net.rules
  3. 修改 linux 的主机映射文件: vi /etc/syconfig/network

14. 进程管理

  • 显示所有的进程: ps -aux
  • 查看 sshd 进程: ps -aux | grep sshd
  • 终止远程登录服务sshd, 在适当时候再次重启sshd服务: kill -9 4352 service sshd restart

进程树 pstree

  • 查看进程树: pstree -p: 显示进程pid -u:显示进程的所属用户
  • 请用树状的形式显示进程的pid: pstree -p
  • 请用树状的形式进程的用户id: pstree -up

服务管理 :服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程。

  • 查看当前防火墙的状况: service iptables status (临时生效)

chkconfig指令:通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭

  • 显示当前系统所有服务的各个运行级别的运行状态: chkconfig --list
  • 请查看 sshd 服务的运行状态: chkconfig --list | grep sshd
  • 将 sshd 服务在运行级别 5 下设置为不自动启动: chkconfig --level 5 sshd off
  • 当运行级别为5时,关闭防火墙: chkconfig --level 5 iptables off
  • 在所有运行级别下,开启防火墙: chkconfig iptables on

动态监控进**程** :top在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)。

  • 如何监视特定用户:输入 top 命令,查看执行的进程,然后输入 u 回车,再输入用户名,即可。
  • 如何终止指定进程:输入 top 命令,查看执行的进程,然后输入 k 回车,再输入要结束的进程id号
  • 指定系统状态更新的时间(每隔10秒更新):输入 top 后,再输入 d 回车。
  • 查看内存占用情况,按占用内存大小排序:先按 top 命令然后按 大写的 M 键
  • 查看系统的运行时间和平均负载:uptimewtop命令的第一行
  • 每秒刷新一次获得当前的系统负载情况:watch -n 1 uptime

监控网络状态 :查看系统网络情况 netstat -an: 按一定顺序排列输出 -p:显示哪个进程在调用

  • 请查看服务名为 sshd 的服务的信息。: netstat -anp | grep sshd
  • 如果我们希望查看当前系统有哪些端口在监听: netstat -tlnp

磁盘读写

  • 查看当前系统进程的磁盘读写情况: iotop
  • 直接查看输出比较高的磁盘读写程序: iotop -o

15. rpm 包 和 yum

rp**m 包** :一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。

  • 查看所安装的所有 rpm 软件包: rpm -qa
  • 查看软件包是否安装: rpm -q firefox
  • 查询软件包信息: rpm -qi file
  • 查询软件包中的文件: rpm -ql firefox
  • 查询文件所属的软件包: rpm -qf /etc/passwd
  • 卸载软件包: rpm -e firefox
    • 注意:如果其他软件包依赖于要卸载的,则卸载时会产生错误。 强制删除: rpm -e --nodeps firefox
  • 安装 rpm 包: rpm -ivh firefox i:安装 v:提示 h:进度条

yum 的使用 :是一个 Shell 软件包管理器,基于 rpm 包管理,能够从指定的服务器自动下载 rpm 包并且按照,可以自动处理依赖性关系,并且一次按照所有依赖的软件包。

  • 查询 yum 服务器是否有需要按照的软件: yum list || grep xx软件列表
  • 安装 firefox: yum install firefox