原创

Linux学习笔记


Linux基础知识

一、Linux入门

  • Linux 和 Windows的简单对比 image-20210312121330220

二、安装VMware软件

​ 一直下一步即可...

三、新建虚拟机

​ -- 类似于在当前电脑上再安装一台虚拟电脑 ​

四、安装Centos7

​ -- 注意:在启动虚拟机之前,一定要映射 Centos镜像文件。 ​

五、Linux常见目录结构

  • bin 是Binary的缩写,这个目录存放着最经常使用的命令
  • home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
  • root 该目录为超级管理员目录
  • tmp 存放一些临时文件
  • etc 所有的系统管理所需要的配置文件和子目录
  • boot linux系统启动所需要的一些核心文件,如一些连接文件和镜像文件。自己的文件一般别放这个目录。
  • usr 存放了用户的很多程序和文件,类似windows下的program files.
  • var 习惯存放一些经常修改的的目录,日志文件也存放在里面。

六、VI和VIM编辑器的使用

6.1、一般模式

操作一些修剪工作 例如 复制 粘贴 删除...

语法功能描述
yy复制光标当前一行
y数字y复制一段(从第几行到第几行)
p箭头移动到目的行粘贴
u撤销上一步
dd删除光标当前行
d数字d删除光标(含)后多少行
x剪切一个字母,相当于del
X剪切一个字母,相当于Backspace
yw复制一个词
dw删除一个词
shift+6(^)移动到行头
shift+4 ($)移动到行尾
1+shift+g移动到页头,数字
shift+g移动到页尾
数字+shift+g移动到目标行

6.2、编辑模式

可以直接编辑文本 插入内容

6.3、指令模式

通过一些指令全局对文本进行操作 例如 保存 退出 查找 替换

命令功能
:w保存
:q退出
:!强制执行
/要查找的词n 查找下一个,N 往上查找
:noh取消高亮显示
:set nu显示行号
:set nonu关闭行号
:%s/old/new/g替换内容 /g 替换匹配到的所有内容

6.4、模式之间的切换

默认打开文件就是一般模式 一般模式 切换到 编辑模式 --> i 编辑模式 切换到 一般模式 --> esc 一般模式 切换到 指令模式 --> : 或者 /(查找内容场景用/)

七、网络配置和系统管理操作

7.1、物理机和虚拟机之间的网络配置的联系

1). 当我们安装VM虚拟机软件的时候,默认安装虚拟网卡,保证 物理机和VM虚拟机软件之间可以通信,此时虚拟网卡会分配一个 IP:192.168.X.1

2). 查看VM虚拟机的网络编辑器发现 虚拟机软件也占用了一个IP:192.168.X.0

3). 当我们创建一个新的客户机并且在客户机上安装Linux系统后,通过网络配置 给当前客户机(Linux)也分配了一个IP:192.168.X.X ,综上所述,就保证 物理机和VM虚拟机以及Linux客户机之间正常通行。

4). 通常情况下,我们需要手动改变Linux客户机的IP为静态的, 目的就是防止每次重启后再次动态分配

-- 修改 ifcfg-ens33 文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

​ 修改内容如下:

BOOTPROTO="static"
ONBOOT="yes"
#IP地址
IPADDR=192.168.2.100
#网关(虚拟机的网关,每台电脑可能都不一样)
GATEWAY=192.168.2.2
#域名解析器
DNS1=192.168.2.2

7.2、配置主机名

修改主机名

[lzh@lzhgy100 home]$ vim /etc/hostname

修改hosts映射文件

[root@lzhgy100 ~]# vim /etc/hosts

添加如下内容

192.168.25.100  lzhgy100
192.168.25.101  lzhgy101
192.168.25.102  lzhgy102
192.168.25.103  lzhgy103
192.168.25.104  lzhgy104

修改window10的主机映射文件(hosts文件)

(1)进入C:\Windows\System32\drivers\etc路径

(2)拷贝hosts文件到桌面

(3)打开桌面hosts文件并添加如下内容

192.168.25.100  lzhgy100
192.168.25.101  lzhgy101
192.168.25.102  lzhgy102
192.168.25.103  lzhgy103
192.168.25.104  lzhgy104

