Linux及操作系统介绍
时间:2022-08-23 04:00:01
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:编号ID0用户(通常是指root)运行过程中产生的数据。
另外,在Linux文件系统背诵通常由以下类型组成,其特点总结如下:
文件系统 | 最大文件名长度 | 最大文件大小 | 最大分区大小 |
---|---|---|---|
ext2 | 255 bytes | 2 TB | 16TB |
ext | 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 <创建文件catfile并在屏幕上输入内容,最后输入EOF结束,如果不使用< | | |
文件查看 | 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 root root 6 Aug 12 11:31 myfolder
-rw-十--r--.1 root root 57504164 Aug 11 20:16 MySQL -server-5.6.40-1.e16.x86_64.rpm
第一栏的10个字符,共分为4个部分:
第1个字母:–代表普通文件,d 代表目录
第2、3、4:代表当前文件或文件夹所属用户〈 owner〉的权限
第5、6、7:代表当前文件或文件夹所属的用户组( group)的权限
第8、9、10:代表其他用户组和其他用户(other)的权限
权限的表示方式:
r读:也可以使用数字4来表示
w写:数字2
x执行:数字1
功能项 | 命令实例 | 作用 |
---|---|---|
chmod | chmod *[*权限][文件或目录] | 更改文件或目录的权限 |
Is -l hello.txt | 查看文件的详细属性,对其进行解释 | |
左边10位中的第一位代表文件类型 | d代表目录 -代表普通文件 l 代表链接文件 | |
左边10位中的后9位代表权限 | 前3位代表文件所有者的权限(用u表示)中间3位代表文件所在组的权限(用g表示)后3位代表其他组的权限(用o表示) | |
权限rwx的意义 | 权限r或数字4-表示可读权限w或数字2-表示写权限x或数字1 --表示可执行 | |
chmod u+x hello.txt | 为hello.txt文件所有者添加可执行权限 | |
chmod u-w hello.txt | 为hello.txt文件所有者去除可执行权限 | |
chmod g-r hello.txt | 为hello.txt文件所在组去除可读权限 | |
chmod o+w hello.txt | 为hello.txt文件的所在组的其它组添加可写权限 | |
chmod a+w hello.txt | 为所有三种角色添加可写权限 | |
chmod a+wx hello.txt | 为所有三种角色添加可写权限 | |
chmod a-rwx hello.txt | 去除hello.txt的所有权限(此时仅root可编辑) | |
chmod 777 hello.txt | 将hello.txt的权限设为rwxrwxrwx | |
chmod 643 hello.txt | 将hello.txt的权限设为rw-r—wx | |
chmod 777 /opt/test | 将目录/opt/test的权限更改为777 | |
chmod -R 755 /opt/test | 将目录/opt/test及其下所有文件和子目录的权限更改为755 | |
chown | chown mary hello.txt | 将hello.txt的文件所有者改为mary |
chown mary /opt/test | 将目录/opt/test的所有者改为mary | |
chown -R mary /opt/test | 将目录/opt/test及其所有子目录和文件的所有者改为mary | |
chgrp | chgrp test hello.txt | 将hello.txt所在的组改为test |
chgrp mary /opt/test | 将目录/opt/test所在的组改为mary | |
chgrp -R mary /opt/test | 将目录/opt/test及其所有子目录和文件所在的组改为mary | |
passwd | passwd mary | 修改mary的密码 /etc/shadow保存了所有用户的密码,默认只有root能操作 |
文件查找与归档压缩
文件查找
功能项 | 命令实例 | 作用 |
---|---|---|
find | find 起始目录 查找类型 查找条件 | 查找起始目录及所有子目录下的文件及文件夹 |
find . -name “hello.txt” | 查找当前目录下文件名为hello.txt的文件或文件夹 | |
find . -name “hello” | 查找当前目录下文件名包含hello的文件或文件夹 | |
find /home -name “bash” | 查找目录/home下文件名包含bash的文件或文件夹 | |
find . -name “*” | 查找当前目录下的所有文件或文件夹(作用同Is -R) | |
find . -name “[h]*” | 查找当前目录下以h开头的文件或文件夹 | |
find . -name “[h |f]*” | 查找当前目录下所有以h或f开头的文件或文件夹 | |
find . -name “[a-z]*” | 查找当前目录下所有以小写字母开头的文件或文件夹 | |
find . -name"[A-Z]*" | 查找当前目录下所有以大写字母开头的文件或文件夹 | |
find . -name “[a-Z]*” | 查找当前目录下所有以字母开头的文件或文件夹 | |
find . -name “[h-w]*” | 查找当前目录下所有以字母h-w开头的文件或文件夹 | |
find . -name “[0-9]*” | 查找当前目录下所有以数字开头的文件或文件夹 | |
find . -name “[5-8]*” | 查找当前目录下所有以数字5-8开头的文件或文件夹 | |
find . -name “h?llo*” | 查找当前目录下所有以h后面带一个字符再加llo开头的文件或文件夹 | |
find . -name " [^a-h】*" | 查找当前目录下所有不以a-h开头的文件或文件夹 | |
find . -name ‘\\’ | 查找当前目录下所有包含特殊字符的文件(注意使用单引号) | |
find . -perm 777 | 查找当前目录下权限为777的文件或文件夹 | |
find . -path “./test” -prune -o -name “hello” | 查找当前目录下除test目录的其他所有目录中包含hello的文件或文件夹 | |
find . -user mary | 查找当前目录下文件所有者为mary的文件或文件夹 | |
find . -group dev | 查找当前目录下文件或文件夹所在组为dev的内容 | |
find . -mtime -3 | 查找当前目录下在3天内更新过的文件或文件夹 | |
find . -mtime +3 | 查找当前目录下在3天前更新过的文件或文件夹 | |
find . -newer helllo.txt | 查找当前目录下比hello.txt新的文件或文件夹 | |
find . ! -newer helllo.txt | 查找当前目录下比hello.txt 旧的文件或文件夹 | |
find . -type d | 查找当前目录下所有的文件夹(普通文件的类型为f),了解Linux文件类型:1)f:普通文件,如文本文件,可执行文件 2)d:目录3)l:软链接文件4)c:字符设备,如终端,磁带机等5) b:块设备,如光盘,硬盘等 | |
find . -type l | 查找当前目录下所有的软链接文件 | |
find . -size 602c | 查找当前目录下文件大小为602字节的文件,可用单位为: c- byte, k -,Kilobytes,M - Megabytes, G- Gigabytes | |
find . -size +602c | 查找当前目录下文件大小大于602字节的文件(用-表明小于) | |
find . -name “hello*” -exec ls -l {} ; | 查找当前目录下所有以hello开头的文件并将其细节显示出来,如果查找出了目录,那么此时要注意目录会被ls-l列出来 | |
find . -name “hello*” -exec rm {} ; | 查找当前目录下所有以hello开头的文件并将其删除 | |
find . -name “hello*” xargs ls -l | 查找当前目录下所有以hello开头的文件并将其细节显示出来 | |
Linux命令中的| | 管道,前面的输出就是后面的输入 |
内容查找
功能项 | 命令实例 | 作用 |
---|---|---|
grep | grep[选项]匹配模式目标文件 | 基于行对目标文件的内容进行查找 |
grep “root” /etc/passwd | 查找到/etc/passwd文件中包含root的行 | |
grep -n “root” /etc/passwd | 查找到/etc/passwd文件中包含root的行并输出行号 | |
grep “^ma” /etc/passwd | 查找以ma为行首的行 | |
grep “bash$” /etc/passwd | 查找以bash为行尾的行 | |
grep “1” /etc/passwd | 查找以r或d为行首的行 | |
grep -v "内容” | 排除包含“内容""的行 | |
ls |grep test | 从ls的输出中过滤出包含test的文件名 | |
grep -r games /etc | 在/etc目录下查找所有包含games的文件 | |
grep “^s.*login$” ./passwd | 以sy开头,并且以login结尾的行 | |
find与grep结合 | find ./ -name "*” |xargs grep word | 遍历某个目录下的所有文件中包含word的文件,与上一条命令的功能类似xargs grep word |
wc | wc -l | 统计文件行数或输出的个数,-c或–bytes或–chars只显示Bytes数。-l或–ines 显示行数。-W或–words只显示字数,如果不指定参数,则统计所有信息 |
文件归档压缩
更多操作功能项 | 命令实例 | 作用 |
---|---|---|
tar / gzip | tar -cvf hello.tar hello.txt | 将hello.txt归档并命名成hello.tar |
tar -cvf test.tar /opt/test | 将目录/opt/test归档并命名成test.tar | |
tar -tf test.tar | 将归档文件test.tar中的文件显示出来 | |
tar -xvf test.tar | 提取归档文件中的内容 | |
gzip hello.tar | 将归档文件hello.tar压缩成hello.tar.gz | |
gzip -d hello.tar.gz | 解压缩文件成hello.tar | |
tar -zcf hello.tar.gz hello.txt | 将hello.txt归档并压缩成hello.tar.gz | |
tar -zxvf hello.tar.gz | 解压缩 | |
zip / unzip | zip hello.zip hello.txt | 将hello.txt压缩并命名成hello.zip |
zip -r test.zip /opt/test | 将/opt/test目录压缩 | |
unzip -v hello.zip | 查看压缩文件hello.zip中的文件信息 | |
unzip hello.zip | 解压缩hello.zip |
进程与服务管理
进程(Process):操作系统正在运行的应用程序,任意一个进程,都会有进程ID,都会消耗CPU和内存资源,服务(Service):通过服务控制面板或命令直接启动的应用程序,也可能是操作系统启动时自动启动的后台应用程序。服务一旦运行,也是一个进程。在Windows中,可以运行"services.msc"命令打开服务控制面板。
进程相关命令
ps:当前终端启动的进程
ps -ef或ps aux:查看当前操作系统里面所有进程信息
ps aux l grep sbin查找进程里面包含sbin的进程信息
ps aux | sort -k 3 -r | head -n 6:取出最消耗cPu的前5个进程的信息
top:查看进程信息和系统的性能情况
top -n 1 | sort -k 9 -r | head -n 6:取出最消耗cPu的前5个进程的信息
kill PID:结束进程
kill -9 PID:强制结束进程
服务管理运行
(1 ) service:在CentOS-7以前的版本中使用,另外,在其他Linux发行版中通常也使用service
(2) systemctl: CentOS-7及以后的版本使用,当然,也兼容service
#查看服务状态
service sshd status
systemctl status sshd
#启动某个服务
service sshd start
systemctl start sshd.service (.service可以不写)
#停止某个服务
service sshd stop
systemctl stop sshd
#重启某个服务
service sshd restart
systemctl restart sshd
#启用自动启动的功能
systemctl enable sshd
#禁止自动启动
systemctl disable sshd
#查看服务情况
systemctl list-unit-files
#启动自带防火墙服务
systemctl start firewalld
Xampp安装
首先Xampp是一个自解压离线安装包,不需要下载,不需要额外命令,先确保上传,然后给安装包授予可执行权限
[root@zxgtwy opt]# xampp-7inux-x64-7.3.29-1-installer.run
-bash: xampp-linux-x64-7.3.29-1-installer .run: command not found
默认情况下,即使是执行当前目录下的可执行程序,也不能直接写文件名,而是必须在前面加上﹒/ , 这才表示是执行当前目录下的可执行程序如果不加 ./ ,Linux不会在当前目录下寻找,而是去系统预先配置好的环境变量当中去寻找,但是找不到,所以报错
安装完成后,/opt/lampp/lampp start启动Xampp的三个服务:Apache,MysQL,ProFTP
第一次启动时会报错,修改vi /opt/lampp/lampp,将2.2.5的内核版本号,修改为2.8.0,再次启动又可能会报错:
netstat : command not found
netstat是Linux中的一个常规的网络相关的命令,用于查看当前系统中开启了哪些端口,默认最小化安装时没有安装
yum install net-tools
在Linux中安装应用
使用Rpm离线安装
先下载到本地,以.rpm文件名结尾,下载完成后,再安装。
rpm -qa | grep mysql
rpm -ivh mysq180-community-release-e16-1.noarch.rpm
rpm -e mysq180-community-release-e16-1.noarch
利用rpm安装MySQL服务器版:
[root@zxgtwy opt]# rpm -ivh MysQL-server-5.6.40-1.e16.x86_64.rpm
warning: MySQL -server-5.6.40-1.e16.x86_64.rpm: Header v3 DSA/SHA1 Signature,key ID 5072e1f5: NOKEY
error : Failed dependencies :
/usr/bin/per1 is needed by My5QL-server-5.6.40-1.e16.x86_64[root@centqiang opt]#
Failed dependencies:失败的依赖,缺少perl
基于源代码安装应用
源代码安装比较合适于专业人员,并不需要要求安装人员能看懂源码,但是要知道源代码的基本过程
解压后去源码目录找以下几个文件:configure, setup.sh, install.sh
./ configure
make
make install
安装nginx-1.21.2.tar.gz
[root@zxgtwy nginx-1.21.0]# ./configurechecking for os
+ Linux 3.10.0-1160.e17.x86_64 x86_64checking for c compiler ... not found
./ configure: error : c compiler cc is not found
[root@zxgtwy nginx-1.21.0]# yum install gcc -y
安装完成后再进行配置,如果提示缺少依赖库pcre或zlib等,则可以继续yum install pcre-devel.....
通常情况下,如果提示缺少什么库,一般先尝试yum install pcEe,如果不行,再尝试 yum install pcre-devel
Yum命令操作
Yum (全称为Yellow dog Updater,Modified)是一个在Fedora和RedHat以及Cent0S中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum list:查询本机已经安装的包
yum search mysql:在线搜索当前源(库)可用的包
yum repolist:列出当前的镜像仓库(repository)
yum install gcc:安装gcc
yum install gcc -y:不再提示是否确认,直接选择Yes
yum install gcc cmake gcc-c++ mysq1 wget -y:不再提示是否确认,直接选择Yes
yum deplist curl:查看应用程序curl的依赖库(library)
yum erase wget:卸载wget,卸载过程建议不要加-y,最好做二次确认
yum remove wget: 同上
yum clear all :清空缓存的镜像列表
yum makecache : 重新根据配置文件构建镜像缓存列表
yum update:更新
Yum配置源
默认配置文件: /etc/yum.repo.d/CentOS-Base.repo
[base]
name=Centos-$releasever - Base
mirrorlist=http://mirror1ist.centos.org/release=Sreleasever&arch=Sbasearch&repo=os&infra=$infra4#baseur1=http: //mirror .centos.org/centos/$releasever/os /$basearch/
gpgcheck=1
gpgkey=file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-7
mirrorlist并非镜像本身的地址,而是一堆镜像网址的集合,Centos会自动选择速度最快的一个
常用的网络命令
-
ping命令
ping www.woniuxy.com:测试是否也woniuxy. com的服务器连通,同时可以查看响应时间,及响应时间的分布情况 ping -i 3 www . woniuxy.com:每3秒钟访问一次 ping -c 5 www . woniuxy.com:一共发送5个数字包 ping -f www . woniuxy.com:快速发送ICMP数据包,进行压力测试 ping -f -c 200 www.woniuxy.com:设定具体的发包数量,用于快速检测响应时间等数据 ping -s 1024 www . woniuxy. com:设定每个ICMP数据包的大小
-
ip命令
ip addr:查看网卡及IP信息 ifconfig:同上 ip neigh : ARP协议,查看相邻计算机 arp -an:同上 ip link:查看网卡MAC地址等 ip -s link:查看网卡的收发数据包大小,RX:收,TX:发 ifconfig -s :同上 ip addr add 192.168.112.225/24 dev ens33:临时为ens33网卡添加一个IP地址,systemct1 restart network后消失 ifconfig ens33 192.168.112.225:l临时修改IP地址 ip addr del 192.168.112.225/24 dev ens33:删除一个IP地址 查看路由IP地址: ip route :route:或netstat -r或route -n ip route add default via 192.168.112.1:为当前网络添加默认路由(网关) route add default gw 192.168.112.1:同上 ip route del default via 192.168.112.1:删除路由地址 route del default gw 192.168.112.1:同上 ip route flush cache:刷新路由表 ip link set ens33 up:启动网卡 ifconfig ens33 up:同上,down表示关闭 ss -anl:查看当前系统中的端口占用情况 netstat -anlop:同上
老版本上的工具 | iproute2工具 | 说明 |
---|---|---|
ifconfig | ip addr, ip link, ip -s | 地址及链接配置 |
route | ip route | 路由表 |
arp | ip neigh | 邻居 |
iptunnel | ip tunnel | 通道 |
nameif | ifrename, ip link set name | 网络接口更名 |
ipmaddr | ip maddr | 多播 |
netstat | ip -s,ss, ip route | 多种网络统计数据 |
mii-tool | ethtool | 用mii与网卡自动协商工作状态 |
要使用老版本的命令,必须安装net-tools: yum install net-tools
-
traceroute命令
Linux : traceroute www.woniuxy.com:跟踪到达woniuxy.com的所有路由节点和路径,默认支持30个跃点 windows : tracert www.woniuxy.com:同上
-
wget命令
wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar. gz wget -o wordpress.tar.gz http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz:断点续传 wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz:后台下载
TCPDump流量监控工具
流量监控概述
对于一个通信过程的分析,首先需要把握5个最基本的数据:
源IP:谁发起的请求,谁就是源,任意一端都可能是源,也可能是目标。
源端口:通常情况下,第一次发起请求的,可以称之为客户端,第一次的目标机,称之为服务器端。
目标IP:通常情况下,目标IP地确定的,并且目标端口也是确定的
目标端口:对于服务器端来说,通常是固定的
协议:事先约定好的规则,http, https, ssh是最为流行的应用层协议,
安装tcpdump
yum install -y tcpdum
Installing:
tcpdump x86_64 14:4.9.2-4.e17_7.1
Installing for dependencies :
libpcap x86_64 14:1.5.3-12.e17
libpcap是Linux上标准的流量监控的库,大多数流量监控工具都是基于这个底层库进行开发
在windows上,比较知名的是winpcap和npcap
目前市面上主流的防火墙、IDS、IPS、包过滤工具、只要涉及到流量的产品或系统,底层均基于以上这些库
tcpdump使用
tcpdump -i ens33: 监控ens33网卡上的流量,并输出到终端
tcpdump tcp and dst port 80 -i ens33:只监控当前服务器端的80端口的流量
tcpdump tcp and dst port 80 -i ens33 -w ./target.pcap:将流量保存到target.pcap
tcpdump tcp and dst port 80 -i ens33 -c 100:只捕获100条就自动结束
IPTables基础应用
IPTables防火墙介绍
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个""安全框架"才是真正的防火墙,这个框架的名字叫netfilter。netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。netiter/iptables (下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。当一条网络连接试图在你的系统中建立时,iptables 会查找其对应的匹配规则。如果找不到,iptables将对其采取默认操作。
iptables的结构是由表(tables)组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables规则时,要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。
-
五张表: filter, nat, mangle,raw,security:表主要用于将不同的规则存贮在不同的表中
(1 ) filter表:默认表,负责过滤数据包,使用频率最高(2) nat表:用于网络地址转换(IP、端口)
(3) mangle表:主要应用在修改数据包、流量整形、给数据包打标识
(4) raw表:这个表很少被用到,主要用于配置连接跟踪相关内容,使用频率较少
(5) security表:这个表用于安全Linux的防火墙规则,是iptables最近的新增表,使用频率较少 -
五条链:
(1 ) input:匹配目标IP是本机的数据包,入站(2) output:出口数据包,出站
(3) forward:匹配流经本机的数据包,转发
(4) prerouting:修改目的地址,用来做DNAT。如:把内网中的80端口映射到互联网端口(5) postrouting:修改源地址,用来做SNAT。如:局域网共享一个公网IP接入Internet。
-
规则:基于防火墙策略设置的各类防护规则,防火墙规则的执行顺序认为从前到后依次执行、遇到匹配的规则就不在继续向下检查、如果遇到不匹配的规则则会继续向下进行。
安装与配置
systemctl stop firewalld
firewalld默认在没有设定规则的情况下,是拒绝所有流量,而iptables默认没有设定规则的情况下,是允许所有流量
yum install iptables iptables-services
基本的命令使用
iptables -nL:将端口号以数字的形式显示黑认表fi1ter中的规则
iptables -I INPUT -j DROP:所有入站流量全部丢弃,包括SSH请求
iptables -I OUTPUT -j DROP:所有出站流量全部丢弃,包括SSH响应
上述两条命令一旦执行:所有流量无法进来,所有流量无法出去,断网状态
-I 插入到开头 -A跟着
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -I INPUT -p tcp --dport 22 -j ACCEPT:打开目标端口22,接受流经该端口的流量iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p icmp -j REJECT
iptables -I OUTPUT -p icmp -j DROP
DROP:直接丢失数据包,不会向源端做任何回复
REJECT:拒绝接收数据包,并向源端发送拒绝响应
iptables -I INPUT -p icmp --icmp-type echo-request -j DROP
iptables -I INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -I OUTPUT 1 -p icmp --icmp-type echo-reply -j DROP
iptables -L INPUT --line-numbers
iptables -D INPUT 1
iptables -F
service iptables save
cat /etc/sysconfig/iptables
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
iptables -I INPUT -s ☆☆☆.☆☆☆.☆☆☆.☆☆☆ -j DROP
iptables -D INPUT -s ☆☆☆.☆☆☆.☆☆☆.☆☆☆ -j DROP
#允许本地访问外部IP地址和端口号,通过设定良名单的方式可以防止本机去访问别的服务器
#通过这种场景的设置,可以最大可能避免反弹she11和挖矿程序去试图通过本地访问目标服务器下载恶意程序或执行恶意指令。
iptables -I INPUT -i ens33 -p tcp -s 192.168.112.153 --sport 8088 -j ACCEPT
iptables -I 0UTPUT -o ens33 -p tcp -d 192.168.112.153 --dport 8088 -j ACCEPT
#防止DDoS攻击,设定一些数据的限制条件
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
#端口转发
#第一种:本机端口转发,比如80端口对外封闭,开放一个45692供外部访问,外部只知道45692,不知道80,可以避免协议猜测
#第二种:远程端口转发,把本机接收到的请求转发到远程电脑和对应端口上(远程可以是本地局域网,也可以是公网服务器)
iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 80
#远程端口转发:
#需要确保端口转发功能是启用的
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf
iptables -t nat -A PREROUTING -d 192.168.112.188 -p tcp --dport 8888 -j DNAT --to-destination192.168.112.153:8088
iptables -t nat -A POSTROUTING -d 192.168.112.153 -p tcp --dport 8088 -j SNAT --to 192.168.112.188
命令参数表
参数 | 说明 |
---|---|
-A | 添加—条规则,即添加在规则的最后 |
INPUT | 链名、常用、大写 |
PREROUTING | 链名、大写 |
OUTPUT | 链名、大写 |
-l | 指定链中插入规则,即添加到规则最前 |
-s | 指定源地址,可以是IP地址,也可以是网段"192.168.109.10/24"; “-s为空”,表示所有 |
-d | 目标地址 |
-p | 指定协议 |
–dport | 指定主机端口(本机开放或拒绝端口) |
–sport | 指定主机端口(如:禁止连接对方某端口) |
-i | 指定网卡名,表示报文流入的接口 |
-o | 指定网卡名,表示报文流出的接口 |
-j | 指定所需要的操作 |
ACCEPT | 允许 |
REJECT | 拒绝,拒绝提供服务 |
DROP | 拒绝,丢弃数据包不回应 |
–src-range | 源地址范围,(如:拒绝某IP段访问) |
–dsc-range | 目标地址的范围 |
–mac-source | 源主机的mac地址 |
-t | 指定表名,默认是filter查看详细信息 |
-v | 查看详细信息 |
-nvL --line-nurbers | 查看fliter表中规则的顺序 |
-nvL -t mangle | 查看mangle表中的防火墙规则 |
-F | 清空filter表 |
-I | 指定链中插入规则 |
-R | 替换规则 |
-m | 指定模块 |
iptables的功能总结
1、常用的两张表: filter、nat、filter用于过滤数据包,nat用于路由转发功能
2、常用的两条链:INPUT、OUTPUT
3、常见的三个行为:ACCEPT、DROP、REJECT
4、限制流量的三个特征:端口、协议、IP(五元组), -d -s --dport --sport-pc
5、端口转发:本机端口、远程端口
FireWalld基础应用
-
firewalld的基本使用
启动:systemctl start firewalld 查看状态:systemctl status firewalld 停止:systemctl disable firewalld 禁用:systemctl stop firewalld 重启: systemctl restart firewalld firewalld中,没有表,没有链,没有行文,默认拒绝所有流量
-
区域
在不同的区域下