[toc]

-=-=Liunx基础

1. vi和vim的三种模式

image-20200203171550721

2. vi和vim的操作

  1. 正常模式下 yy 复制(xyy:x可以为数字)
  2. 正常模式下 p 粘贴
  3. 正常模式下 dd 删除 (xdd:x可以为数字)
  4. 命令行模式下 / 要查找的内容
  5. 命令行模式下 :set nu/nonu 设置/取消行号
  6. 正常模式下 u 撤销
  7. 正常模式下 gg 最首行 G 最末行
  8. 编辑模式下如果esc失效,使用 Ctrl + C
  9. 正常模式下 xx shift g 跳转指定行
  10. 注意退出时的 : 是英文输入法下的
  11. //source /etc/profile 修改过配置文件后刷新资源
  12. vi和vim区别
  13. img

3. 关机和重启

  1. shutdown -h now 立即关机

  2. shutdown -h 1 一分钟后关机

  3. shutdown -r now 立即重启

  4. halt 关机

  5. reboot 重启

  6. syn 将内存中的数据同步到磁盘(关机重启之前使用)

  7. logout 注销用户

4. 用户管理

  1. 添加用户指令 useradd 用户名
  2. 创建指定自录的用户 useradd -d /home/dd xd (useradd -d 自录用户名)
  3. 给用户设置/修改密码 passwd 用户名输入两次密码
  4. 删除用户(保留家目录–推荐使用) usede1用户名
  5. 删除用户以及家目录 userde1 -r 用户名
  6. 查看用户 id 用户名
  7. 切换用户命令 su -用户名
    --使用su切换用户,只是用户发生变化,当前的操作环境还是在之前的用户下;
       --使用su -切换用户,不仅用户变化,且操作环境也变成新用户的环境
    
  8. 返回到原来的用户 exit

5. 组管理

  1. 添加组 groupadd 组名
  2. 新建用户指定组 useradd -g 组名 用户名
  3. 修改用户的组 usermod -g 新组名 用户名

6. 三种配置文件

/etc/passwd文件

​ 用户(user)的配置文件,记录用户的各种信息
​ 每行的含义:
​ 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell

/etc/shadow文件

​ 口令的配置文件
​ 每行的含义:
​ 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group文件

​ 组(group)的配置文件,记录 Linux 包含的组的信息
​ 每行含义:
​ 组名:口令:组标识号:组内用户列表

  • ==cat /etc/redhat-release== 查看当前liunx版本
  • cat /proc/version 查看当前linux版本

7. 指定运行级别

​ 0:关机
1:单用户【找回丢失密码】
​ 2:多用户状态没有网络服务
​ 3:多用户状态有网络服务
​ 4:系统未使用保留给用户
​ 5:图形界面
​ 6:系统重启
常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件/etc/inittab 的 id:5:initdefault:这一行中的数字
CentOs6是通过init 数字来设置的,而CentOs7则比较复杂
通过systemctl get-default来获取当前运行级别,详情搜索博客!

8. 面试题

  1. 如何找回 root 密码(CentOs6),如果我们不小心,忘记 root 密码,怎么找回?
    思路:

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

    总结:
    开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。

9. 帮助命令

  1. man
    `man ls`
    
  2. help
    `help 命令`
    

10. 文件目录类指令

  1. 显示当前工作目录的绝对路径 pwd

  2. ls

    -a
       -l == ll
    

    ​ -h

  3. cd 切换目录

  4. mkdir 创建目录

  5. mkdir -p 创建多级目录

  6. rmdir 只能删除空目录

    `rm -rf 递归删除`
           -r 递归删除
           -f 强制删除不提示
    
  7. touch 文件名称 创建文件

  8. 复制命令 cp 原来的文件包括目录 要复制到的目录

    -r  递归复制整个文件夹
    
  9. mv 移动和改名指令

11. 查看文件指令

  1. cat 只能读

    -n 显示行号
       通常使用 cat 文件名 | more
    
  2. more 基于VI编辑器的文本过滤器,全屏按页显示

    q退出查看

  3. less 并不是一次将整个文件加载后显示,可以通过PgUp,PgDn控制

12. 输出重定向>和追加>>

13. echo指令

  1. echo $PATH 输出环境变量到控制台
  2. echo "字符串"