7.3、关闭防火墙

1) 基本语法

​ systemctl start | stop | restart | status 服务名

2) 经验技巧 查看服务的方法:/usr/lib/systemd/system

3)案例实操 (1)查看防火墙服务的状态、

[root@lzhgy100 ~]# systemctl status firewalld.service 

(2)停止防火墙服务

[root@lzhgy100 ~]# systemctl stop firewalld.service 

(3)启动防火墙服务

[root@lzhgy100 ~]# systemctl start firewalld

(4)重启防火墙服务

[root@lzhgy100 ~]# systemctl restart firewalld.service

(5)开启/关闭iptables(防火墙)服务的自动启动

[root@lzhgy100 ~]#systemctl enable firewalld.service
[root@lzhgy100 ~]#systemctl disenable firewalld.service

八、常用命令

8.1帮助命令

man

1)基本语法 man [命令或配置文件] (功能描述:获得帮助信息)

[root@lzhgy100 ~]# man ls

help

1)基本语法 help 命令 (功能描述:获得shell内置命令的帮助信息)

[root@lzhgy100 ~]# help cd

常用快捷键

常用快捷键功能
ctrl + c停止进程
ctrl+l清屏;彻底清屏是:reset
ctrl + q退出
善于用tab键提示(更重要的是可以防止敲错)
上下键查找执行过的命令
ctrl +altlinux和Windows之间切换

8.2、文件目录类

  • pwd 显示当前工作目录的绝对路径
[root@lzhgy100 bbb]# pwd
/root/bbb
  • ll 列出目录的内容

ll=ls -l

[root@lzhgy100 /]# ll
  • cd 切换目录

cd:Change Directory切换路径 1)基本语法 cd [参数] 2)参数说明

参数功能
cd 绝对路径切换路径
cd相对路径切换路径
cd ~或者cd回到自己的家目录
cd -回到上一次所在目录
cd ..回到当前目录的上一级目录
cd -P跳转到实际物理路径,而非快捷方式路径
  • mkdir 创建一个新的目录
[root@lzhgy100 ~]# mkdir abc
  • rmdir 删除一个空的目录
[root@lzhgy100 ~]# rmdir abc
  • touch 创建空文件
[root@lzhgy100 ~]# touch ccc
  • cp 复制文件或目录
[root@lzhgy100 ~]# cp aaa -r abc/
[root@lzhgy100 ~]# cp bb.txt abc/
  • rm 删除文件或目录
[root@lzhgy100 ~]# rm bb.txt
[root@lzhgy100 ~]# rm -rf abc
  • mv 移动文件与目录或重命名
[root@lzhgy100 ~]# mv aa.sh aaa/
[root@lzhgy100 ~]# mv aa.tex aa.txt
  • cat 查看文件内容
[lzh@lzhgy100 home]$ cat aa.sh
  • more 文件内容分屏查看器
[root@lzhgy100 ~]# more bb.txt
  • less 分屏显示文件内容
[root@lzhgy100 ~]# less bb.txt
  • echo
[root@lzhgy100 ~]# echo -e "aaa\tbbb"
  • head 显示文件头部内容
[root@lzhgy100 ~]# head -n 1 bb.txt
  • tail 输出文件尾部内容
[root@lzhgy100 ~]# tail -f bb.txt
  • > 输出重定向和 >> 追加
[root@lzhgy100 ~]# echo "aaa哈哈哈">>bb.txt
  • ln 软链接
[root@lzhgy100 ~]# ln -s bb.txt ln_bbb
##删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/
  • history 查看已经执行过历史命令
[root@lzhgy100 ~]# history 

8.3、时间日期类

  • date 显示当前时间

(1)显示当前时间信息

[root@lzhgy100 ~]# date
2021年 03月 12日 星期五 18:33:55 CST

(2)显示当前时间年月日

[root@lzhgy100 ~]# date +%Y-%m-%d
2021-03-12

(3)显示当前时间年月日时分秒

