Skip to content

第一章、 Linux简介

Linux 是一个免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 性能稳定的网络操作系统。

linux的内核最初是由一个芬兰的大学生因为个人兴趣爱好而编写的,
这个大学生的名字叫林纳斯·托瓦兹(Linus Torvalds)

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。其中这个CentOS是一个企业级的发行版,特别适合对稳定性,可靠性和功能要求较高用户

tips : 本篇笔记基于 vmware虚拟机 + CentOS 7 记录

并且本篇笔记会以较为简略的方式记录,为的是快速入门



第二章. 拥有一台属于自己的linux服务器


2.1、vmware虚拟机安装

vmware虚拟机下载

text
通过百度网盘分享的文件:VMware-workstation-full-17.5.0-2258...
链接:https://pan.baidu.com/s/1TCLrM_0aZKnyXK3f9baCsg?pwd=4u9r 

提取码:4u9r 
--来自百度网盘超级会员V6的分享

微信截图_20240927151757

VMware Workstation 17 Pro许可证密钥(Linux/Mac通用)

text
4A4RR-813DK-M81A9-4U35H-06KND

NZ4RR-FTK5H-H81C1-Q30QH-1V2LA

4C21U-2KK9Q-M8130-4V2QH-CF810

MC60H-DWHD5-H80U9-6V85M-8280D

JU090-6039P-08409-8J0QH-2YR7F

4Y09U-AJK97-089Z0-A3054-83KLA


2.2 在vmware上新建一台基于CentOS7系统的虚拟机


CentOS7 镜像下载

text
通过百度网盘分享的文件:CentOS-7-x86_64-DVD-1804.rar
链接:https://pan.baidu.com/s/1Y_6ESOhEaJGE7mZYP929FQ?pwd=yobt 
提取码:yobt 
--来自百度网盘超级会员V6的分享

微信截图_20240927152309

选择好 CentOS 7 的版本

微信截图_20240927152430

关键点,别按照默认的安装到了C盘了!!!!

微信截图_20240927152446

选择一手双核

微信截图_20240927152535

可以稍微选多点,是动态分配的

微信截图_20240927152608

剧透:桥接网络相当于虚拟出一条网线插到你本地电脑的网卡里

微信截图_20240927152651

微信截图_20240927152704

.vmdk 后缀就是那个虚拟的磁盘,可以稍微记一下

补充 : .vmx 后缀是你的虚拟机,你在vmware需要打开虚拟机时选择这个后缀的文件

微信截图_20240927152744

没用的虚拟硬件可以移除...

微信截图_20240927152913

手动选择下载好的CentOS镜像

微信截图_20240927152956

配置好后打开虚拟机就是这个界面,可以鼠标点进去用方向键 + ENTER键选择安装

微信截图_20240927153141

满足学习需求只要个终端就好,还不需要那些图形化的界面

微信截图_20240927153359

设置root密码和用户名,建议设简单点!!随便敲一个字母或数字都行

微信截图_20240927153929

像这样登入就是完成了安装工作了!!🎉🎉



2.3、vmware虚拟机的三种网络模式的介绍


  • VMnet0 虚拟交换机: Bridged 桥接模式
txt
特点:

a. 默认使用VMnet0, 不提供DHCP服务 ( DHCP 服务是指由服务器控制的一段IP地址范围,当客户机登录服务器时会自动获取服务器分配的IP地址与子网掩码 )

b. 虚拟机与外部主机需要在同一个网段上,与局域网的其它机器没有区别。

c. 可以与局域网内其它主机通信,可以与外部网络通信

d. 容易与局域网其他主机引起ip地址冲突

  • VMnet1 虚拟交换机:Host-Only 仅主机模式
txt
特点:

a. 默认使用VMnet1,提供DHCP服务

b. 虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络

  • VMnet8 虚拟交换机:NAT 模式
txt
特点:

a. 默认使用VMnet8,提供DHCP服务

b. 虚拟机可以和物理主机互相访问,可访问外部网络

c. 局域网内其它机器访问不了


2.4、linux-centos7的网络设置

