linux基础20230701
## 操作系统
没有安装操作系统的计算机,通常被称为裸机
- 如果再裸机上运行自己所编写的程序,就必须用机器语言书写程序
- 如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序
系统调用:将与硬件交互的过程通过操作系统封装成接口,直接调用,不需要亲自去对接硬件
比如:听歌
-
- 将歌曲文件从硬盘加载到内存
- 使用声卡对音频数据进行解码
- 将解码后的数据发送到音箱
主流操作系统
-
桌面操作系统
- windows 系列
- 用户群体大
- macOS
- 开发体验nice
- Linux
- 应用软件少
- windows 系列
-
服务器操作系统
- linux(免费,安全,稳定)
- windows server(付费)
-
嵌入式操作系统(智能机器人、智能家居)
- linux
-
移动设备操作系统
- iOS
- android(基于linux)
虚拟机
通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统(VMware)
- 虚拟系统通过生成现有操作系统的全新虚拟镜像、具有真实操作系统完全一样的功能
- 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软,保存数据,拥有自己的独立桌面,不会对宿主机系统产生任何影响
- 而且能够在现有系统与虚拟镜像之间灵活切换
Linux内核及发行版
- 内核(kernel)是系统的心脏,是运行程序和管理磁盘和打印机等硬件设备的核心程序,他提供了一个在裸机与应用程序间的抽象层
linux发行版
也叫做GNU/linux发行版 通常包含包括桌面环境、办公套件、媒体播放器、数据库等应用软件
常见的发行版本:
- Ubuntu
- Redhat
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
文件系统
windows系统是单用户系统
unix和linux系统是多用户系统
单用户系统:一台计算机在同一时间只能由一个用户使用,一个用户独自享有系统的全部硬件和软件资源
多用户系统:一台计算机在同一时间只能由多个用户使用,多个用户共同享用系统的全部硬件和软件资源
Linux主要目录速查表
/:根目录 :一般根目录下只存放目录,在linux下有且只有一个根目录,所有的东西从这里开始
- 当在终端里输入/home,其实是在告诉电脑,先从/开始,再进入到home目录
/bin、/usr/bin:可执行的二进制文件的目录。如常用的命令ls、tar、mv、cat等
/boot: 放置linux系统启动时用到的一些文件。如linux的内核文件:/boot/yulinuz,系统引导管理器:/boot/grub
/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备。常用的时挂载光驱 mount /dev/cdrom /mnt/cdrom
/etc:系统配置文件存放的目录,不建议再此目录下存放可执行文件,重要的配置文件有
- /etc/inittab
- /etc/fstab
- /etc/init.d
- /etc/X11
- /etc/sysconfig
- /etc/xinetd.d
/home: 系统默认的用户目录,新增用户时,用户的家目录都存放再此目录下
- ~表示当前用户的家目录
- ~edu 表示用户edu的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些意识的片段放置于此目录下
/mnt:/media:光盘默认挂载点,通常挂载在/mnt/cdrom
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存,所以不占用磁盘空间,比较重要的文件
有/proc/cpuinfo,/proc/interrupts,proc/dma,/proc/ioports,/proc/net
/root:系统管理员的家目录
Linux命令
Linux 刚面世并没有图形界面,所有 的操作都靠命令完成, 如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等
在工作中,大量的服务器维护都是在远程通过SSH客户端来完成
命令发行版的命令大概200多个
Ubuntu
ctrl+shift++放大终端字体
ctrl+- 缩小终端字体
help command 和command --help
--表示一些固定用法
1)内部命令和外部命令
Linux 的内建命令是 shell 程序的一部分,Linux 系统加载运行时就被加载并驻留在系统内存里的,因此执行速度较快。 Linux 的外部命令是通过额外安装获得的命令,不随系统一起被加载到内容中,运行速度慢但功能强大。 使用 type 命令可以查看该命令是内建命令还是外部命令 type <command>
2)help cd方式只能用于内建命令的操作
通过执行内建的 help 命令查看帮助文档
jxl@jxl-virtual-machine:~$ help help help: help [-dms] [模式 ...] 显示内建命令的相关信息。
3)command --help 查询内部命令和外部命令的帮助文档
通过命令后携带参数 help 的方式来展示所查询命令的帮助文档 ,如果是内建命令command --help 等价于help command
help cd 和cd -help
mv --help --help 显示此帮助信息并退出
man command
man 是 manual 的简写,与 help 命令和 --help 参数不同,使用 man 命令查询帮助手册时会进入 man page 界面,而非直接打印在控制台上。同时,相比与 help,man 命令的信息更全,help 则显示的信息简洁
操作键 | 功能 |
---|---|
空格 | 显示下一屏 |
enter | 向下滚动一行 |
b | 向上回滚一屏 |
f | 向下滚一屏 |
q | 退出 |
/str | 向后查找str字符串 |
?str | 向后查找str字符串 |
n, N | n 为搜索到的下一个字符串,N 为搜索到的上一个字符串 |
man page详解
名称 | 含义 |
---|---|
NAME | 命令名称及简要说明 |
SYNOPSIS | 命令执行语法概要 |
DESCRIPTION | 完整的命令说明 |
OPTIONS | 列举所有可用的参数项 |
COMMANDS | 当命令在执行的时候,可以在程序中执行的命令 |
FILES | 这个命令所参考或链接的某些文件 |
SEE ALSO | 有关这个命令的其他说明 |
EXAMPLE | 一些可以参考的范例 |
BUGS | 是否有相关的错误 |
我们注意到,在第一行有 “MV(1)” 的字样,括号内的数字代表什么含义呢?它其实是对所查询信息的一个分类。
数字 | 代表含义 |
---|---|
1 | 用户在shell环境中可操作的标准命令或可执行文件 |
2 | 系统内核调用的函数及工具 |
3 | 常用的库函数 |
4 | 设备文件与设备说明等 |
5 | 配置文件或文件格式 |
6 | 游戏等娱乐 |
7 | 协议信息等 |
8 | 系统管理员可用的管理命令 |
9 | 与 Linux 内核相关的文件文档 |
info 命令(不常用,不记录笔记)
info 命令的功能基本与 man 命令相似,能够显示出命令的相关资料和信息。
而与 man 命令稍有区别的是,一方面,info 命令可以获取所查询命令相关的更丰富的帮助信息;另一方面,info page 将文件数据进行段落拆分,并以 “节点” 的形式支撑整个页面框架,并将拆分的段落与节点对应,使得用户可以在节点间跳转而方便阅读每一个段落的内容。
linux:7种文件类型
- \1. 普通文件 (-)
- \2. 目录 (d)
- \3. 链接文件 (l)
- \4. 块设备 (b)
- \5. 字符设备 (c)
- \6. 管道文件 (p)
- \7. 套接字文件
隐藏文件
隐藏文件是配置linux软件
就是关于ssh安装时的配置信息,不删除,不理会
通配符
选项的一般含义
-h 通常意指 'h' + uman, 也就是 human-readable ,让人类更好的读取方式来表示
-v (小写) 通常意指 'v' erbose 冗长的,延展的 表示查看更详细的一些信息
-V (大写) 通常意指 ‘V’ ersion,与 --version 相比之下比较冷门 查看版本
-a 通常意指 'a'll
-r 通常意指 recursive ,递归
mkdir
创建目录,不能创建文件
创建多级目录时需要-p递归创建
Try: sudo apt install <deb name> 你没有从用户名开启进入终端
tree
可以以树状图列出文件目录的结构
tree -d 只显示目录
cp
默认只复制文件(复制到达的目录下可以自己取个文件的名字,也可以只写路径,不写名字,按复制前的名字),加r可以复制目录
-f :覆盖复制
-i:会提示
-r:若给出的源文件是目录文件,则cp。若递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名
把一个文件复制到桌面 cp ~/Document/1.txt ./1.txt
rm
一次删除多个文件夹
rm -r a b
mv
可以移动文件或目录,也可以给文件或目录重命名
查看文件内容
cat
concatenate 查看文件内容、创建文件、文件合并、追加文件内容等
适合查看内容较少的文件
cat -b 可以显示出文件的行数(忽略空行)
cat -n会把空行的行号也显示出来
more
分屏显示文件内容
适合查看内容较多的文件
grep
-
强大的文本搜索工具
-
允许对文本进行模式查找。也就是正则表达式匹配
grep 查找的文件内容 文件路径/文件名 grep -n显示匹配行及其行号 (**加n的参数会显示出行号**) grep -v显示不包含匹配文本的所有行 grep -i忽略大小写 常用的两种模式查找 ^a:行首,搜寻以a开头的行 ke$:行尾,搜寻以ke结尾的行
grep的管道用法
几乎每次用ps命令时都会用到该命令,接着使用上一篇的例子:
ps -ef|grep tomcat ps -ef也是查找进程 ps -aux |grep tomcat ps-aux 显示所有包含其他使用者的进程 |grep tomcat 就是接受所有的进程再单独查找tomcat的进程 两者的输出结果差别不大,但展示风格不同。aux是BSD风格,-ef是System V风格
首先要明白什么是管道(|)命令
管道的左端写东西 ,右端读东西
Linux系统中的命令可以将标准输入读取数据,还能将这些数据送到标准输出中去,这种功能被系统进一步的利用,从而产生出一种新的特性,称之为管道符“|”,这个符号可以将一个命令的标准输出管道为另外一个命令的标准输入。
需要注意的是管道符的使用有两个条件:
1、管道命令只能处理前一个命令的标准输出,而不能处理标准错误; 2、管道命令右边命令必须能够接收标准输入。
ls -lh |more 把查找出来的命令分页显示处理
这下明白了,那么不难猜测grep就是使用管道的数据进行查找的命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
语法格式:
grep [选项] "搜索内容" 文件名
选项说明如下:
-a 不要忽略二进制数据。 -A 数字: 列出符合条件的行,并列出后续的n行 -B 数字: 列出符合条件的行,并列出前面的n行 -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。 -c: 统计找到的符合条件的字符串的次数 -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 -e<范本样式> 指定字符串作为查找文件内容的范本样式。 -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 -F 将范本样式视为固定字符串的列表。 -G 将范本样式视为普通的表示法来使用。 -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H 在显示符合范本样式的那一列之前,标示该列的文件名称。 -i 忽略字符大小写的差别。 -l 列出文件内容符合指定的范本样式的文件名称。 -L 列出文件内容不符合指定的范本样式的文件名称。 -n 输出行号 -q 不显示任何信息。 -R/-r 此参数的效果和指定“-d recurse”参数相同。 -s 不显示错误信息。 -v 反向查找 -w 只显示全字符合的列。 -x 只显示全列符合的列。 -y 此参数效果跟“-i”相同。 -o 只输出文件中匹配到的部分 --color=auto 搜索出的关键字用颜色显示
echo
echo会在终端显示参数指定的文字,通常和重定向使用
重定向>和>>
linux允许将命令执行结果重定向到一个文件 将本应输出到终端的结果重定向到、追加到文件 一个大于号是表示输出,直接创建一个文件,直接覆盖文件 两个大于号是追加到文件末尾
shutdown
shutdown 一分钟后关闭电脑
shutdown -c 取消关闭电脑操作 注意:需要直接在虚拟机里操作
远程终端操作:
使用Mobaxterm不能直接使用shutdown去操作
Failed to set wall message, ignoring: Interactive authentication required.
Failed to call ScheduleShutdown in logind, no action will be taken: Interactive authentication required.
提示需要交互式认证
shutdown -r 表示重新启动虚拟机
远程维护服务器时,最好不要直接关机,可以选择重启 (关机了不好人为打开这个远程服务器,特别麻烦)
ifconfig
ifconfig 可以查看、配置计算机当前网卡配置信息
网卡
网卡是一个专门负责网络通讯的硬件设备
IP地址是设置在网卡上的地址信息
可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码
以太网
以太网是一种计算机局域网技术
子网
网络上,数据从一个地方传到另外一个地方,是依靠 IP 寻址。从逻辑上来讲,是两步的。第一步,从 IP 中找到所属的网络,好比是去找这个人是哪个小区的;第二布,再从 IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。第一步中的网络,就称之为「子网」
子网掩码
子网掩码是需要配合IP地址一起使用的,用于指示IP地址的前多少比特是网络ID,后多少比特是主机ID
从逻辑上来讲,一般同一子网(Subnet)是使用相同的网关。就好比,一个小区的入口。IPv4 的 IP 地址是 32 位的,形式如 http://xxx.xxx.xxx.xxx,每一个 xxx 取值都是 0 - 255。到底是前三个 xxx 相同,就代表同一个子网,还是前两个,还是其他?这个并不一定。就好比小区有大有小,有的小区有上千户人家,有的小区只有区区几个。所以,就引入「子网掩码」(Subnet Mask)来标识该子网的大小。我们一般看到的 IP 地址是十进制的编码,所以如果换一个视角,从二进制的角度看,每一个 IP 地址就是 32 位 1 或 0。子网掩码,就是用来告诉这个子网的覆盖区间。这 32 位中,前多少位是网络段?当然,余下的就是主机段。举典型的例子:IP 中前 24 位代表子网号,后 8 位代表主机号。所以子网掩码就是 24 个 1(代表前 24 位是子网部分),加 8 个 0(后 8 位是主机部分)
子网+子网掩码:就是表示先用子网的前多少位来找到网络中的位置,后多少位来找到主机号部分。子网掩码就是在规定子网前多少位是网络位,后多少位是主机号位的。
举例:
IP地址和mac地址
IP地址
首先,我先为大家介绍一下什么是IP地址,IP地址(Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。 那么,IP地址分为:IPv4和IPv6。我们这里着重讲的是IPv4地址,IP地址是由32位的二进制数组成,它们通常被分为4个“8位二进制数”,我们可以把它理解为4个字节,它地格式表示为:(A.B.C.D)。其中,A,B,C,D这四个英文字母表示为0-255的十进制的整数。例:192.168.1.1
MAC地址
MAC地址(Media Access Control Address)的全称叫做媒体访问控制地址,也称作局域网地址,以太网地址或者物理地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址共48位(6个字节)。前24位由IEEE(电气和电子工程师协会)决定如何分配,后24位由实际生产该网络设备的厂商自行制定。例广播地址:FF:FF:FF:FF:FF:FF 查看本地IP以及MAC地址的操作:打开命令指示符(CMD),输入:ipconfig /all 回车,然后我们可以查看到MAC地址:
计算机的网卡情况
查看虚拟机的网卡信息
查看全部网卡 jxl@jxl-virtual-machine:~$ ls /sys/class/net/ ens33 lo 查看虚拟网卡 jxl@jxl-virtual-machine:~$ ls /sys/devices/virtual/net/ lo 查看物理网卡 jxl@jxl-virtual-machine:~$ ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`" ens33
NAT模式、主机模式、桥接模式的区别
NAT模式 :一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。局域网间可以互相通信,把局域网封装成一个ip和公网通信
在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。VMware Network Adapter VMnet8网卡是为了实现主机与虚拟机之间的通信。 可见NAT模式下主机更像是虚拟机们的"路由器",通过VMnet8虚拟网卡为虚拟机分发地址。所以虚拟机和主机不再同一网段下,可以理解为主机是虚拟机的"上级",这也就是为什么桥接模式没有VMnet0这个虚拟网卡,因为桥接模式下的虚拟机和主机是"平等"的,共用同一个路由器呀。
桥接模式(相当于独立出来了): 桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。 在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由 于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
桥接模式就是将主机网卡与虚拟的网卡利用虚拟网桥进行通信。类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机IP地址需要与主机在同一网段,如果需要联网,则网关与DNS需要与主机网卡一致。
VMnet0:用于桥接模式下的虚拟交换机 VMnet1:用于仅主机模式下的虚拟交换机 VMnet8:用于NAT模式下的虚拟交换机 对应地,在Windows主机上对应虚拟了VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,没有VMnot0的虚拟网卡
主机模式:仅主机模式可有看成是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
scp
都在windows的cmd上输入:
从windows复制到linux
scp -P 22 1.txt jxl@192.168.206.130:桌面/1.txt #22的端口默认可以不写
从linux复制到windows
scp -P 22 jxl@192.168.206.130:桌面/1.txt 1.txt #22的端口默认可以不写
加上r可以复制文件夹
fileZilla下载(支持FTP传输)
FTP的端口号默认是21
下载地址: 客户端 - FileZilla中文网
1 linux服务器安装ftp软件
sudo apt install vsftpd
2 查看ftp安装是否成功及路基
which vsftpd
3 查看ftp 服务器状态, 安装后已经启动
#service vsftpd status
4 启动ftp服务器及重启ftp服务器
#service vsftpd start #service vsftpd restart
5 查看服务有没有启动
#netstat -an | grep 21 //默认端口为21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 如果看到以上信息,证明ftp服务已经开启。
6 如果需要开启root用户的ftp权限要修改以下两个文件
#vi /etc/vsftpd.ftpusers中注释掉root #vi /etc/vsftpd.user_list中也注释掉root 然后重新启动ftp服务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!