[root@lzhgy100 ~]# date "+%Y-%m-%d %H:%M:%S"
2021-03-12 18:36:01
  • date 显示非当前时间

(1)显示前一天

[root@lzhgy100 ~]# date -d '1 days ago'
2021年 03月 11日 星期四 18:37:05 CST

(2)显示明天时间

[root@lzhgy100 ~]# date -d '-1 days ago'
2021年 03月 13日 星期六 18:37:45 CST
  • date 设置系统时间
[root@lzhgy100 ~]# date -s "2021-06-19 20:52:18"
2021年 06月 19日 星期六 20:52:18 CST
  • cal 查看日历
[root@lzhgy100 ~]# cal 2021

8.4、用户管理命令

  • useradd 添加新用户

    [root@lzhgy100 ~]# useradd gy
    
  • passwd 设置用户密码

    [root@lzhgy100 ~]# passwd gy
    
  • id 查看用户是否存在

    [root@lzhgy100 ~]# id gy
    uid=1001(gy) gid=1001(gy) 组=1001(gy)
    
  • cat /etc/passwd 查看创建了哪些用户

    [root@lzhgy100 ~]# cat /etc/passwd
    
  • su 切换用户

    [root@lzhgy100 ~]# su gy
    
  • userdel 删除用户

    [root@lzhgy100 ~]# userdel gy
    
  • who 查看登录用户信息

    ##显示自身用户名称
    [root@lzhgy100 ~]# whoami
    ##显示登录用户的用户名
    [root@lzhgy100 ~]# who am i 
    
  • sudo 设置普通用户具有root权限

    [root@lzhgy100 ~]#vi /etc/sudoers
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    lzh     ALL=(ALL)       NOPASSWD:ALL
    
  • usermod 修改用户

    usermod -g 用户组 用户名
    [root@lzhgy100 ~]# usermod -g root lzh
    

8.5、用户组管理命令

  • groupadd 新增组

    [root@lzhgy100 ~]# groupadd gr1
    
  • groupdel 删除组

    [root@lzhgy100 ~]# groupdel gr1
    
  • groupmod 修改组

    groupmod -n 新组名 老组名
    [root@lzhgy100 ~]# groupmod -n lzh100 lzh
    
  • cat /etc/group 查看创建了哪些组

    [root@lzhgy100 ~]# cat /etc/group
    

8.6、文件权限类

  • 文件属性

    从左到右的10个字符表示

    image-20210312194659931

    如果没有权限,就会出现减号[ - ]。从左至右用0-9这些数字来表示:

    (1)0首位表示类型

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等

    - 代表文件

    d 代表目录

    l 链接文档(link file);

    (2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User

    (3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group

    (4)第7-9位确定其他用户拥有该文件的权限 ---Other

    rxw作用文件和目录的不同解释

    1)作用到文件: [ r ]代表可读(read): 可以读取,查看 [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件. [ x ]代表可执行(execute):可以被系统执行 (2)作用到目录: [ r ]代表可读(read): 可以读取,ls查看目录内容 [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录 [ x ]代表可执行(execute):可以进入该目录

  • chmod 改变权限

    第一种方式变更权限

    ​ chmod [{ugoa}{+-=}{rwx}] 文件或目录

    第二种方式变更权限

    ​ chmod [mode=421 ] [文件或目录]

    经验技巧

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

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

    ##修改文件使其所属主用户具有执行权限
    [root@lzhgy100 ~]# chmod g+x bb.txt
    ##采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
    [root@lzhgy100 ~]# chmod 777 bb.txt
    ##修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限。
    [root@lzhgy100 ~]# chmod 777 aaa/
    
    
  • chown 改变所有者

    chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)

    ## 修改文件所有者
    [root@lzhgy100 ~]# chown lzh aaa
    ##递归改变文件的所有者和所有组
    [root@lzhgy100 ~]# chown -R lzh:lzh aaa/
    
    
  • chgrp 改变所属组

    [root@lzhgy100 aaa]# chgrp root aa.sh
    

8.7、搜素查找类

  • find 查找文件或者目录

    find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

    1)基本语法

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

    2)选项说明

    表7-21

    选项功能
    -name<查询方式>按照指定的文件名查找模式查找文件
    -user<用户名>查找属于指定用户名所有文件
    -size<文件大小>按照指定的文件大小查找文件,单位为: *b* —— 块(512字节)****c**** —— 字节****w**** —— 字(2字节)****k**** —— 千字节****M**** —— 兆字节****G**** —— 吉字节

    3)案例实操

    (1)按文件名:根据名称查找/目录下的filename.txt文件。

    [root@lzhgy100 ~]# find bbb/ -name *.sh

    (2)按拥有者:查找/opt目录下,用户名称为-user的文件

    [root@lzhgy100 ~]# find /opt -user lzh

    (3)按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)

    [root@lzhgy100 ~]find /home -size +204800

  • locate快速定位文件路径

    locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。/tmp下的不会被查出来

    1)基本语法 locate 搜索文件 2)经验技巧 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

    3)案例实操

    [root@lzhgy100 ~]# locate lzh.sh
    
  • grep 过滤查找及“|”管道符

    管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

    1)基本语法

    -n 显示匹配行及行号。

    grep 选项 查找内容 源文件

    [root@lzhgy100 ~]# ls |grep -n a
    2:aaa.txt
    3:aa.txt
    4:anaconda-ks.cfg
    7:initial-setup-ks.cfg
    8:ln_a
    9:ln_aa
    