14. head指令

  1. head a.txt 用于显示文件的开头部分
  2. head -n 8 a.txt

15. tail 指令

  1. tail -n 20 /etc/profile 默认输出文件后十行内容
  2. ==tail -f 文件名 实时查看文件==

16. ln指令–软连接

  1. ln -s /root/soft/tomcat/bin/startup.sh tomcatStarter
  2. 删除: rm -rf tomcatStarter tomcatStarter后面不能加/

17. history指令

  1. history 查看所有的历史指令
  2. history 10 查看最近使用过的10个指令
  3. !1021 执行编号为1021的指令

18. 时间日期类指令

  1. date 显示时间
  2. date +%Y 显示年
  3. date +%M 显示分
  4. Y m d H M S
    年 月 日 时 分 秒
  5. date "+%Y %m %d %H:%M:%S"
  6. 设置日期
       date -s "字符串时间"
    
  7. 查看日历
    `cal` 查看是当前月
       `cal 2020` 查看的是今年的
    

19. 搜索查找类指令

19.1 find指令

  1. find /xxx -yyy zzz

                搜索的范围      -name
                                            -user
                                            -size  +20M大于20M -20M小于20M的文件
    
    • find / -name filename.txt根据名称查找/目录下的filename.txt文件。
  2. locate为什么用不了???

19.2 grep指令–过滤查找

  1. | 管道 将前一个命令的处理结果输出传递给后面的命令处理。
  2. grep lang anaconda-ks.cfg –color 在anaconda-ks.cfg 文件中查找 lang 并高亮显示

20. 压缩和解压类

  1. gzip 文件 —> 文件.gz 压缩后不会保留原来的文件
    gunzip 文件.gz —>

  2. zip -r myZip.zip /home/

    unzip -d /root/file/ myZip.zip

    -r:递归压缩

    -d: 指定压缩后的文件的存放目录

  3. tar指令

        压缩
                `tar  -zcvf  myZip.tar.gz  /root/file`
        解压
                `tar -zxvf myZip.tar.gz`
                `tar -zxvf myZip.tar.gz -C /root/file/txt/`
    

    ​ 如果不带.gz意思是不压缩

    ​ 打包时不压缩 tar -xvf ...

    ​ 文件名.tar tar -cvf ...

    image-20200204134730730

21. 组管理和权限管理

21.1 三个重要概念

  • 所有着
  • 所在组
  • 其它组

21.2 新建用户useradd

useradd -g police tom -g

  • police 组名
  • tom 角色名

passwd tom 给角色设置密码

21.3 新建组groupadd

groupadd police
id fox 查看角色的信息

21.4 修改文件所在组chgrp

chgrp 组名 文件名

  1. 通过root用户创建orange.txt文件
  2. chgrp police orange.txt 把orange.txt修改成police组

21.5 改变用户所在组usermod

usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录

22. 权限的基本介绍

- 普通文件
d 目录

22.1 rwx权限详解

一、修改权限的两种方式chmod
one:

chmod u=rwx,g=rwx,o=rwq 文件目录名
​ ||
chmod a=rwx 文件目录名

chmod o-x 文件目录名

two:

chmod 777 文件目录名 常用

二、修改文件所有者chown

chown newowner file
​ ||
​ newowner:newgroup

三、修改文件所在组chown/chgrp

chgrp newgroup file
chown :newgroup file

23. 任务调度crond

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

crontab

​ -e 编辑crontab定时任务(可以配合着shell脚本来使用)

​ -l 查询crontab任务

​ -r 删除当前用户的所有的crontab任务

  1. 任务调度文件 vim /etc/crontab
  2. 设置定时任务 crontab -e
  3. 重启任务调度 service crond restart

24. Linux 磁盘分区、挂载

1EB=1024 PB,1PB=1024 TB

  • Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。

  • Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

  1. lsblk -f 查看系统的分区和挂载情况 (老师不离开)
  2. mount 设备名称 挂载目录 取消挂载使用umount
  3. df -lh 查询系统整体磁盘使用情况
  4. du -h /目录 查询指定目录的磁盘占用情况,默认为当前目录
    • -s 指定目录占用大小汇总
    • -h 带计量单位
    • -a 含文件
    • –max-depth=xx 子目录深度
    • -c 列出明细的同时,增加汇总值

