Linux常用操作大全(下)

往期文章:Linux常用操作大全(上)

文章目录

七、网络传输

1.下载和网络请求

ping命令

测试网络是否联通

语法:ping [-c num] ip或主机名

  • 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
  • 参数:被检查的服务器的ip地址或主机名地址

示例:

  • 检查到baidu.com是否联通

结果表示联通,延迟8ms左右

  • 检查到39.156.66.10是否联通,并检查3次

wget命令

wget是非交互式的文件下载器,可以在命令行内下载网络文件

语法:wget [-b] url

  • -b:可选,后台下载,会将日志写入当前工作目录的wget-log文件
  • url:下载链接

**示例:**下载apache-hadoop 3.3.0版本:wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。

curl命令

curl可以发送http网络请求,可用于:下载文件、获取信息等

语法curl [-0] url

  • -0:用于下载文件,当url是下载链接时,可以使用此选项保存文件
  • url:要发起请求的网络地址

示例

  • 向cip.cc发起网络请求:curl cip.cc
  • 向baidu.com发起网络请求:curl baidu.com

2.端口

概念

端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类

  • 物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等
  • 虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的

物理端口我们日常生活中经常见到,也能知晓它的作用。

但是虚拟端口,有什么用?为什么需要它呢?

  • 通过IP地址查询

计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。

通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通

IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址

Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:

**1.公认端口:**1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口非特殊需要,不要占用这个范围的端口

**2.注册端口:**1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务

3.动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

如图中,计算机A的微信连接计算机B的微信,A使用的50001即动态端口 ,临时找一个端口作为出口计算机B的微信使用端口5678,即注册端口,长期绑定此端口等待别人连接

查询端口状态:nmap,netstat

nmap命令

可以通过Linux命令去查看端口的占用情况

使用nmap命令,安装nmap:yum -y install nmap

语法: nmap 被查看的IP地址

可以看到,本机(127.0.0.1)上有5个端口现在被程序占用了。

其中:22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口

netstat命令

安装netstat:yum -y install net-tools

语法:netstat -anp | grep 端口号

功能:查看指定端口的占用情况

如图,可以看到当前系统6000端口被程序(进程号7174)占用了

其中,0.0.0.0:6000,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问

可以看到,当前系统12345端口,无人使用哦。


八、进程管理

1.进程的概念

程序运行在操作系统中,是被操作系统所管理的。

为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程

并会为每一个进程都分配一个独有的:进程ID(进程号)

2.PS查看进程

功能:查看进程信息

语法:ps -ef,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx

  • -e:显示出全部的进程
  • -f:以完全格式化的形式展示信息(展示全部信息)

一般来说,固定用法就是: ps -ef 列出全部进程的全部信息

从左到右分别是:

  • UID:进程所属的用户ID
  • PID:进程的进程号ID
  • PPID:进程的父ID(启动此进程的其它进程)
  • C:此进程的CPU占用率(百分比)
  • STIME:进程的启动时间
  • TTY:启动此进程的终端序号,如显示?,表示非终端启动
  • TIME:进程占用CPU的时间
  • CMD:进程对应的名称或启动路径或启动命令

查看指定进程

  • 在FinalShell中,执行命令:tail,可以看到,此命令一直阻塞在那里在
  • FinalShell中,复制一个标签页,执行:ps -ef 找出tail这个程序的进程信息

问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?

我们可以使用管道符配合grep来进行过滤,如:ps -ef | grep tail,即可准确的找到tail命令的信息

  • 过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦

  • 如:ps -ef | grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)

3.杀死进程kill

在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。

同样,在Linux中,可以通过kill命令关闭进程。

语法kill [-9] 进程ID

-9:表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。

冷知识:为什么选择-9?

命令kill -l 查看所有信号量,杀死进程对应的是序号9


九、主机状态

1.任务管理器top命令

可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器

默认每5秒刷新一次,按q或ctrl + c退出

语法:top,查看基础信息

功能:查看主机运行状态

c++ 复制代码
//介绍一下最上面五行的含义:
    第一行:top:命令名称,14:39:58:当前系统时间,up 6 min:启动了6分钟,2 users:2个用户登录,load:1、5、15分钟负载
	第二行:Tasks:179个进程,2 running:2个进程子在运行,177 sleeping:177个进程睡眠,0个停止进程,0个僵尸进程
	第三行:%Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU				率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
	第四行:Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
	第五行:KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
     