8.8、压缩解压类

  • gzip/gunzip 压缩

    1)基本语法

    gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

    gunzip 文件.gz (功能描述:解压缩文件命令)

    2)经验技巧

    (1)只能压缩文件不能压缩目录

    (2)不保留原来的文件

    3)案例实操

    [root@lzhgy100 ~]# gzip aaa.txt aa.tx
    [root@lzhgy100 ~]# gunzip aaa.txt.gz aa.txt.gz 
    
  • zip/unzip 压缩

    1)基本语法

    -r 压缩目录 -d<目录> 指定解压后文件的存放目录

    zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)

    unzip [选项] XXX.zip (功能描述:解压缩文件)

    ##压缩文件到指定目录
    [root@lzhgy100 ~]# zip gy/aa.zip aa.txt
    ##压缩目录
    [root@lzhgy100 ~]# zip lzh/lzh.zip -r gy
    ##解压文件到指定目录
    [root@lzhgy100 ~]# unzip aa.zip -d lzh
    
  • tar 打包

    1)基本语法

    tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)

    2)选项说明

    选项功能
    -c产生.tar打包文件
    -v显示详细信息
    -f指定压缩后的文件名
    -z打包同时压缩
    -x解包.tar文件
    -C解压到指定目录

    3)案例实操

    ##把aa.txt lzh文件夹 打包并压缩
    [root@lzhgy100 ~]# tar -cvzf lzh.tar.gz aa.txt lzh
    ##解压到指定目录
    [root@lzhgy100 ~]# tar zxvf lzh.tar.gz -C gy/
    

8.9、磁盘分区类

  • df 查看磁盘空间使用情况
  • fdisk 查看分区
  • lsblk 查看设备挂载情况
  • mount/umount 挂载/卸载