一、磁盘情况-工作实用指令

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

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

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

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

3)统计/home 文件夹下文件的个数,包括子文件夹里的

ls -lR /root | grep "^-" | wc -l

4)统计文件夹下目录的个数,包括子文件夹里的

ls -lR /root | grep "^d" | wc -l

5)以树状显示目录结构

yum install tree

tree

25. 网络配置 ifconfig

ipconfig–>DOS

ifconfig–>Linux 显示网络设备

  1. ping 目的主机 测试主机之间网络连通
  2. ifconfig eth0 up 启用 eth0 网卡
  3. ifconfig eth0 down 停用 eth0 网卡
  4. netstat 查看网络端口
  5. netstat -an | grep 3306 查询 3306 端口占用情况

26. 进程管理ps

ps -aux | more

  • -a 显示当前终端的所有的进程信息
  • -u 以用户的格式显示进程信息
  • -x 显示后台进程运行的参数

image-20200204160458821

ps -ef 以全格式显示当前所有的进程

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?

​ 两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

一、终止进程kill

kill 进程号

kill -9 进程号 强制杀死进程

二、查看进程树 pstree

pstree -p 树状的形式显示进程的 pid

pstree -u 树状的形式进程的用户

三、服务管理

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

  • service 服务名 [start | stop | restart | reload | status]

  • 在 CentOS7.0 后 不再使用 service ,而是 systemctl

  • systemctl命令是系统服务管理器指令,它实际上将service和chkconfig这两个命令组合到一起。

  • systemctl [start | stop | restart | reload | status] 服务名
  • systemctl list-units --type=service 显示所有已启动的服务
  • systemctl enable 服务名 设置开机自启动

四、彻底关闭防火墙

​ sudo systemctl status firewalld.service

​ sudo systemctl stop firewalld.service

​ sudo systemctl disable firewalld.service(之前的是iptables)

五、动态监控进程

top 与 ps 命令很相似。它们都用来显示正在执行的进程。top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。

top

​ -d 秒数 指定top每隔几秒更新 默认是三秒

​ -i 不显示闲置或者僵死进程

​ -p 指定监控进程的ID仅仅监控某个进程的状态

a. 监视待定用户

top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可

b. 终止指定的进程

top:输入此命令,按回车键,查看执行的进程。

k:然后输入“k”回车,再输入要结束的进程 ID 号

六、查看系统网络情况 netstat

netstat -anp

​ -an 按一定顺序排列输出

​ -p 显示哪个进程在调用

​ 配合着| grep 使用。

27. RPM和 YUM

27.1 RPM

​ RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。

  1. rpm -qa 查询已安装的 rpm 列表

  2. rpm -qa | grep tomcat

  3. rpm -qi 软件包名 查询软件包信息

  4. rpm -ql 软件包名 查询软件包中的文件

  5. rpm -qf 文件全路径名 查询文件所属的软件包

  6. rpm -e rpm包的名称 卸载 rpm 包

    • 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息
    • 需要使用 rpm -e --nodeps rpm包的名称
  7. rpm -ivh rpm包全路径名称 ==安装 rpm 包==

    • i=install 安 装

    • v=verbose 提 示

    • h=hash 进度条

一个 rpm 包名:

firefox-45.0.1-1.el6.centos.x86_64.rpm

  • 名称:firefox

  • 版本号:45.0.1-1

  • 适用操作系统: el6.centos.x86_64

表示 centos6.x 的 64 位系统

如果是 i686、i386 表示 32 位系统,noarch 表示通用。

27.2 YUM

​ Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。

  1. yum install xxx 下载安装
  2. yum list
  3. yum list | grep xx
  4. wget 地址 下载

28. 系统管理命令

  1. free 显示内存状态

  2. free –m 以 mb 单位显示内存组昂头

  3. du 显示目录或文件的大小。

  4. du –h 显示当前目录的大小

  5. who 显示目前登入系统的用户信息。

  6. hostname 查看当前主机名 ( 修改:vi /etc/sysconfig/network )

  7. uname 显示系统信息。

  8. uname -a 显示本机详细信息。

  9. 依次为:内核名称(类别),主机名,内核版本号,内核版本,

    ​ 内核编译日期,硬件名,处理器类型,硬件平台类型,
    ​ 操作系统名称