下方图表含义: 
    1.PID:进程id
    2.USER:进程所属用户
    3.PR:进程优先级,越小越高
    4.NI:负值表示高优先级,正表示低优先级
    5.VIRT:进程使用虚拟内存,单位KB
    6.RES:进程使用物理内存,单位KB
    7.SHR:进程使用共享内存,单位KB
    8.S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
    9.%CPU:进程占用CPU率
    10.%MEM:进程占用内存率
    11.TIME+:进程使用CPU时间总计,单位10毫秒
    12.COMMAND:进程的命令或名称或程序文件路径

可用选项:

当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制

交互式模式中,可用快捷键:

2.磁盘信息监控df

查看磁盘占用

语法df [-h]

  • -h:以更加人性化的单位显示

3.查看磁盘iostat命令

查看CPU、磁盘的相关信息

语法: iostat [-x] [num1] [num2]

  • -x:显示更多信息

  • num1:数字,刷新间隔,num2:数字,刷新几次

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

  • 使用iostat的-x选项,可以显示更多信息
c++ 复制代码
rrqm/s:	每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge, 提高IO利用率, 避免重复调用);
wrqm/s:	每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:	每秒读取的扇区数;sectors
wsec/:	每秒写入的扇区数。
rKB/s:	每秒发送到设备的读取请求数
wKB/s:	每秒发送到设备的写入请求数
avgrq-sz 	平均请求扇区的大小
avgqu-sz 	平均请求队列的长度。毫无疑问,队列长度越短越好。    
await:  	每一个IO请求的处理的平均时间(单位是微秒毫秒)。
svctm    	表示平均每次设备I/O操作的服务时间(以毫秒为单位)
%util: 	磁盘利用率

4.网络状态监控sar命令

可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)

语法:sar -n DEV num1 num2

  • -n:查看网络,DEV表示查看网络接口

  • num1:刷新间隔(不填就查看一次结束),num2:查看次数(不填无限次数)

如图,查看2次,隔3秒刷新一次,并最终汇总平均记录

c++ 复制代码
信息解读:
IFACE 本地网卡接口的名称
rxpck/s 每秒钟接受的数据包
txpck/s 每秒钟发送的数据包
rxKB/S 每秒钟接受的数据包大小,单位为KB
txKB/S 每秒钟发送的数据包大小,单位为KB
rxcmp/s 每秒钟接受的压缩数据包
txcmp/s 每秒钟发送的压缩包
rxmcst/s 每秒钟接收的多播数据包

十、环境变量

1.概念

在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。

比如,cd命令的本体就是:/usr/bin/cd 这个程序文件。

我们是否会有疑问,为何无论当前工作目录在哪里,都能执行:/usr/bin/cd这个程序呢?这就是环境变量的作用啦。

环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。在Linux系统中执行:env命令即可查看当前系统中记录的环境变量环境变量是一种KeyValue型结构,即名称和值,如下图:

如图,图中记录了:HOME:/home/itheima,用户的HOME路径USER:itheima,当前的操作用户PWD:当前工作路径...等等一系列信息,用于辅助系统在运行的时候从环境变量中获取关键信息

2.env命令

查看系统全部的环境变量

语法:env

在前面提出的问题中,我们说无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。

PATH记录了系统执行任何命令的搜索路径,如上图记录了(路径之间以:隔开):

  • /usr/local/bin
  • /usr/bin
  • /usr/local/sbin
  • /usr/sbin

当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体比如执行cd命令,就从第二个目录/usr/bin中搜索到了cd命令,并执行。

3.自行设置环境变量

Linux环境变量可以用户自行设置,其中分为:

  • 临时设置:export 变量名=变量值
  • 永久设置:
    • 针对用户,设置用户HOME目录内:.bashrc文件
    • 针对全局,设置/etc/profile
    • 并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效

4.PATH变量

环境变量PATH这个项目里面记录了系统执行命令的搜索路径。

这些搜索路径我们也可以自行添加到PATH中去。

测试:

  1. 在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
  2. 通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
  3. 完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行

修改PATH的值

语法:export PATH=$PATH:自定义路径

临时修改PATH:export PATH=$PATH:/home/itheima/myenv,再次执行mkhaha,无论在哪里都能执行了

或将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去

5.$符号

在Linux系统中, 美元符号被用于取"变量"的值。环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。取得环境变量的值就可以通过语法: $ 环境变量名 来取得

可以取出指定的环境变量的值

语法:$变量名

示例:

就可以取得PATH这个环境变量的值,并通过echo语句输出出来。

  • echo $PATH,输出PATH环境变量的值
  • echo ${PATH}ABC,输出PATH环境变量的值以及ABC

当和其它内容混合在一起的时候,可以通过{}来标注取的变量是谁


十一、上传下载

我们可以通过FinalShell工具,方便的和虚拟机进行数据交换。

在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的:

  • 浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
  • 浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中

上传rz命令