8.10、进程线程类

  • ps 查看当前系统进程状态

    ps:process status 进程状态

    1)基本语法

    ​ ps -aux | grep xxx (功能描述:查看系统中所有进程)

    ​ ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)

    2)选项说明

    表7-30

    选项功能
    -a选择所有进程
    -u显示所有用户的所有进程
    -x显示没有终端的进程

    3)功能说明

    ​ (1)ps -aux显示信息说明

    ​ USER:该进程是由哪个用户产生的

    ​ PID:进程的ID号

    %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

    %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

    VSZ:该进程占用虚拟内存的大小,单位KB;

    RSS:该进程占用实际物理内存的大小,单位KB;

    TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。

    STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

    START:该进程的启动时间

    TIME:该进程占用CPU的运算时间,注意不是系统时间

    COMMAND:产生此进程的命令名

    (2)ps -ef显示信息说明

    UID:用户ID

    PID:进程ID

    PPID:父进程ID

    C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

    STIME:进程启动的时间

    TTY:完整的终端名称

    TIME:CPU时间

    CMD:启动进程所用的命令和参数

    4)经验技巧

    ​ 如果想查看进程的CPU占用率和内存占用率,可以使用aux;

    如果想查看进程的父进程ID可以使用ef;

  • kill 终止进程

    kill [选项] 进程号 (功能描述:通过进程号杀死进程)

    ​ killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

    -9表示强迫进程卢克停止

  • pstree 查看进程树

    pstree [选项]

    -p 显示进程的PID

    -u 显示进程的所属用户

  • top 查看系统健康状态

    1)基本命令

    ​ top [选项]

    2)选项说明

    选项功能
    -d 秒数指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
    -i使top不显示任何闲置或者僵死进程。
    -p通过指定监控进程ID来仅仅监控某个进程的状态。

    3) 操作说明

    操作功能
    P以CPU使用率排序,默认就是此项
    M以内存的使用率排序
    N以PID排序
    q退出top
  • netstat 显示网络统计信息和端口占用情况

    1)基本语法

    ​ netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)

    ​ netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)

    2)选项说明

    表7-40

    选项功能
    -n拒绝显示别名,能显示数字的全部转化成数字
    -l仅列出有在listen(监听)的服务状态
    -p表示显示哪个进程在调用

    3)案例实操

    通过进程号查看该进程的网络信息

    [root@lzhgy100 ~]# netstat -anp | grep sshd

    查看某端口号是否被占用

    [root@lzhgy100 ~]# netstat -nlp |grep 22

8.11crontab系统定时任务

  • crontab 服务管理

    重新启动crond服务

    [root@lzhgy100 ~]# systemctl restart crond

  • crontab 定时任务设置

    1)基本语法

    crontab [选项]

    2)选项说明

    选项功能
    -e编辑crontab定时任务
    -l查询crontab任务
    -r删除当前用户所有的crontab任务

    3)参数说明

    [root@lzhgy100 ~]# crontab -e

    (1)进入crontab编辑界面。会打开vim编辑你的工作。

    执行的任务

    项目含义范围
    第一个“*”一小时当中的第几分钟0-59
    第二个“*”一天当中的第几小时0-23
    第三个“*”一个月当中的第几天1-31
    第四个“*”一年当中的第几月1-12
    第五个“*”一周当中的星期几0-7(0和7都代表星期日)

    (2)特殊符号

    特殊符号含义
    *代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
    代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
    -代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
    */n代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

    (3)特定时间执行命令

    时间含义
    45 22 * * * 命令在22点45分执行命令
    0 17 * * 1 命令每周1 的17点0分执行命令
    0 5 1,15 * * 命令每月1号和15号的凌晨5点0分执行命令
    40 4 * * 1-5 命令每周一到周五的凌晨4点40分执行命令
    */10 4 * * * 命令每天的凌晨4点,每隔10分钟执行一次命令
    0 0 1,15 * 1 命令每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

    4)案例实操

    ​ (1)每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字

    */1 * * * * /bin/echo ”11” >> /root/bailongma.txt

九、软件包管理

9.1、RPM

1)基本语法

rpm -qa (功能描述:查询所安装的所有rpm软件包)

rpm -e RPM 软件包 (功能描述:卸载软件包)

rpm -ivh RPM 包全名 (功能描述:安装软件包)

选项功能
-i-i=install,安装
-v-v=verbose,显示详细信息
-h-h=hash,进度条
--nodeps--nodeps,不检测依赖进度

2)经验技巧*

由于软件包比较多,一般都会采取过滤。rpm -qa | grep 软件包

9.2、yum

1)基本语法

​ yum [选项] [参数]

2)选项说明

选项功能
-y对所有提问都回答“yes”

3)参数说明

参数功能
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
clean清理yum过期的缓存
deplist显示yum软件包的所有依赖关系

4)案例实操实操

​ (1)采用yum方式安装firefox

​ [root@lzhgy100 ~]# yum -y install firefox

linux
  • 作者:刘智豪(联系作者)
  • 发表时间:2020-03-14
  • 版权声明:自由转载-非商用-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论