简介:如何使得CentOS7上外网

  • Bridged 桥接模式
    • 重启主机的命令:reboot
    • 重启网卡的命令:systemctl restart network.service
    • 查看 ip 地址的命令 :ip addr
    • ping 命令可以检测网络是否畅通:ping ip地址
    • 结束 ping 命令 :Ctrl + c
    • tips : 按住 ctrl + l 可以清屏 ,和 clear 命令一个效果
    • 可以访问外网
    • 容易与局域网的其他机器 ip 地址冲突
  • Host-Only 仅主机模式
    • 一般情况下不能访问外网
    • 不会与局域网的其他机器 ip 地址冲突
  • NAT 模式
    • 可以访问外网(与上面一样命令检查网络连接)
    • 不会与局域网的其它机器 ip 地址冲突
  • 总结:
txt
为了提供不同的测试环境,有的需要虚拟机与局域网内的其它机器环境隔离,

有的不需要,所以就整出这么多花样


2.5、linux 远程连接工具使用

txt
获取远程连接工具:

通过网盘分享的文件:SecureCRT.rar
链接: https://pan.baidu.com/s/1HoPEKrPjuGB7YTs21pqkZA?pwd=y7jd 
提取码: y7jd 

--来自百度网盘超级会员v6的分享
  • 使用前保证网络畅通

  • 使用 ip addr 查看 ip 是多少再远程连接

  • 安装上传下载功能lrzsz服务:yum -y install lrzsz (确认服务器可以联外网)

  • 上传:执行 rz 命令

  • 下载:sz 文件名



2.6、虚拟机的快速克隆与快照恢复

  • 克隆虚拟机会以比较快的方式 “ 复制粘贴 ” 一台一模一样的虚拟机

  • 克隆后 : systemctl restart network.service 命令执行会报错,原因是 MAC地址不正确

  • tips : 按住键盘的 tap 键 可以对命令进行补全

  • 网卡路径 : /etc/sysconfig/network-scripts/ifcfg-eno16777728

    • ps : 前面都是一样的,但是后面数字部分会不一样,需要按 tap 键补全
  • 使用 vi 工具进行编辑网卡信息 : vi /etc/sysconfig/network-scripts/ifcfg-eno16777728

    • ps : 按住键盘的 i 进入编辑模式,按住键盘左上角的 esc 键 退出编辑模式, 再输入 :wq! 进行保存
  • 快照 :相当于备份当前时间节点的机器状态( 防止后面操作误删重要文件 )



第三章、Linux命令基础



微信截图_20241219145737

前面已经成功安装了 Linux - centos 7 , 接下来就是进入Linux 命令行的世界。


Linux命令格式

命令条件/参数对象/文件/目录
marry空格-car -house -money空格good girl
marry空格-money空格girl
rm空格-f空格/tem/irai.txt
  1. 一般情况下 , 【参数】 是可选的 , 一些情况下 【文件或路径】也是可选的
  2. 同一个命令跟上不同的参数执行不同的功能
    • 执行 linux 命令,添加参数的目的是让命令更加贴切实际工作的需要
    • linux 命令与参数之间,普遍应该用 一个或多个空格分隔


Linux命令行


微信截图_20241219150841
txt
命令提示符

普通用户 irai 登录  $
超级用户 root 登录  #

irai / root 表示当前登录的用户

可以调用命令来查看

  • whoami :我是谁, 显示当前登录的用户
  • hostname :显示当前机器的主机名
  • pwd :显示当前的工作目录的绝对路径


OS目录分隔符


  • window 命令行目录分隔符
微信截图_20241219151652
  • Linux 命令行目录分隔符
微信截图_20241219152056

  • Linux 首先是建立一个根 “ / ” 文件系统 , 所有的目录也都是由根目录衍生出来的。
  • 而 window不一样,window 有各种盘符 C盘 , D盘 , E盘 ....

微信截图_20241219152356


第四章、Linux 基础命令&操作



4.1、常用必备基础命令(一)


txt
1、cd命令
功能说明:切换目录。
举 例:cd /usr/local/; cd ..; cd -

2、ls命令
功能说明:列出目录内容。
举 例:ls -ltr ; ls -lrt /home/