当然,除了通过FinalShell的下方窗体进行文件的传输以外,也可以通过rz、sz命令进行文件传输。

rz、sz命令需要安装,可以通过:yum -y install lrzsz,即可安装。

功能:rz命令,进行上传,

语法:rz

下载sz命令

功能:sz命令进行下载,

语法:sz 要下载的文件

  • 文件会自动下载到桌面的:fsdownload文件夹中。

注意,rz、sz命令需要终端软件支持才可正常运行FinalShell、SecureCRT、XShell等常用终端软件均支持此操作


十二、压缩解压

市面上有非常多的压缩格式

  1. zip格式:Linux、Windows、MacOS,常用
  2. 7zip:Windows系统常用
  3. rar:Windows系统常用
  4. tar:Linux、MacOS常用
  5. gzip:Linux、MacOS常用

在Windows系统中常用的软件如:winrar、bandizip等软件,都支持各类常见的压缩格式,这里不多做讨论。

我们现在要学习,如何在Linux系统中操作:tar、gzip、zip这三种压缩格式

完成文件的压缩、解压操作。

Linux和Mac系统常用有2种压缩格式,后缀名分别是:

  • .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
  • .gz,也常见为.tar.gz.gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积

针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作

压缩

tar命令

语法:tar [-z -c -v -f] 压缩包 被压缩1...被压缩2...被压缩N

c++ 复制代码
-c,创建压缩文件,用于压缩模式
-v,显示压缩、解压过程,用于查看进度
-x,解压模式
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z,gzip模式,不使用-z就是普通的tarball格式
-C,选择解压的目的地,用于解压模式

注意:

1.-f选项,必须在选项位的最后一位

2.-z选项,建议在开头位置

3.-C选项单独使用,和解压所需的其它参数分开

c++ 复制代码
tar的常用组合为:
    tar -cvf test.tar 1.txt 2.txt 3.txt
    将1.txt 2.txt 3.txt 压缩到test.tar文件内
    tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
    将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
  • -z表示使用gzip,可以不写

zip命令

可以使用zip命令,压缩文件为zip压缩包

语法:zip [-r] 参数1 参数2 参数N

  • -r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
c++ 复制代码
示例:
1.zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
    
2.zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内

解压

tar命令

tar -zxvf 被解压的文件 -C 要解压去的地方

  • -z表示使用gzip,可以省略
  • -C,可以省略,指定要解压去的地方,不写解压到当前目录
c++ 复制代码
常用的tar解压组合有
	1.tar -xvf test.tar
	解压test.tar,将文件解压至当前目录
    
	2.tar -xvf test.tar -C /home/dasktop
	解压test.tar,将文件解压至指定目录(/home/dasktop)
    
	3.tar -zxvf test.tar.gz -C /home/dasktop
	以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/dasktop)

unzip命令

使用unzip命令,可以方便的解压zip压缩包

语法:unzip [-d] 参数

  • -d,指定要解压去的位置,同tar的-C选项
  • 参数,被解压的zip压缩包文件
c++ 复制代码
示例:
	1.unzip test.zip,将test.zip解压到当前目录
	2.unzip test.zip -d /home/dasktop,将test.zip解压到指定文件夹内(/home/dasktop)

十三、其他操作

1.su命令

切换用户

语法:su [-] [用户]

  • -表示切换后加载环境变量(建议带上)
  • 省略默认切换到root

2.sudo命令

  • 可以让一条普通命令带有root权限,语法:sudo 其他命令
  • 需要以root用户执行visudo命令,增加配置方可让普通用户有sudo命令的执行权限

比如:

shell 复制代码
itheima ALL=(ALL)       NOPASSWD: ALL

在visudo内配置如上内容,可以让itheima用户,无需密码直接使用sudo

3.chmod命令

修改文件、文件夹权限

语法:chmod [-R] 权限 参数

  • 权限,要设置的权限,比如755,表示:rwxr-xr-x

  • 参数,被修改的文件、文件夹

  • 选项-R,设置文件夹和其内部全部内容一样生效

4.chown命令

修改文件、文件夹所属用户、组

语法:chown [-R] [用户][:][用户组] 文件或文件夹

5.用户组管理

以下命令需root用户执行

  • 创建用户组

groupadd 用户组名

  • 删除用户组

groupdel 用户组名

6.用户管理

7.genenv命令

  • getenv group,查看系统全部的用户组

  • getenv passwd,查看系统全部的用户

相关推荐
唐青枫1 小时前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
努力的小雨11 小时前
我用 QClaw 做了个 Web3 陪学助手,专治 Java 程序员的“概念劝退”
经验分享·ai智能
RainCity1 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh