Linux学习之基础理论

一.Linux目录结构

  • /bin 存放最常用的命令

  • /sbin super user 系统管理员使用的系统管理程序

  • /home 存放普通用户的主目录

  • /root 系统管理员,超级权限的用户主目录

  • /lib 系统开机所需要最基本的动态连接共享库,作用类似于windowx里的DLL文件。几乎所有的应用程序都需要这些共享库

  • /lost+found 一般是空的 当系统非法关机,就存放了一些文件

  • /etc 所有的系统管理所需要的配置文件和子目录

  • /user 用户很多应用程序和文件都存放在这个目录下,类似于windows下的program files

  • /boot 存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

  • /proc 虚拟的目录,是系统内存的映射,访问这个目录来获取系统信息

  • /srv service缩写,存放一些服务启动之后需要提取的数据

  • /sys 内存中新出现的一个文件系统

  • /tmp 存放临时文件

  • /dev 类似windows的设备管理器,,把所有的硬件用文件的形式存储

  • /media Linux会自动识别一些设备,例如U盘,当识别后,会把识别的设备挂载到这个目录下

  • /mnt 让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看里面的内容了

总结:

1.Linux的目录中有且只要一个根目录

2.Linux的各个目录存放的内容是规划好的,不能随便放

3.Linux是以文件的形式管理我们的设备,因此一切皆为文件

二.vim编辑器

命令行模式:

  • :q 没有做任何的修改,然后退出
  • :q! 修改了,然后退出,并且不保存本次修改
  • :wq 保存修改并退出

三. 开机&重启

  • shutdown
    • shutdown -h now 立即关机
    • shutdown -h 1 1分钟之后关机
    • shutdown -r now 立即重启
  • halt 等价于关机
  • reboot 重启
  • sync 把内存的数据同步到磁盘上(关机之前记得执行,以防数据丢失)

四.用户管理

4.1 用户登陆&注销

登录时少用root账号登录,可以利用普通用户登录,登录后再用su-用户名命令来切换成系统管理员身份

logout 注销用户

注意:logout注销指令在图形运行级别无效,在运行级别3下有效

1.Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先先向系统管理员申请一个账号,然后以这个账号的身份进入系统

2.Linux的用户需要至少属于一个组

  • 添加用户

    useradd 用户名

    当创建用户成功后,会自动的创建和用户名同名的家目录

    也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

  • 指定/修改密码

    passwd 用户名

  • 删除用户

    userdel 用户名

    • userdel 用户名

      删除用户,但是要保留家目录

    • userdel -r 用户名

      删除用户以及用户主目录

  • 查询用户信息

    id 用户名

    uid 用户id, gid 所在组的id , 组 组名

  • 切换用户

    su - 用户名

    当高权限用户向低权限用户切换的时候,不需要输入密码

    exit 返回到原来的用户

  • 查看当前用户/登录用户

    whoami/who am i

    用户组:系统对有共性的多个用户进行统一的管理

    新增组:groupadd 组名

    删除组:groupdel 组名

    添加用户时直接加上组:useradd -g 用户组 用户名

    更改组:usermod -g 新用户组 用户名

4.2 用户和组的配置文件
  • 用户配置文件(用户信息)

    /etc/passwd

  • 组配置文件(组信息)

    /etc/group

  • 口令配置文件(密码和登录信息,是加密的)

    /etc/shadow

五.实用指令

5.1 运行级别和找回root密码

运行级别:

  • 0 关机
  • 1 单用户【找回丢失密码】
  • 2 多用户状态没有网络服务
  • 3 多用户状态有网络
  • 4 系统未使用保留给用户
  • 5 图形界面
  • 6 系统重启

常用的运行级别是3和5。要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字(注意:这种方式在centos 7下不再使用,7里面等同于命令:systemctl islate xxx.target

切换命令:比如init 3,切换到3级别

案例:如何找回root密码

思路:进入到单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录

总结:开机–>在引导时输入 回车—》看到一个界面输入 e—>看到一个新的界面,选中第二行(编辑内核)在输入e—》在这行最后输入 1,再输入 回车—》再次输入b,这时就会进入到单用户模式。

这时就进入了单用户模式,使用passwd指令来修改root密码

问题:安全怎么保证?此操作必须到机房去实机操作,不能远程

5.2 帮助指令
  • man 获取帮助信息
    • 比如查看ls命令 输入man ls即可
  • help 获得shell内置命令的帮助信息
    • 比如查看cd 输入 help cd
  • 百度
5.3文件目录类指令
  • pwd 显示当前工作目录的绝对路径

  • ls [选项]

    • -a 显示当前目录所有的文件和目录,包括隐藏的
    • -l 以列表的方式显示信息
  • cd 切换目录

    • cd~ 或者cd:回到自己的家目录
    • cd.. 回到当前目录的上一级目录
  • mkdir 创建目录,默认只能一级一级创建

    • -p 创建多级目录
  • rmdir 删除空目录

    • 如果目录下有内容时 无法删除 要删除用rm -rf
  • touch 创建空文件,可以一次性创建多个文件

  • cp 拷贝文件到指定目录

    • cp [选项] source dest
    • -r 递归复制整个文件夹
    • \cp 强制覆盖 不会提示
  • rm 移除文件或目录

    • -r 递归删除
    • -f 强制删除不提示
  • mv 移动文件与目录 或重命名

    • mv oldname newname 重命名

    • 移动文件 将 /home/pig.txt 移动到 /root 下

      mv pig.txt /root/

  • cat 查看文件内容

    • -n 显示行号
    • 只能浏览不能修改,为了浏览方便,一般会带上管道命令 | more
  • more 文本过滤器,以全屏的方式按页显示文本文件的内容。

    • enter 一行一行走
    • 空格 一页一页走
    • ctrl+B 返回上一屏
    • crtl+F 向下滚动一屏
  • less 分屏查看文件内容,并不是一次将整个文件加载之后才显示,而是根据需要显示加载的内容,适用大型文件

    • 同样有很多快捷键,比如pageup 向上翻动一页。空格 向下翻一页
  • > 是输出重定向,覆盖写>> 追加

  • echo 输出内容到控制台

  • head 显示文件的开头部分内容,默认情况下显示文件的前10行

    • head -n 5 文件 查看文件头5行内容
  • tail 用于输出文件中尾部的内容 默认情况下tail指令显示 文件的后10行内容

    • tail -n 5 文件 查看文件后5行内容
    • tail -f 文件 实时追踪该文档的所有更新
  • ln 软链接又叫符号链接。类似windows里的快捷方式,主要存放了链接其他文件的路径

    • ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接
    • 当使用pwd查看目录时,仍然看到的是软链接所在目录
  • history 查看已经执行过历史命令,也可以执行历史指令

    • 执行历史指令的话 可以用!指令行号
5.4 时间日期类
  • date 显示当前时间
    • date “+%Y-%m-%d %H:%M:%S” 2021-6-9 12:25:05
  • date -s 字符串 设置日期
  • cal 显示日历
5.5 搜索查找类
  • find 从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录输出

    • find [搜索范围] [选项]

    • -user 文件的用户

    • -name 文件名

    • 案例:查找整个Linux系统下大于20m的文件(+n 大于 -n 小于 n 等于)

      find / -size +20M

  • locate 快速定位文件路径 无需遍历整个文件系统 查询速度较快 为了保证查询结果的准确性 管理员必须定期更新locate

    • locate 搜索文件

      由于locate指令基于数据库查询,所以第一次运行前,必须使用update指令创建locate数据库

  • grep 过滤查找 , 管道符“|”表示将前一个命令的处理结果输出传递给后面的命令操作

    • grep [选项] 查找内容 源文件

    • -n 显示匹配行及行号

    • -i 忽略大小写

    • 案例:输出文件hello.txt中“yes”所在的行号

      cat hello.txt | grep yes

5.6 压缩和解压缩类
  • gzip 用于压缩文件 gunzip 用于解压缩的

  • zip与unzip

    • zip压缩会保留原文件,gzip不会
  • tar 打包指令 既可以压缩,也可以解压

    • -c 产生.tar打包文件
    • -v 显示详细信息
    • -f 指定压缩后的文件名
    • -z 打包同时压缩
    • -x 解压.tar文件

六.组管理

在Linux中的每个用户必须属于一个组,不能独立于组外。

文件:

1.所有者

2.所在组

3.其他组。除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

6.1 文件/目录 所有者
  • ls -ahl 查看文件的所有者,所在组
  • chown 用户名 文件名 修改文件所有者
  • groupadd 组名 组的创建
6.2 文件/目录 所在组
  • chgrp 组名 文件名 修改文件所在组

    所有者和所在组同时改变:chown newowner:newgroup file

6.3 改变用户所在组
  • usermod -g 组名 用户名
  • usermod -d 目录名 用户名 改变该用户登陆的初始目录

七.权限管理

权限管理

7.1 rwx权限详解

(1)rwx作用到文件

  • [r] 可以读取,查看
  • [w] 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写的权限,才能删除该文件。
  • [x] 可以被执行

(2)rwx作用到目录

  • [r] 可以读取,ls查看目录内容
  • [w] 可以修改,目录内创建+删除+重命名目录
  • [x] 可以进入该目录
7.2 修改权限 chmod
  • 方式一:+,-,= 变更权限

    • 案例:给abc.txt的所有者rwx权限,给所在组rx权限,给其他组用户rx权限

      u:所有者 g:所在组 o:其他 a:所有人(u,g,o的总和)

      chmod u=rwx,g=rx,o=rx abc

  • 方式二:通过数字变更权限

    r=4 w=2 x=1 rwx=4+2+1=7

    chmod u=rwx,g=rx,o=x 文件目录名

    相当于 chmod 751 文件目录名

### 八.任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序

分类:

1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描

2.个别用户工作:个别用户可能希望执行某些程序。比如对mysql数据库的备份

8.1 crond 任务调度
  • crontab [选项]

    • -e 编辑crontab定时任务

    • -l 列出当前有哪些任务调度

    • -r 终止任务调度

    • service crond restar [重启任务调度]

    • 参数说明:5个占位符

      第一个* 一小时当中的第几分钟 0-59

      第二个* 一天当中的第几个小时 0-23

      第三个* 一个月当中的第几天 1-31

      第四个* 一年当中的第几个月 1-12

      第五个* 一周当中的星期几 0-7

      • 案例1:设置任务调度文件:/etc/crontab,设置个人任务调度,执行crontab -e命令,接着输入任务到调度文件,如:*/1****ls -l /etc/ > /tmp/to.txt

        每分钟执行ls -l /etc/ > /tmp/to.txt

      • 案例二 每隔一分钟,就将当前日期信息,追加到/tmp/mydate文件中

        ①先编写一个文件 /home/mytask1.sh

        写入date>>/tmp/mydate

        ②给mytask1.sh一个可以执行权限

        ③crontab -e

        */**** /home/mytask1.sh 每间隔一分钟去执行mytask1.sh

        1
        2
        3
        4
        5
        6
        7
        8
        cd /home/
        vim mytask1.sh
        写入 date >> /tmp/mydate
        ls -l
        chmod 744 mytask1.sh
        ls
        crontab -e
        写入 `*/**** /home/mytask1.sh`

九.磁盘分区及挂载

  • lsblk -f 查看系统的分区和挂载情况 (老师不离开)

    分区情况 分区类型 唯一标识分区的40位不重复的字符串 挂载点

  • 如何增加一块硬盘

    1.虚拟机添加硬盘

    2.分区 fdisk/dev/sdb

    3.格式化 mkfs -t ext4 /dev/sdb1

    4.挂载 先创建一个/home/newdisk ,挂载mount /dev/sdb1 /home/newdisk

    5.设置可以自动挂载(永久挂载,当你重启系统,仍然可以)

  • df -lh 查询系统整体磁盘使用情况

  • du -h /目录 查看指定目录的磁盘占用情况

案例:

1)统计/home 文件夹下文件的个数

ls -l /home | grep "^-" | wc -l

2)统计/home文件夹下目录的个数

ls -l /home | grep "^d" | wc -l

3)以树形结构显示文件

yum install tree

tree

十.进程管理

  • ps -ef 查看父进程 为0表示没有父进程
  • ps -aux 看到资源占有情况
  • kill [选项] 进程号 终止进程

案例:

1.踢掉某个非法登录用户

ps -aux | grep sshd —–查看进程号

kill 进程号

2.强制杀掉一个终端

kill -9 进程号

  • pstree -p 以树形显示进程