3、pwd命令
功能说明:查询所在目录。
举 例: pwd

4、cat命令
功能说明:查看小文件内容。
举 例:cat -n 123.txt

5、more命令
功能说明:查看大文件内容,回车向下走一行,空格向下走一页
举 例:more System.map-3.10.0-123.el7.x86_64

6、head命令
功能说明:查看文件的前面N行。
举 例:head -20 System.map-3.10.0-123.el7.x86_64

7、tail命令
功能说明:查看文件的后面N行。
举 例:tail -f access.log ;tail -20 access.log

8、touch命令
功能说明:创建一个空文件。
举 例:touch 123.txt

9、mkdir命令
功能说明:创建目录。
举 例:mkdir -p /tmp/XD/XD/class

10、rmdir命令
功能说明:删除目录。
举 例:rmdir /tmp/XD/XD/class

11、 cp命令
功能说明:拷贝文件。
举 例:cp 123.txt class/ ; cp -a 123.txt class/789.txt

12、 mv命令
功能说明:移动或更名现有的文件或目录。
举 例:mv 123.txt 345.php ;mv 789.txt /home/987.php

13、rm命令
功能说明:删除文件或目录。
举 例:rm 987.php ;rm -rf 456.txt

14、 diff命令
功能说明:对比文件差异。
举 例:diff 123.txt 456.txt

15、ssh命令
功能说明:远程安全登录方式。
举 例:ssh 192.168.226.131

16、exit命令
功能说明:退出命令。
举 例:

17、id命令
功能说明:查看用户。
举 例:id root

18、uname命令
功能说明:查询主机信息。
举 例:uname -a

19、ping命令
功能说明:查看网络是否通。
举 例:ping 192.168.226.131

20、echo命令
功能说明:标准输出命令。
举 例:echo "this is echo 命令"

21、man命令 (ls --help)
功能说明:查看帮助文档
举 例:man ls

22、help命令
功能说明:查看内部命令帮助
举 例:help if


4.2、常用必备基础命令(二)



txt
1、clear命令
功能说明:清屏。
举 例:clear ; ctrl + l

2、who命令
功能说明:当前在本地系统上的所有用户的信息
举 例:whoami ; who

3、uptime命令
功能说明:查询系统信息
举 例:
load average: 0.00, 0.01, 0.05 1分钟的负载,5分钟的负载,15分钟的负载

4、w命令
功能说明:查询系统信息
举 例:w

5、free命令
功能说明:查看系统内存
举 例:free -h ; free -m

6、wc命令
功能说明:统计行。
举 例:wc -l 123.txt

7、grep命令
功能说明:查找文件里符合条件的字符串。
举 例:grep '119.4.253.206' 123.txt | wc -l
-n:输出行数 grep -n '80.82.70.187' 123.txt
-w:精确匹配 grep -w '113.66.107.198' 123.txt
-i:忽略大小写 grep -i 'IP:113.66.107.198' 123.txt
-v:反向选择 grep -v '113.66.107.198' 123.txt

8、 find命令
功能说明:查询文件。
举 例:find / -name -type f 123.txt

9、uniq命令
功能说明:对排序好的内容进行统计
举 例:uniq -c 123.txt | sort -n

10、sort命令
功能说明:对内容进行排序
举 例:uniq -c 123.txt | sort -n

11、df命令
功能说明:文件系统的磁盘使用情况统计。
举 例:df -h

12、netstat
功能说明:查看网络端口的使用情况
举 例:netstat -tunlp | grep nginx
-t :显示tcp端口
-u :显示UDP端口
-n :指明拒绝显示别名
-l :指明listen ( 监听 ) 的
-p :指明显示建立相关连接的程序名
安装netstat命令: yum -y install net-tools

13、hostname命令
功能说明:查看主机名
举 例:hostname

14、ps命令
功能说明:显示所有进程信息。 ps 与grep 常用组合用法,查找特定进程
举 例:ps -ef | grep nginx
ps -aux | grep nginx

15、kill命令
功能说明:杀进程
举 例: kill -9 top

