Linux及操作系统介绍
操作系统的作用
-
五大基本功能
(1)进程和线程的管理:进程线程的状态、控制、同步互斥、通信调度等(2)存储管理:分配/回收、地址转换、存储保护等
(3)文件管理:文件目录、文件操作、磁盘空间、文件存取控制(4)设备管理:设备驱动、分配回收、缓冲技术等
(5)用户接口:系统命令、编程接口 -
三个作用
(1)资源的管理者
(2)向用户提供各种服务(3)对硬件机器的扩展
-
操作系统的应用场景
(1)嵌入式设备:如POS机、单反相机、游戏机、智能设备等(2)移动端设备:如手机、平板电脑等
(3)个人桌面电脑:如上网本、游戏本、笔记本电脑、台式机等(4)服务器:如云服务器、PC服务器、刀片服务器、小型机等
(5)超级计算机:各类超级计算机、大型服务器等
通常情况下,服务器端操作系统(Windows,Linux)不会安装GUI界面,只是一个内核加Shell,再加少量命令行。
使用堡塔和XShell
SSH协议介绍
SSH为Secure Shell 的缩写,由IETF的网络小组(Network Working Group)所制定;SSH为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台,常见的可视化操作工具如本节内容所介绍的两款工具,也可以是基于命令行的SSH命令。SSH提供两种级别的安全验证。
1、第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击。
2、第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密"质询”(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令,相对来说更加安全。
SSH与SCP命令
-
SSH命令
c:\Users\Denny>ssh -1 root 192.168.157.136 root@192.168.157.136's password: Last login: wed Aug 11 01:44:40 2021 from 192.168.157.136 [root@zxgtwy ~]# uname Linux
如果是首次连接,会提示类似以下的信息,输入"yes"回车即可:
The authenticity of host '192.168.157.136 (192.168.157.136)' can't be established. ECDSA key fingerprint is SHA256:bj1deKY0toY2wWZ6RlX0k39iArND5MEcHqY8B93gkcU. Are you sure you want to continue connecting (yes/no/[fingerprint])?
以下命令表明成功使用Windows的SSH内置命令连接到Linux上,进而可以不需要借助于XShell等工具进行远程连接。也可以使用以下方式进行连接:
c:\users\Denny>ssh root@192.168.112.225 root@192.168.112.225's password: Last login: wed Aug 11 02:01:50 2021 from 192.168.112.14 [root@zxgtwy ~]#
-
SCP命令
从Windows上传文件到Linux
C:\Users\lenovo>scp C:\Users\lenovo\Desktop\cccc.jpg root@192.168.157.136:/opt root@192.168.157.136's password: cccc.jpg 100% 172KB 42.1MB/s 00:00
从Linux下载文件到Windows
C:\Users\lenovo>scp root@192.168.157.136:/opt/cccc.jpg E:\ root@192.168.157.136's password: cccc.jpg 100% 172KB 50.5MB/s 00:00
如果要传输的是文件夹,则添加-r参数即可
Linux的文件系统
文件系统解读
在Linux下运行"df -h"命令,可以查看到目前Linux中存在的硬盘分区情况,及每个分区的硬盘使用情况。
[root@zxgtwy ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 1.3G 49G 3% /
/dev/sda1 1014M 150M 865M 15% /boot
/dev/mapper/centos-home 46G 33M 46G 1% /home
tmpfs 378M 0 378M 0% /run/user/0
上述命令的结果中可以看到,Filesystem列表示文件系统,Size表示硬盘的大小,Used表示已经使用了多大,Avail表示剩余使用量,Use%表示占用百分比,Mounted on表示目前挂载到哪个目录下。
另外,对上述几个挂载的目录进行一下简单的说明。
(1) /dev: dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。
(2) /dev/shm: /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。该分区的大小通常是系统内存的一半大小,由于该目录是驻留在内存中,所以对于在系统中需要使用的临时数据,可以将其存储在该目录中,就相当于我们直接在使用内存读写文件,速度相当快。(基本上来说,内存的读写速度可以达到硬盘的100倍左右)。
内存除了快以外,还有一个特性:断电则数据全部丢失。
(3) /run:一些运行过程中跟用户或进程有关的数据,属于内核级文件。
(4) /sys/fs/cgroup:关于运行过程中CPU、内存等数据,属于内核级文件。
(5)/∶根目录,用户可以使用的保存操作系统其他文件的目录,用户也可以创建自己的目录。
(6) /boot:操作系统的内核及在引导过程中使用的文件。
(7) /home:普通用户使用的根目录,通常也称之为“家目录",类似于Windows下的CNUsers目录。
(8) /run/user/0:编号ID为0的用户(通常是指root)在运行过程中产生的数据。
另外,在Linux中,文件系统诵常由以下类型构成,其特点总结如下:
文件系统 | 最大文件名长度 | 最大文件大小 | 最大分区大小 |
---|---|---|---|
ext2 | 255 bytes | 2 TB | 16TB |
ext3 | 255 bytes | 2 TB | 16TB |
ext4 | 255 bytes | 16TB | 1 EB |
XFS | 255 bytes | 8EB | 8EB |
1TB=1024GB,1PB=1024TB,1EB=1024PB,目前还没有单个存储器达到EB这个容量级别。
Linux根目录说明
命令实例 | 作用 |
---|---|
/ | 表示根目录,是绝对路径 |
./ | 表示当前目录,是相对路径 |
…/ | 表示上—级目录,是相对路径 |
/root | root用户的主目录 |
/home/username | 存放普通用户的个人配置文件 |
/bin | 存放linux常用的命令 |
/boot | 存放系统启动时要用到的文件 |
/dev | 存放linux系统中使用的外部设备 |
/etc | 存放系统管理时用到的配置文件和子目录 |
/usr/sbin | 存放管理员的系统管理程序 |
/lib | 存放系统动态链接共享库 |
/lost+found | 系统运行异常时产生的错误,会将遗失的片断放在这里 |
/mnt | 可临时将别的外部设备挂接在此目录下 |
/proc | 存在系统内存中的信息 |
/usr | 用户的应用程序和文件都存放在这个目录下 |
/tmp | 存放临时文件的目录 |
通常情况下,我们可以使用/opt和/home目录,这两个目录均是由用户自由处理的,不存在敏感文件,也可以将程序安装在/opt/目录下,默认情况下,程序安装路径会在/usr/bin 或/var/目录下
常见命令使用
-
top命令
类似于Windows的任务管理器,可以查看CPU和内存等使用情况,也可以查看每个进程所消耗CPU和内存,及进程ID等信息
top命令是全屏输出结果,如果要退出该命令,可以按"Q"键或"Ctrl+C"退出
- 其他命令
命令 | 作用 |
---|---|
cd …/或cd … | 切换到上一层目录 |
cd 目录名 | 切换到对应目录 |
pwd | 查看当前所在目录 |
du -sh | 查看文件或文件夹的大小 |
fdisk -l | 查看磁盘分区列表 |
free | 查看内存使用情况 |
cat文件名 | 查看文本文件内容,如cat /etc/passwd可查看用户信息 |
cat /proc/meminfo | 查看内存信息 |
cat /proc/cpuinfo | 查看CPU信息 |
Linux的启动级别
命令实例 | 作用 |
---|---|
文件/etc/inittab | 设置默认启动级别 |
0 | 代表halt,关机操作,这个0不能设置,否则机器将不能启动 |
1 | 代表单用户模式,采用这个设置,系统只能允许一个用户登 |
2 | 代表多用户模式,但不支持网络工作 |
3 | 代表命令行界面,即文本界面,是企业中服务器通用的启动模式 |
4 | 系统预留,该级别目前还没有使用 |
5 | 代表图形界面,也是Linux系统启动时带GUI的默认启动模式 |
6 | 代表重启模式,这个6也不能设置,否则系统反复重启 |
Linux的关机与重启
命令实例 | 作用 |
---|---|
reboot | 重启 |
shutdown -r now | 现在立刻重启 |
shutdown -r 11:30 | 等到11:30进行重启 |
shutdown -r +1 | 等1分钟后重启 |
halt | 关机 |
shutdown -h now | 现在立刻关闭系统 |
shutdown -h 11:30 | 等到11:30关闭系统 |
init 0 | 关机 |
init 6 | 重启 |
文本编辑器VI的使用
文本的创建与查看
功能项 | 命令实例 | 作用 |
---|---|---|
文件创建 | vi /opt/learn/hello.txt | 在目录/opt/learn下创建文件hello.txt并进入vi编辑界面 |
touch /opt/learn/test | 在目录/opt/learn下创建空白文件test | |
cat > /opt/learn/catfile <<EOF | 创建文件catfile并在屏幕上输入内容,最后输入EOF结束,如果不使用<<EOF,则输入结束时直接按Ctrl+D也可以 | |
文件查看 | vi /etc/passwd | 在vi编辑器中输出文本内容 |
cat /etc/passwd | 在屏幕上输出文本内容 | |
more /etc/passwd | 分屏输出文本内容 | |
less /etc/passwd | 分屏输出文本内容并按需加载文件(适用于大文件的查看) | |
head -n 10 /etc/passwd | 只输出文件的头10行 | |
tail -n 20 /etc/passwd | 只输出文件末尾的20行 | |
tail -f 文本文件 | 表示通过流的方式实时查看文件 | |
strings /bin/ls | 查看二进制文件中的可打印字符 |
文本内容的编辑
编辑一段文本,在命令行模式下,vi是默认编辑器,进入vh界面后,有两种处理模式:命令模式和编辑模式。默认命令模式进入,按"i"或"a"“进入编辑模式,在编辑模式下,按“ESC”"进入命令模式。
命令实例 | 作用 |
---|---|
vi filename | 生成新文件或者编辑查看文件 |
i或者a | 从命令模式进入编辑模式, i为插入文本,a为追加文本 |
Esc | 从编辑模式进入命令模式 |
:w | 保存文本 |
:wq | 保存并退出 |
:wq! | 保存并强制退出 |
:q | 退出 |
:q! | 不保存,强制退出 |
o | 添加一行 |
O | 在光标所在行的上方添加一行 |
dd | 删除一行文字 |
D | 删除从当前光标到行尾的内容 |
x | 删除—个字符 |
s | 删除一个字符并切换到编辑模式 |
S | 删除一行并切换到编辑模式 |
:n | 光标移至文本第n行 |
$ | 光标移到文本的行尾 |
A | 光标移到文本的行尾并切换到编辑模式 |
^ | 光标移到文本的行首 |
G | 光标移到文本的末尾 |
gg | 光标移到文本的首行 |
ZZ | 存盘退出 |
/字符串 | 查找某个字符串 |
n | 继续查找 |
:u | 撤消(同标准编辑器中的Ctrl+Z) |
:redo | 重做(同标准编辑器中的Ctrl+Y) |
文件操作
功能项 | 命令实例 | 作用 |
---|---|---|
文件操作 | cp hello.txt /opt/test | 把文件hello.txt复制到文件夹/opt/test下 |
cp hello.txt /opt/test/hello.cp | 把文件hello.txt复制到文件夹/opt/test下并重命名成hello.cp | |
mv hello.txt /opt/test | 将文件hello.txt剪切到文件夹/opt/test下 | |
mv hello.txt /opt/test/hello.mv | 将文件hello.txt剪切到文件夹/opt/test下并重命名成hello.mv | |
mv hello.txt hello2.txt | 重命名 | |
rm /opt/test/hello.cp | 删除文件 | |
rm -f /opt/test/hello.mv | 强制删除文件,不会有提示信息 | |
du -sk hello.txt | 查看文件hello.txt的大小(以K为单位) | |
链接 | ln -s hello.txt shello | 为hello.txt文件创建一个名为shello的软链接(类似于快捷方式) |
ln -d hello.txt dhello | 为hello.txt文件创建一个名为dhello的硬链接硬链接表示所有文件中更改任意一个,其他文件的所有属性会跟着变化,如大小,更新时间,权限等 |
文件夹操作
功能项 | 命令实例 | 作用 |
---|---|---|
ls / tree | ls [option][file/directory] | 显示指定目录下的所有文件或文件夹(同Windows->dir命令) |
ls | 显示当前目录的内容 | |
ls -l | 显示当前目录详细内容 | |
ls -a | 显示当前目录下的所有文件,包括隐藏文件 | |
ls *.txt | 显示目前下所有以.txt为后缀名的文件 | |
ls /opt/training | 显示目录/opt/training下的内容 | |
ls -R/opt/ | 列出所有/opt目录及其子目录的内容 | |
tree /opt | 用树状结构显示目录及文件 | |
pwd | pwd | 显示当前所在目录 |
cd | cd directory | 切换到指定目录 |
cd | 切换到当前用户所有的主目录 | |
cd … | 回退到当前目录的上一级目录 | |
cd /opt/learn | 用绝对路径切换到/opt/training目录下 | |
cd …/ …/ | 使用相对路径切换到当前目录的上—级的上—级目录下 | |
cd . | 切换到当前用户,相当于什么也没做 | |
mkdir | mkdir [option][director1] [directory2] … | 创建目录 |
mkdir /opt/learn/other | 在目录/opt/learn/下创建目录other | |
mkdir dir2 dir3 dir4 | 同时创建dir2 dir3 dir4三个目录 | |
mkdir -p /dir1/dir2/dir3/dir4 | 同时创建一个4层目录 | |
rmdir | rmdir dir1 | 删除—个空目录 |
其他操作 | cp -r /opt/learn lopt/learn2 | 拷贝文件夹 |
mv /opt/learn2 /opt/learn3 | 重命名文件夹 | |
rm -rf /opt/learn3 | 强制删除文件夹 | |
rm -rf / | 无提示地强制递归删除文件 | |
rm -rf /* | 无提示地强制递归删除全部文件 | |
xxx -h或 XXx --help或 man xXx | 查看命令的帮助 |
用户与用户组权限
功能项 | 命令实例 | 作用 |
---|---|---|
用户组 | cat /etc/group | 查看当前系统存在的用户组 |
groupadd testing | 添加一个新的用户组testing | |
cat /etc/group | 查看组是否被新增成功 | |
groupmod -n test testing | 将testing重命名成test | |
groupdel test | 删除组test | |
groups root | 查看用户root所在的所有组 | |
useradd | cat /etc/passwd | 查看当前系统的用户信息 |
useradd qiang | 新增一个用户qiang(默认时将新增一个对应的名为qiang的组) | |
useradd -g test denny | 新增一个用户denny并将其加入test组 | |
useradd -g test -G dev mary | 新增用户mary,其主组为test,并附加到组dev中 | |
usermod | usermod -g dev qiang | 将用户qiang换到dev组 |
usermod -G 502 qiang | 将用户qiang附加到gid为502的这个组 | |
usermod -d /home/temp/mary | 将mary的主目录从/home/mary改为/home/temp | |
userdel | userdel qiang | 删除用户qiang |
userdel -f qiang | 强制删除用户qiang(即使该用户已经登录) | |
userdel -r qiang | 删除用户qiang并删除其主目录 |
文件与文件夹权限
任意一个文件或者文件夹,用ls -l的命令可以显示其基本信息和权限信息
drwxr-xr-x. 2 r