16、top命令
功能说明:监控Linux系统状况,比如cpu、内存的使用
举 例:按住键盘q退出

17、du命令
功能说明:统计大小
举 例:du -sh ; du -sm *

18、firewall-cmd命令
功能说明:查看防火墙的状态
举 例:firewall-cmd --state
centos 7 关闭防火墙:systemctl stop firewalld.service

19、echo命令
功能说明:判断上一条命令是否正确 or 输出内容到屏幕上
举 例:echo $? ; echo hello world

20、cal命令
功能说明:查看日历
举 例:cal 2008


4.3、什么是输入/输出/错误重定向


  • 什么是输入重定向?
txt
通俗的讲,输入重定向就是把要输入的信息写入到指定的文件中去
  • 什么是输出重定向?
txt
通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,
而不是将要输出的文件信息输出到控制台(显示屏)
  • 什么是错误重定向?
txt
通俗的讲,错误重定向就是把错误的信息写入到一个文件中去
  • linux 中一切皆文件
txt
文件描述符:
posix名称 	文件描述符 	用途
/dev/stdin 		0 		标准输入
/dev/stdout 	1 		标准输出
/dev/stderr 	2 		标准错误输出

  • 输入重定向:<
    • eg : wc -l < 123.txt

  • 输出重定向:

    txt
    >   	# 代表覆盖写入
    >> 		# 代表追加写入
    • eg :
      • cat >> 123.txt
      • cat > 123.txt
      • ls -lrt > 123.txt
      • echo '123455' > 123.txt

  • 错误重定向:

    • eg :

      • llll 2> 123.txt

      • llll 2> /dev/null

      • ps : /dev/null 是个 “ 无底洞 ” ,可以当成 “ 回收站 ” 一样用

      • ps : ls > 123.txt 等价于 ls 1> 123.txt 也就是默认1(标准输入)是省略的


  • 几个符号:

    • & # 代表等同于的意思

      • ls -lrt /boot /test 1>/root/123.txt 2>&1

      解释:ls -lrt /boot /test 的内容,标准输入重定向到 123.txt ,

      错误输入2> 等同于 1 &1 一样重定向到 123.txt

    • &> # 代表分正确还是错误的意思

      • ls -lrt /boot /text &>123.txt

      解释:不管正确输入还是错误输入都重定向到 123.txt

    • | # 管道符

    • ; # 代表的是可以执行多条命令

      • cat /etc/passwd | grep root ; ls -lrt

      解释:cat 查看一下 /etc/passwd 得到的内容通过管道 然后 grep 筛选出有 root 的内容

      同时执行 ls -lrt 列出当前工作目录的内容 参数为 -lrt

    • && # and逻辑の短路运算

      • 前面的命令执行成功的话,后面的才可以执行成功;
      • 前面的命令执行失败的话,后面的不可以执行
    • || # or逻辑の短路运算

      • 前面的命令执行成功的话,后面的不可以执行
      • 前面的命令执行失败的话,后面的可以执行


4.4、linux下的目录分类与作用介绍


微信截图_20241224193439
  • / :根目录,一般根目录下只存放目录,不要存放文件,也不要修改,或者删除目录下的内容

  • /mnt :测试目录

  • /root :root用户的家目录

  • /home :普通用户的家目录

  • /tmp :临时目录(比如文件上传时)

  • /var :存放经常修改的数据,比如程序运行的日志文件

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

  • /etc :系统默认放置配置文件的地方

  • /bin :所有用户都能执行的程序

  • /sbin :只有root才能执行的程序

  • /usr :用户自己的软件都可以放到这儿来

  • /dev :存放硬件设备的地方(/dev/cdrom)

  • /media :挂载光盘使用的

  • 挂载光盘:mount /dev/cdrom /media

  • 卸载光盘:umount /dev/cdrom

绝对路径:说白了就是完整的路径

相对路径:相对于当前位置路径 ./ 代表的是当前目录的意思 ../ 代表的是上一级目录的意思



4.5、虚拟机中Centos7与外部物理机的时间同步

  • 卸载光盘的时候可能会遇到目标正忙:
txt
[root@localhost media]# umount /dev/cdrom
umount: /media: target is busy.
    (In some cases useful info about processes that use
    the device is found by lsof(8) or fuser(1))
  • 解决方法:
    • 首先确认联网状态
    • yum install -y psmisc
    • fuser -mv /media
    • fuser -kv /media
  • date 命令
    • date "+%Y-%m-%d %H:%M:%S"
    • date -s "2020-10-1 22:00:00"
    • date -d yesterday "+%Y-%m-%d %H:%M:%S"
    • date "+%w"
  • 安装 VMwareTools
    • 第一步打开虚拟机,安装 VMwareTools 使工具软件包下载到光盘
    • 挂载光盘到 linux 系统
    • cp VMwareTools-10.2.0-7259539.tar.gz /root/
    • umount /dev/cdrom
    • tar -xf VMwareTools-10.2.0-7259539.tar.gz
    • cd vmware-tools-distrib
    • yum -y install perl-Data-Dumper
    • ./vmware-install.pl
    • 一路按住键盘的回车键,选用默认
    • echo $? 验证是否安装成功,返回 0 就是成功
    • 验证里面虚拟机的时间是否与外部物理机的时间同步


4.6、linux 高手编辑神器 vi 的使用

  • vi 的基本概念:(三种模式)
    • 命令模式
    • 插入模式
    • 底行模式
txt
进入插入模式:按住键盘的 i 或者 o 或者 a

进入命令模式:按住键盘的左上角 esc 键

进入底行模式:前提是得在命令模式,输入 : 进入
  • 在命令行模式中的操作:
txt
$ 	#移动到这一行的行尾
gg 	#移动到文档第一行行首
G 	#移动到文档最后一行行首
x 	#删除内容,删除一个字符
dd	#删除游标所在的那一整行
u 	#复原原来的操作
v 	#选中范围按y即复制
p 	#粘贴
  • 在底行模式中的操作:
txt
n 			# n为数字。光标移动到第n 行
/ 			# 寻找内容

# 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
%s/word1/word2/g 

# n1 与 n2 为数字。
# 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
n1,n2s/word1/word2/g 


set nu #显示行号
set nonu #取消行号

q! #强制离开不保存
wq #离开并保存
wq! #强制离开并保存
!ls #暂时离开


4.7、linux的用户管理与组管理

  • Linux 是一个多用户、多任务的操作系统
  • Linux 用户的分类 :
    • 超级用户 root :
      • 拥有至高无上的权限
      • UID : 0
    • 普通用户:
      • 权限有一定的限制,可以登录系统。
      • 一般可以执行 /user/local/bin 或者 /bin 或者 /usr/bin 或者自己家目录的命令
      • UID : 500 - 60000 ( centos 6 ) UID : 1000 - 60000 ( centos7 )
    • 系统用户(伪用户):
      • 一般不会登录系统,一般情况是用来维护某个服务程序
      • UID : 1 - 499 ( centos6 ) ; UID : 1 - 1000 ( centos7 )

  • 关于用户的相关配置文件
    • 账号信息:/etc/passwd
    • 密码信息:/etc/shadow
test:x:1000:1000:xxxx:/home/test:/bin/bash
用户密码占位符UIDGID用户描述用户家目录登录后使用的shell解释器
txt
ps: 
/sbin/nologin 	# 是不可登录的
/bin/bash		# 是可以登录的

  • 添加用户命令:useradd
    • -u # 指定用户UID
    • -d # 指定用户主目录
    • -g # 指定用户所属组
    • -r # 指定用户是系统用户
    • -s # 用户登录shell解释器
    • -M # 不创建主目录
txt
eg:
创建一个用户XD,指定UID为1010,指定家目录为/home/XD 
指定所属组为root组,指定登录shell为/bin/bash

命令 : useradd -u 1010 -d /home/XD -g root -s /bin/bash XD
  • 登录用户时出现以下信息如何解决:
txt
如下:
bash-4.2$
bash-4.2$

解决:复制相关信息到家目录
cp -r /etc/skel/.bash* /home/XD/

  • 删除用户命令:userdel
    • -r # 连同家目录一块删除
  • 添加用户组命令:groupadd
  • 删除用户组命令:groupdel
  • 修改用户的信息命令:usermod
    • -u # 指定用户UID
    • -d # 指定用户主目录
    • -g # 指定用户所属组

  • 设置用户密码命令 :passwd
    • passwd XD
    • echo "123456" | passwd --stdin XD


4.8、linux文件属性与权限操作


  • 查看文件的属性:ls -lrti
txt
135088935 -rw-------. 1 root root 1778 Oct 1 2020 yum.log

第一列:i节点;i节点可以理解文件id,一个i节点号可以对应多个文件,一个文件只能对应一个i节点号

第二列:文件的类型与权限
- #代表的是文件;d#代表是目录; l #软链接文件 ;b #代表块设备;c #代表的是硬件设备(键盘)
r:表示读权限 ;w:表示写权限;x:表示执行权限
4:表示读权限 ;2:表示写权限;1:表示执行权限

rw-------: (分为三列) 
rw- --- ---,第一列为所属者(u)的权限,第二列为所属组(g)的权限,第三列为其它(o)的权限


第三列:有多少文件名链接到这个节点
第四列:文件的所有者
第五列:文件的所有组
第六列:容量大小,单位默认为B
第八列:创建或最近修改的时间
第九列:文件名

  • 链接
txt
软连接:ln -s
eg:ln -s /home/XD/yum.log /usr/local/
inode 跟源文件不一样,源文件一旦删除,软链接将找不到源文件

硬链接:ln
eg:ln /home/XD/yum.log /usr/local/XD/
inode 与源文件一模一样,源文件删除,硬链接还可以继续使用。常用于防止重要文件被误删

  • 修改文件的权限命令 chmod
    • -R # 递归的意思
    • chmod -R 777 /home/XD/*
txt
eg:
chmod u+x,g+w,o+w boot.log
chmod u-x,g-w,o-w boot.log
chmod 777 boot.log

  • 修改文件的所有者跟所属组命令 chown
    • -R # 递归的意思
txt
eg: 更改文件目录XD 的所属者为root用户 跟 所属组为XD组

chown -R root:XD XD


4.9、linux的文件归档与解压缩


  • 文件归档:

    文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,

    这个集合储存在一个文件中。归档文件是没有进行压缩的,

    所以占用的空间是所有文件或者目录的总和。工作中经常与压缩结合在一起使用


  • 文件压缩:节约磁盘空间,加快文件的传输速率

解压缩命令:gzip ; xz

  • gzip : 不能压缩目录,只能压缩文件,压缩速度最快,但是压缩比例比较低。扩展名:.gz
    • 不保留源文件压缩:gzip 123.txt
    • 保留源文件压缩:gzip -c 345.txt > 345.txt.gz
    • 保留源文件的解压:gunzip -c 345.txt.gz > 234.txt
    • 不保留源文件的解压:gunzip -d 345.txt.gz
  • xz : 可以压缩目录和文件,压缩速度比较慢,但是压缩比例最高。扩展名:.xz
    • 不保留源文件压缩:xz 123.txt
    • 保留源文件压缩:xz -c 345.txt > 345.txt.gz
    • 不保留源文件的解压:unxz 345.txt.xz
    • 保留源文件的解压:unxz -d -k 123.txt.xz

  • 归档与压缩命令 tar :
    • -c # 创建新文件
    • -f # 指定文件格式
    • -v # 显示详细过程
    • eg (only 归档) :
      • tar -cf vmware.tar vmware-tools-distrib
      • tar -cvf vmware-tools.tar vmware-tools-distrib
    • -z # 以 gzip 方式归档压缩
      • tar -zcvf vmware-tools.tar.gz vmware-tools-distrib
    • -J # 以 xz 方式归档压缩
      • tar -Jcvf vmware-tools.tar.xz vmware-tools-distrib
      • tar -Jcvf /home/XD/vmware-tools.tar.xz vmware-tools-distrib
    • -x # 解档解压操作
      • tar -xf vmware-tools.tar.xz
    • -C # 指定解压路径


第五章、Linux 进阶命令