什么是VXLAN – 华为

什么是VXLAN – 华为

本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包括:为什么需要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN隧道是如何建立的?VXLAN的详细配置命令请参见CloudEngine交换机的产品文档。

什么是VXLAN

发表在 linux文章 | 留下评论

Linux的150个常用命令汇总,运维大神不一定全部掌握!

下面是分类总结的150个命令,看一下你知道多少个?

1 文件和目录操作命令

命令作用
pwd显示当前所在位置
cd切换目录
tree以树形结构显示目录下的内容
mkdir创建目录
touch创建空文件
ls显示目录下的内容及相关信息属性
cp复制文件或目录
mv移动或重命名文件
rm删除文件或目录
ln创建硬链接或软连接
find查看目录下的文件
file显示文件的类型
pwd显示当前所在位置
xargs将标准输入转换成命令行参数
rename重命名文件
dirname显示文件或目录路径
chattr改变文件扩展属性
lsattr查看文件扩展属性
md5sum计算和校验文件的MD5值
chown改变文件或目录的用户和用户组
chmod改变文件或目录权限
umask显示或设置权限掩码

详细选项参数和实操请参考:Linux常用命令之文件管理

2 文件过滤及内容编辑处理命令

命令作用
cat合并文件或查看文件内容
tac反向显示文件内容
more分页显示文件内容
less分页显示文件内容
head显示文件内容头部
tail显示文件内容尾部
cut从文件中提取一段文字并输出
split分割文件
paste合并文件
sort文件排序
uniq去重复行
wc统计文件的行数、单词数或字节数
dos2unix将DOS格式文件转换成UNIX格式
iconv转换文件的编码格式
diff比较两个文件的不通
vimdiff可视化比较工具
rev反向输出文件内容
tr替换或删除字符
od按不同进制显示文件
tee多重定向
vi/vim文本编辑器

详细选项参数和实操请参考:Linux常用命令之文件处理

3 信息显示与文件搜索

命令作用
uname显示系统时间
hostname显示或设置系统的主机名
dmesg系统启动异常诊断
stat显示文件或文件系统状态
du统计磁盘看空间使用情况
date显示与设置时间
echo显示一行文本
watch监视命令执行情况
which显示命令的全路径
locate快速定位文件路径
updatedb更新mloacate数据库

详细选项参数和实操请参考:Linux常用命令之信息显示

4 文件备份与压缩命令

命令作用
tar打包备份
gzip压缩或解压命令
bzip2压缩或解压命令
zip打包和压缩文件
unzip解压zip文件
scp远程文件复制
rsync文件同步工具

详细选项参数和实操请参考:Linux常用命令之文件备份和压缩

5 用户管理及用户信息查询命令

命令作用
useradd创建用户
usermod修改用户信息
userdel删除用户
groupadd创建新的用户组
groupdel删除用户组
passwd修改用户密码
chage修改用户密码有效期
chpasswd批量更新用户密码
su切换用户
visudo编辑sudoers文件
sudo以另一个用户身份执行命令
id显示用户与用户组的信息
w显示已登录用户信息
who显示已登录用户信息
users显示已登录用户
whoami显示当前登录的用户名
last显示用户登录列表
lastb显示用户登录失败的记录
lastlog显示所有用的最近登录记录

详细选项参数和实操请参考:Linux常用命令之用户管理

6 磁盘与文件系统管理命令

命令作用
fdisk磁盘分区工具
gdisk磁盘分区工具
parted磁盘分区工具
partprobe更新内核的磁盘分区表信息
tune2fs调整ext2/ext3/ext4文件系统参数
mkfs格式化文件系统
dumpe2fs导出ext2/ext3/ext4文件系统信息
resize2fs调整ext2/ext3/ext4文件系统大小
xfs_growfs调整xfs文件系统大小
fsck检查并修复linux文件系统
dd转换或复制文件
mount挂载文件系统
df报告文件系统磁盘空间的使用情况
mkswap创建交换分区
swapon激活交换分区
swapoff关闭交换分区
sync刷新文件系统缓冲区

详细选项参数和实操请参考:Linux常用命令之磁盘管理

7 进程管理命令

命令作用
ps查看进程
pstree显示进程状态数
pgrep查看匹配条件的进程
kill终止进程
killall通过进程名终止进程
pkill通过进程名终止进程
top实时显示系统中各个进程的资源占用情况
nice调整程序运行时的优先级
renice调整运行中的进程的优先级
nohup用户退出系统进程继续工作
strace跟踪进程的系统调用
ltrace跟踪进程调用函数库
runlevel输出当前运行级别
init初始化linux进程
service管理系统服务(内核3.10以下)
systemctl管理系统服务(内核3.10及以上)

详细选项参数和实操请参考:Linux常用命令之进程管理

8 网络管理命令

命令作用
ifconfig配置或显示网络接口信息
ifup激活网络接口
ifdown禁用网络接口
route显示或管理路由表
arp管理系统的arp缓存
ip网络配置工具
netstat查看网络状态
ss查看网络状态
ping测试主机之间网络的连通性
traceroute追踪数据传输路由状况
arping发送arp请求
telnet远程登录主机
nc多功能网络工具
ssh安全的远程登录主机
wget命令行下载工具
mailq显示邮件传输队列
mail发送和接收邮件
nslookup域名查询工具
dig域名查询工具
host域名查询工具
nmap网络探测工具和安全/端口扫描器
tcpdump监听网络流量

详细选项参数和实操请参考:Linux常用命令之网络管理

9 系统管理工具

命令作用
lsof查看进程打开的文件
uptime显示系统的运行时间及负载
free查看系统内存信息
iftop动态显示网络接口信息流量情况
vmstat虚拟内存统计
mpstatCPU信息统计
iostatI/O信息统计
sar收集系统信息
chkconfig管理开机服务
setup系统管理工具
nmtui系统管理工具
ethtool查询网卡参数
mii-tool管理网络接口的状态
rpmRPM包管理器
yum自动化RPM包管理工具

yum管理参考链接:Linux系统的yum包管理详解,值得收藏!

发表在 linux文章 | 留下评论

Linux系统的yum包管理详解,值得收藏!

一、yum概述

1、yum和apt包管理器的区别

Linux 系统基本上分两大类:

RedHat系列:Redhat、Centos、Fedora 等;

Debian系列:Debian、Ubuntu 等。

目前国产操作系统基本都是基于这两大派系进行二次开发,整体上是换汤不换药,大多数命令是相通的。

而yum是一个RedHat系列的包管理器,基于RPM,使用rpm命令处理包。在CentOS 8及更高版本中被dnf(Dandified Yum)取代,dnf提供了一些性能改进和新的特性,使用上和yum基本相同。

apt是Debian系列的包管理系统,使用dpkg作为底层包管理系统。自动处理软件包的依赖关系,确保在安装新软件时所有必需的包都会一同安装。

包管理工具主要用于软件包的安装,升级,删除,查看。apt和yum都是为了简化软件包的管理和维护,它们在功能上非常相似,但在不同Linux发行版的生态系统中有各自的特性和用法

2、yum和rpm的区别

YUM和RPM包管理器的区别主要体现在软件仓库管理、‌更新机制、‌依赖关系处理以及使用场景上。‌

软件仓库管理:‌YUM使用软件仓库,‌使得管理大量软件包变得更加容易,‌而RPM通常单独管理每个包。‌这意味着YUM能够一次性更新所有软件包,‌而RPM需要手动更新每个包。‌

更新机制:‌YUM可以一次性更新所有软件包,‌而RPM需要手动更新每个包。‌这种差异使得YUM在处理大量软件包的更新时更为高效。‌

依赖关系处理:‌RPM是一个基础的包管理工具,‌而YUM是在RPM基础上构建的一个更高级、‌更易用的工具,‌特别适用于需要处理复杂依赖关系的场景。‌YUM能够自动解决软件包的依赖关系,‌而RPM则需要手动处理这些依赖关系。‌

使用场景:‌RPM适用于简单的系统或当不需要处理复杂的软件依赖关系时。‌而YUM则更适合于需要频繁更新和管理的复杂系统,‌尤其是在处理多个软件包之间的依赖关系时

二、配置yum源

配置在线yum源

常用的几个国内源站

1、清华大学
https://mirrors.tuna.tsinghua.edu.cn/

2、网易
http://mirrors.163.com/

3、阿里云
http://mirrors.aliyun.com

4、中科大
https://mirrors.ustc.edu.cn/

在有网环境默认使用各版本的官网yum源,一般比较慢,可用从国内的几个源站获取yum源。

下面是阿里云上快速获取CentOS7的基础源和epel源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all
yum makecache

另一种快速添加yum源方法:yum-config-manager

# 安装依赖包yum-utils
yum install yum-utils -y

# 添加阿里云源
yum-config-manager --add-repo=源url地址
yum-config-manager --add-repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 查看源列表
yum repolist

配置离线yum源

在工作中,出于安全性考虑,服务器并不能访问互联网,当使用rpm安装包安装一些软件时,经常出现缺少依赖而不能安装的情况。

此时我们需要配置本地yum源,配置本机yum源相对容易,一般只需要将系统镜像上传到主机后进行挂载。也可以搭建内网共享yum源,其他服务器都可以向共享yum源获取相应的依赖包。

本次环境给搭建搭建一个简单的单机yum源。 

1、下载上传iso镜像 根据对应的操作系统版本,下载对应的evething包,evething包软件多一点。

或者直接挂在光驱,也可以做yum源

2、挂在iso

# 创建挂载路径,这个路径可以随意
[root@localhost ~]# mkdir /media/iso
# 挂在iso镜像
[root@localhost ~]# mount -o loop /root/centos-7-x86_64-everything-2009.iso
mount: /dev/loop0 写保护,将以只读方式挂载
# 如果挂在了光驱,执行下面语句
[root@localhost ~]mount -o loop /dev/cdrom /media/iso

3、修改repo文件

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# mkdir backup
[root@localhost ~]# mv *.repo backup/
[root@localhost ~]cat >> local.repo <<EOF
[local]
name=local repo
baseurl=file:///media/iso
enable=1
gpgcheck=0
EOF
[root@localhost ~]# yum clean all
# 测试安装软件
[root@localhost ~]# yum install telnet

三、包管理器常用操作

rpm常用操作

rpm工具在工作中也有很多应用场景。

选项:

-i  安装
-v  显示执行过程
-h  显示安装进度(打印#)
-U  升级到新版本
-q  查询(常配合其他参数使用)
-a  查询所有软件
-l  查看软件的安装位置
-f  查看拥有指定文件的软件
-e  卸载
--force  强制执行
--nodeps  忽略依赖

常用组合:

# 安装一个新的软件包
rpm -ivh package.rpm 

# 升级软件包
rpm -Uvh package.rpm

# 强制安装软件包,即使存在版本冲突或其他问题。
rpm -Uvh --force package.rpm

# 删除软件包
rpm -e package_name 

# 忽略依赖,强制删除(慎用)
rpm -e --nodeps package_name 
# 列出系统上所有已安装的软件包
rpm -qa 

# 查询特定软件包
rpm -qa |grep ssh

# 查询版本号
rpm -q package_name 
rpm -q net-tools

# 询关于某个软件包的信息
rpm -qi package_name 
rpm -qi telnet

# 出一个软件包安装的文件列表。
rpm -ql package_name 
rpm -ql telnet

# 查找某个文件属于哪个软件包。
rpm -qf file_path :
rpm -qf `which nslookup`
bind-utils-9.11.4-26.P2.el7.x86_64

# 查询该包提供的内容。
rpm -q --provides package_name

# 模拟软件包的安装过程,检查是否有依赖项问题或其他错误。
rpm -i --test package.rpm

yum常用操作

1、yum仓库管理

# 列出可用的yum仓库
yum repolist

# 列出所有软件仓库,包括禁用的
yum repolist 

# 清除缓存
yum clean all

# 重新生成缓存
yum makecache

# 列出所有可用的软件包
yum list

# 列出指定的软件包
yum list |grep package_name
yum list | grep gcc

# 列出所有可升级的rpm包
yum list updates

# 列出所有已安装的rpm包
yum list installed

# 查看包详情
yum info wget

# 查看一个软件包的依赖关系
yum deplist 包名

2、查询软件包

# 查询软件包(支持模糊查询)
yum search 包名
yum search net-tools

# 查询某个命令由哪个软件包提供的
yum provides 要查询的命令/文件名
yum provides nslookup 
yum provides ifconfig

# 查看源中的软件版本
yum list docker --showduplicates | sort -r
yum list nginx --showduplicates

3、安装软件包

# 安装软件包,可用一起安装多个
# -y参数是直接确认安装,不用询问是否安装
yum install nfs-utils -y 
yum install -y vim gcc gcc-c++

# 默认安装的是最新版本,可用指定版本安装
yum install nginx-1.22.1

# 本地安装,已有rpm包
yum localinstall 本地包名.rpm -y 

# 只下载不安装(生产环境常用)
yum install  -y --downloadonly --downloaddir=存放目录 包名
以上操作一般还需要安装软件包:yum-plugin-downloadonly

# 组安装
yum groupinstall "Chinese Support"
# 安装一套LAMP
yum groupinstall "Web Server"

# 列出组信息
yum grouplist

# 删除组
yum groupremove "Chinese Support"

# 从指定源安装软件
yum install nginx --enablerepo=epel

4、更新软件包

# 更新所有可更新的软件包
yum update -y

# 更新指定软件
yum update nginx -y 

# 升级系统
yum upgrade  # 此命令会删除旧的软件包,重新安装新的软件包

# 更新软件包,自动解决依赖问题
yum upgrade --obsoletes -y

5、卸载软件包

# 卸载指定软件包,不卸载依赖包
yum remove 包名 -y
yum remove nginx -y

# 忽略依赖包
yum remove nginx --nodeps

# 连同依赖一起卸载
yum autoremove 包名
yum autoremove nginx

# 删除软件包,以及软件包数据和配置文件(慎用)
yum erase 包名

6、其他用途

# 查看yum执行历史
yum history

# 查看命令记录详情
yum history info 编号

# 撤销yum执行记录
yum history undo 编号

本篇关于Linux系统的包管理器知识分享完结!

发表在 linux文章 | 留下评论

Linux常用命令之网络管理

本篇继续分享Linux中常用命令。主要分享Linux系统的网络管理相关的命令。

ifconfig命令——配置或显示网络接口信息


ifconfig命令用于配置网卡IP地址等网络参数或显示当前网络的接口状态,需要以root用户的身份来执行。

如果命令不存在则安装

yum install -y net-tools

使用ifconfig命令配置网卡信息仅会临时生效,重启网络或服务器就会失效。

选项:

up激活指定的网络接口
down 关闭指定的网络接口
hw设置网卡的MAC地址

操作:

# 查看所有已启动的网卡信息 ifconfig
# 查看eth0网卡信息ifconfig eth0
# 查看所有网卡信息(包括未开启的)ifconfig -a
# 启动eth1网卡ifconfig eth1 up
# 关闭eth1网卡ifconfig eth1 down
# 为网卡配置信息ifconfig eth0 172.16.1.30

# 为网卡配置多个IPifconfig eth0:0 172.16.1.28 netmask 255.255.255.0  up
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.27 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fe80::ffaa:cae4:9cc0:3250 prefixlen 64 scopeid 0x20<link>
inet6 fe80::eb49:7220:1bb9:df4f prefixlen 64 scopeid 0x20<link>
inet6 fe80::21b6:b00:310a:19d3 prefixlen 64 scopeid 0x20<link>
ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet) RX packets 5035132 bytes 609739285 (581.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2070630 bytes 384120838 (366.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.28 netmask 255.255.255.0 broadcast 172.16.1.255
ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet)

网卡的配置文件在/etc/sysconfig/network-scriprts/目录下。eth0对应的是ifcfg-eth0文件。

ifup命令——激活网络接口


ifup命令可读取配置文件/etc/sysconfig/network和/etc/sysconfig/network-scripts/ifcfg-<configuration>对网络接口进行相应的操作。

操作:

# 激活eth0网络接口,等同于
ifconfig eth0 upifup eth0   
# 查看eth0网络接口状态

ifconfig eth0

ifdown命令——用于禁用指定的网络接口


操作:

# 关闭eth0网卡接口,该操作导致断开SSH连接,谨慎操作
ifdown eth0
# 重启网卡

ifdown eth0 && ifup eth0

route命令——管理路由表


route命令可以为服务器设置静态路由。

选项:

-n查看路由信息
-ee显示更详细的路由信息
add添加路由信息
del删除路由信息
-net到一个网络的路由,后面接网络号地址
-host到一个主机的路由,后面接一个主机地址
netmask添加子网掩码
gw指定网关
dev If指定由哪个网卡出去,如eth0

操作:

# 查看系统路由信息
route -n 
# 删除路由信息

route del default   //删除默认网关route del default gw 172.16.1.254 route del default  gw 172.16.1.254 dev eth0
# 添加路由信息

route add default gw 172.16.1.254
route add default gw 172.16.1.254 dev eth0
# 配置去往某一网络或网段的路由
172网段主机访问192网段的主机。

route add -net 192.168.4.0/24 gw 172.16.1.254
route add -net 192.168.4.0/24 netmask 255.255.255.0 dev eth1
删除路由

route del -net 192.168.4.0/24 dev eth1
# 配置去往某个主机的路由

route add -host 172.16.2.250 dev eth0
删除路由:

route del -host 172.16.2.250 dev eth0

以上配置在重启网络时都会失效需要写到配置中。

需要写到/etc/sysconfig/network-scripts/route-eth*或/etc/rc.local文件中,重启会重新加载。

192.168.4.0/24 via 172.16.1.254

arp命令——管理系统的arp缓存


arp是地址解析协议,主要是根据IP地址获取物理地址。arp可以显示缓存区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址的对应关系。

选项:

-n显示IP地址对应的MAC地址信息
-s <主机><MAC>指定主机的IP地址与MAC地址的静态映射
-d <主机>删除制定主机的arp条目

操作:

# 显示arp缓存区的所有条目[root@localhost ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
172.16.1.20 ether 28:6e:d4:8a:02:c0 C eth0
172.16.1.25 ether 28:6e:d4:8a:15:61 C eth0
172.18.0.9 ether 02:42:ac:12:00:09 C br-7f15bb750845
172.16.1.254 (incomplete) eth0
172.16.1.22 ether 28:6e:d4:89:e0:09 C eth0
172.16.1.24 ether 28:6e:d4:88:eb:3d C eth0

# 查看指定主机的arp条目

arp -n 172.16.1.27  
# 绑定IP地址和MAC地址(临时,)

[root@localhost ~]# arp -s 172.16.1.20 28:6e:d4:8a:02:c1
[root@localhost ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
172.16.1.20 ether 28:6e:d4:8a:02:c1 CM eth0
# 删除静态ARP绑定
[root@localhost ~]# arp -d 172.16.1.20

ip命令——网络配置工具


ip命令用于显示或管理linux系统的路由、网络设备、策略路由和隧道。

语法格式:

ip  [选项]  [网络对象]  [操作命令]

操作:

# 查看网卡信息
[root@localhost ~]# ip a
# 关闭网卡

[root@localhost ~]# ip link set eth0 down
# 开启网卡

[root@localhost ~]# ip link set eth0 up
# 添加IP地址

[root@localhost ~]# ip a add 172.16.1.31/24 dev eth0
# 删除IP地址

[root@localhost ~]# ip a del 172.16.1.31/24 dev eth0
# 查看路由

[root@localhost ~]# ip routedefault via 172.16.1.254 dev eth0 proto static metric 100
172.16.1.0/24 dev eth0 proto kernel scope link src 172.16.1.27 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-7f15bb750845 proto kernel scope link src 172.18.0.1

注意:

1、删除网卡的主IP地址,同时会删除该网卡的所有IP地址。

2、删除网卡的辅助IP地址,不会影响该网卡的其他IP地址。

3、ip命令集成了ifconfig和route的功能,逐渐替代这两个IP

netstat命令——查看网络端口信息


用于显示本机网络的连接状态、运行端口和路由表等信息。

选项:

-n显示数字形式的地址而不是去解析主机
-a显示处于监听状态和非监听状态的socket信息
-c <秒数>每隔几秒刷新一次
-l仅显示处于监听状态的网络状态
-t显示所有的TCP连接情况
-u显示所有的UDP连接情况
-p显示socket所属进程的PID和名称

常用组合:

# 列出所有处于监听状态的端口信息
[root@localhost ~]# netstat -lntup
# 列出所有处于监听和非监听状态的端口信息

[root@localhost ~]# netstat -antup

重要的两个状态:

1、ESTABLISHED:表示处于连接的状态,认为有一个EASTABLISHED是一个服务的并发连接。

2、LISTEN:socket正在监听连接请求。

ss命令——查看网络端口信息


ss命令和netstat功能类似,但它能显示更多更详细的网络连接信息,比netstat更快更高效

安装ss命令:

yum -y install iproute
# 列出所有处于监听状态的端口信息
[root@localhost ~]# ss -lntup
# 列出所有处于监听和非监听状态的端口信息

[root@localhost ~]# ss -antup

ping命令——测试主机之间网络的连通性


ping命令发出请求后,远端主机网络联通的话,就会收到回应消息。可判断主机是否正常或两者的网络是否可以互通。

选项:

-c <次数>指定发送ICMP报文的次数,默认一直发送报文
-i <时间>发送报文的间隔时间,默认是1s
-t <生存期>设置发送的数据包其生存期TTL值

操作:

# 直接ping域名
[root@localhost ~]# ping harbor.liyb.com
# 测试IP地址

[root@localhost ~]# ping 172.16.1.27
# 每次ping间隔2秒,一共5次。

[root@localhost ~]# ping -t 2 -c 5 172.16.1.27
PING 172.16.1.27 (172.16.1.27) 56(84) bytes of data.
64 bytes from 172.16.1.27: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 172.16.1.27: icmp_seq=2 ttl=64 time=0.032 ms
64 bytes from 172.16.1.27: icmp_seq=3 ttl=64 time=0.032 ms
64 bytes from 172.16.1.27: icmp_seq=4 ttl=64 time=0.028 ms
64 bytes from 172.16.1.27: icmp_seq=5 ttl=64 time=0.026 ms

--- 172.16.1.27 ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 3999msrtt min/avg/max/mdev = 0.026/0.029/0.032/0.005 ms

注意:如果不加-c参数会一直ping下去,这时需要使用Ctrl + c来终止。

traceroute命令——追踪数据传输路由状态


traceroute命令和window下的tracert命令类似,用于显示网络数据包传输到指定主机的路径信息

安装traceroute:

yum install -y traceroute

操作:

traceroute www.baidu.com

注意:

1、有时会看到一些星号。可能是因为网络设备封堵或丢弃了返回的信息,所以得不到返回信息。

2、traceroute默认使用UDP协议(受网络影响性能不太好),可以使用-I参数来调用icmp协议。

telnet命令——远程登录主机或检测远程端口


telnet命令使用23端口进行远程,但是使用明文传输,安全性不好。目前远程连接一般使用安全性更好的SSH服务。现在telnet的主要应用场景是判断远端服务器的端口是否开放。

操作:

# 端口放通的现象
[root@localhost ~]# telnet 172.16.1.20 22
Trying 172.16.1.20...Connected to 172.16.1.20.Escape character is '^]'.S
SH-2.0-OpenSSH_7.4
# 看到这种情况,代表22端口是放通的。
# 端口无法连接的现象
[root@localhost ~]# telnet 172.16.1.20 3306
Trying 172.16.1.20...telnet: connect to address 172.16.1.20: Connection refused

ssh命令——远程登录主机


ssh命令可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。

语法格式:

ssh  [选项]  [用户]@[主机名或IP地址]  [远程执行的命令]

选项:

-p指定ssh登录端口,默认是22端口
-t强制分配伪终端
-v调试模式

操作:

# 首次连接会提示,再次连接就不会提示,输入正确密码就可以远程
[root@k8s-master03 ~]# ssh -p 22 root@172.16.1.20The authenticity of host '172.16.1.20 (172.16.1.20)' can't be established.ECDSA key fingerprint is SHA256:ANt+WLWZpyB8YH14ROYVMTS68fEcEqoIrdVAi2FtwvU.ECDSA key fingerprint is MD5:d0:f1:19:71:df:cb:39:b3:b2:cb:9a:83:39:f2:05:cb.Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.20' (ECDSA) to the list of known hosts.
root@172.16.1.20's password:


# 远程执行命令

[root@localhost ~]# ssh root@172.16.1.20 "free -h"
root@172.16.1.20's
password: # 输入正常密码
total used free shared buff/cache available
Mem: 15G 1.4G 2.4G 743M 11G 13G
Swap: 0B 0B 0B
# 调试

[root@localhost ~]# ssh -v root@172.16.1.20

wget命令——命令行下载工具


wget命令用于从网络上下载某些资料,可以直接从网络上下载自己的所需要的文件

选项:

-o将文件的执行结果写入文件中
-O指定保存的文件名后下载文件
-c断点续传
–limit-rate限速下载

操作:

# 下载单个文件,直接后面加链接
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.98/src/apache-tomcat-8.5.98-src.tar.gz
# 指定保存的文件后下载

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 限速下载

wget --limit-rate=5k -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

nslookup命令——域名解析查询工具

安装:yum  -y install bind-utils

语法:

nslookup [选项]  [域名/IP]  [DNS服务器]

操作

# 查看DNS配置文件
[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManagersearch liyb.comnameserver 172.16.1.27
# 交互模式

[root@localhost ~]# nslookup> server 172.16.1.27 # 指定DNS服务器
Default server: 172.16.1.27
Address: 172.16.1.27#53
> harbor.liyb.com # 解析域名
Server: 172.16.1.27
Address: 172.16.1.27#53
Name: harbor.liyb.com

Address: 172.16.1.26

# 非交互模式

[root@localhost ~]# nslookup harbor.liyb.com
Server: 172.16.1.27
Address: 172.16.1.27#53
Name: harbor.liyb.com

Address: 172.16.1.26

dig命令——域名查询工具


dig命令用于测试域名系统的工作是否正常

选项:

@<DNS的IP地址>指定DNS服务器来进行解析
-t指定要查询的DNS数据类型
+trace从根域名开始跟踪查询结果
+short仅输出最精简的CNAME和A记录

操作:

# 查询指定域名的IP地址

[root@localhost ~]# dig harbor.liyb.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> harbor.liyb.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6359;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;harbor.liyb.com. IN A

;; ANSWER SECTION:harbor.liyb.com. 86400 IN A 172.16.1.26

;; AUTHORITY SECTION:liyb.com. 86400 IN NS www.liyb.com.

;; ADDITIONAL SECTION:www.liyb.com. 86400 IN A 172.16.1.27

;; Query time: 0 msec;; SERVER: 172.16.1.27#53(172.16.1.27);; WHEN: 五 1月 26 12:04:32 CST 2024;; MSG SIZE rcvd: 94# 指定DNS服务器[root@localhost ~]# dig @172.16.1.27 harbor.liyb.com
# 精简输出
[root@localhost ~]# dig +short harbor.liyb.com172.16.1.26

tcpdump命令——监听网络流量


tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。

选项:

-c <数量>接收到指定的数据包数目后退出
-i <网络接口>指定要监听的网络接口
-n不进行DNS解析,加快显示速度
-nn不将协议和端口数字等转换成名字
-q以更快速输出的方式运行。
-v显示命令执行的详细信息

操作:

# 不加参数将启动监视第一个网络接口所流过的数据包
[root@localhost ~]# tcpdump
# 指定网络接口进行监听

[root@localhost ~]# tcpdump -i eth0
# 指定监听主机的数据包

[root@localhost ~]# tcpdump -n host 172.16.1.26
# 监听指定端口的数据包

[root@localhost ~]# tcpdump -nn port 22常见的协议关键字有ip、arp、icmp、tcp、udp等类型。
# 使用tcpdump对tcp数据进行抓包[root@localhost ~]# tcpdump tcp dst port 80 or src 172.16.1.26 -i eth0 -n

以下是TCP状态机制:

图片来自网络

本篇Linux常用命令分析完结!

发表在 linux文章 | 留下评论

Linux常用命令之进程管理

本篇继续分享Linux中常用命令。主要分享Linux系统的进程管理相关的命令。

ps命令——查看进程


查看当前时刻进程信息。

选项

a显示与终端相关的所有进程,包含每个进程的完整路径
u显示进程的用户信息
x显示与终端无关的所有进程
-e 显示所有进程
-f 额外显示UID,PPID,STIME栏位信息。
-u显示指定用户相关的进程信息

操作:

1、输出每个进程信息

[root@harbor ~]# ps -efUID         PID   PPID  C STIME TTY          TIME CMDroot          1      0  0 12月25 ?      00:00:57 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root          2      0  0 12月25 ?      00:00:00 [kthreadd]root          4      2  0 12月25 ?      00:00:00 [kworker/0:0H]

2、查看特定进程信息

[root@harbor ~]# ps -ef |grep nginx
10000 135209 135159 0 12月28 ? 00:00:00 nginx: master process nginx -g daemon off;
10000 135415 135209 0 12月28 ? 00:00:00 nginx: worker process
10000 135416 135209 0 12月28 ? 00:00:00 nginx: worker process
10000 135417 135209 0 12月28 ? 00:00:00 nginx: worker process
10000 135418 135209 0 12月28 ? 00:00:00 nginx: worker process

3、BSD语法显示每个进程信息

[root@harbor ~]# ps aux

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root 1 0.0 0.0 193872 6956 ? Ss 12月25 0:57 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 12月25 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 12月25 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 12月25 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 12月25 0:02 [migration/0]

输出说明:

USER:该进程属于的用户。
PID:该进程的进程号。
%CPU:该进程使用掉的CPU资源百分比。
%MEM:该进程所占用的物理内存百分比。
VSZ:该进程使用掉的虚拟内存量(单位为Kbytes)。
RSS:该进程占用的固定的内存量(单位为Kbytes)。
TTY:该进程是在哪个终端机上面运作的,若与终端机无关,则显示“?”,另外,tty1-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程。
STAT:该进程目前的状态,主要的状态包括如下几种。
R:正在运行,或者是可以运行。
S:正在中断睡眠中,可以由某些信号(signal)唤醒。
D:不可中断睡眠。·
T:正在侦测或者是停止了。
Z:已经终止,但是其父进程无法正常终止它,从而变成zombie(僵尸)进程的状态。+:前台进程。
l:多线程进程。
N:低优先级进程。
<:高优先级进程。
s:进程领导者。
L:已将页面锁定到内存中。
START:该进程被触发启动的时间。
TIME:该进程实际使用CPU运作的时间。
COMMAND:该进程的实际命令。

kill命令——终止进程


能中止你希望停止的进程

-l列出全部的信号名称
-s指定要发送的信号

操作:

显示系统的所有信号

[root@localhost ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62)

kill命令默认发送的信号是15,用于结束进程。使用信号9可以强制终止进程。

[root@localhost ~]# netstat -lntup
Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1353/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1473/master tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 945/rpcbind [root@localhost ~]# kill -9 1473
[root@localhost ~]# netstat -lntup   #再次查看没有进程号为1473的进程。
Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1353/sshd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 945/rpcbind [root@localhost ~]#

top命令——动态显示各个进程的资源占用情况


top用于实时地对系统资源进行监控,输出各个进程的资源占用情况。同时top命令也是一个交互式命令。

交互式选项

交互式命令含义
h或?显示帮助信息,给出交互式命令的一些说明总结
m以内存排序显示
z打开/关闭颜色显示
n或#设置显示做大进程行数
q退出top

nohup命令——后台运行进程


nohup命令可以将程序以后台方式运行,被运行程序的输出信息将不会显示到终端。

无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,则输出重定向到$HOME/nohup.out文件中。

正常情况下,如果用户退出登录或会话终止,则用户正在执行并可持续一段时间的命令(非守护进程)将自动终止

实际工作中,我们一般会和&一起使用,让程序直接在后台运行。

[root@localhost ~]# nohup ping 172.16.1.20 &
[2] 109057
[root@localhost ~]#
nohup: 忽略输入并把输出追加到"nohup.out"

[root@localhost ~]# ps -ef |grep ping

root 109057 93226 0 10:45 pts/0 00:00:00 ping 172.16.1.20
root 109329 93226 0 10:45 pts/0 00:00:00 grep --color=auto ping
注意:以上示例是为了测试,测试完后要kill掉,不然一直生成日志,占用磁盘空间。
[root@localhost ~]# kill -9 109057

runlevel命令——输出当前运行级别


[root@localhost ~]# runlevelN 
3# 显示当前运行界别为3,即为命令行多用户模式

运行级别说明:

0停机
1单用户模式
2无网络的多用户模式
3多用户模式
4未使用
5图形界面多用户模式
6重启

init命令——进程初始化工具


init命令是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1

切换运行

界别

# 关机
[root@localhost ~]# init 0   
# 重启

[root@localhost ~]# init 6

service命令——管理系统服务


service命令用于centos6以及前面版本。centos7后使用systemd管理系统服务。

service命令用于对系统服务进程管理,可以对服务进行启动,停止,重启,重新加载配置,查看状态等操作。

操作:

# 启动服务service chronyd start
# 停止服务service chronyd stop
# 重启服务service chronyd restart
# 平滑重启服务service chronyd reload
# 查看服务状态service chronyd status

systemctl命令——管理系统服务


systemctl是Systemd的主命令,用于管理系统。

systemd的配置目录:

  • /usr/lib/systemd/system/:每个服务最主要的启动脚本的配置放在这,有点类似以前的/etc/init.d;
  • /run/systemd/system/:系统执行过程中所产生的服务脚本所在目录,这些脚本的优先级要比/usr/lib/systemd/system/高;
  • /etc/systemd/system/:管理员根据主机系统的需求所创建的执行脚本所在目录,执行优先级比/run/systemd/system/高;
# 启动服务systemctl start chronyd
# 停止服务systemctl stop chronyd
# 重启服务systemctl restart chronyd
# 平滑重启服务systemctl restart chronyd
# 查看服务状态systemctl restart chronyd
# 列出已安装的unitsystemctl list-unit-files # 列出类型为service的项目systemctl list-units --type=service
# 输出主机当前的运行模式systemctl get-default
# 设置主机的运行模式,关闭图形界面,使用命令行模式systemctl isolate multi-user.target
#将目前的操作环境改为图形界面systemctl isolate graphical.target
#系统关机systemctl poweroff
#重新开机 systemctl reboot
#进入暂停模式 systemctl suspend
#强制进入救援模式 systemctl rescue
#禁用某个服务systemctl mask etcd.service
#解除禁用某个服务systemctl unmask etcd.service

发表在 linux文章 | 留下评论

Linux常用命令之磁盘管理

本篇继续分享Linux中常用命令。主要分享Linux系统的磁盘管理相关的命令。

fdisk命令——磁盘分区工具


fdisk是Linux系统下常用的分区工具。受mbr分区表的限制,fdisk工具只能给小于2TB的磁盘划分分区。如果大于2TB,无法识别超过2TB那部分容量。如果磁盘大于2TB最好使用parted分区工具。

选项

-l显示所有磁盘分区的信息

交互式命令:

m帮助
n新建一个分区
d删除一个分区
t更改分区格式
l查看分区类型
p打印分区表
w保存退出
q不保存退出

操作:

[root@localhost ~]# fdisk -l
磁盘 /dev/vda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x000a4dca

设备 Boot Start End Blocks Id System
/dev/vda1 2048 6143 2048 83 Linux
/dev/vda2 * 6144 4200447 2097152 83 Linux
/dev/vda3 4200448 209715199 102757376 83 Linux

磁盘 /dev/vdb:214.7 GB, 214748364800 字节,419430400 个扇区

Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区

Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost ~]# fdisk /dev/vdc

欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。
Device does not contain a recognized partition table使用磁盘标识符 0x5eb87e6d 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m

命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

命令(输入 m 获取帮助):

n    # 新增加一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extendedSelect (default p): p
# 新增一个主分区分区号 (1-4,默认 1):1起始
扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区,
+扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+10G分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):p   

# 打印分区表

磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区

Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d

设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 83 Linux

命令(输入 m 获取帮助):t   

# 更换分区格式已选择分区 1
Hex 代码(输入 L 列出所有代码):L
Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

# 查看
磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区

Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d

设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 8e Linux LVM
命令(输入 m 获取帮助):w

The partition table has been altered!
Calling ioctl() to re-read partition table.

正在同步磁盘。
[root@localhost ~]# lsblk

# 查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 98G 0 part /vdb
253:16 0 200G 0 disk
/datavdc 253:32 0 100G 0 disk
└─vdc1 253:33   0   10G  0 part

注意:操作时一定要谨慎,如果不小心操作错了,直接使用交互指令q不保存退出,这样先前的操作就会无效。如果输入w则会保存所有修改。

partprobe命令——更新内核的硬盘分区表信息


更新内核中的硬盘分区表数据,主要用于磁盘分区发生变化时。对磁盘分区进行修改后,找不到新分区,可以使用partprobe命令来刷新一下。

[root@localhost ~]# partprobe /dev/vdc

parted命令——磁盘分区工具


parted命令用于对大于2TB的磁盘进行分区,需要将磁盘转换为GPT格式。

选项:

-l 显示所有磁盘分区的信息
-h查看帮助

操作:

1、查看帮助

[root@localhost ~]# parted /dev/vdcGNU 
Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) h align-check TYPE N # 检查磁盘分区
help [COMMAND] # 查看帮助
mklabel,mktable LABEL-TYPE # 创建分区表
mkpart PART-TYPE [FS-TYPE] START END # 创建分区
name NUMBER NAME # 为分区命名
print [devices|free|list,all|NUMBER] # 显示分区表
quit # 退出
resizepart NUMBER END # 重设分区大小
rm NUMBER # 删除编号为NUMBER的分区
select DEVICE # 选择要编辑的分区
set NUMBER FLAG STATE # 改变分区的标志
toggle [NUMBER [FLAG]] # 设置分区标志
unit UNIT # 设置默认单位
version # 显示版本号(parted)

2、创建新分区

 # 根据/dev/vdc磁盘创建新分区
[root@localhost ~]# parted  /dev/vdc   
GNU Parted 3.1使用 /dev/vdc(parted) 
mklabel gpt   # 为vdc创建GPT分区表警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?是/Yes/否/No? yes(parted) 
mkpart primary 0 5G   # 创建主分区,大小为5G警告: The resulting partition is not properly aligned for best performance.忽略/Ignore/放弃/Cancel? Ignore(parted) 
p   # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary
(parted) 

mkpart logical 5001 10G   # 创建逻辑分区,大小为5G(parted) 
p  # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical
(parted) q  # 退出信息: You may need to update /etc/fstab.

查看分区情况,可见vdc1和vdc2已经创建出来

[root@localhost ~]# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsr0     11:0    1  9.5G  0 rom  /mntvda    253:0    0  100G  0 disk├─vda1 253:1    0    2M  0 part├─vda2 253:2    0    2G  0 part /boot└─vda3 253:3    0   98G  0 part /vdb    253:16   0  200G  0 disk /datavdc    253:32   0  100G  0 disk├─vdc1 253:33   0  4.7G  0 part└─vdc2 253:34   0  4.7G  0 part

3、删除分区

[root@localhost ~]# parted  /dev/vdcGNU 
Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:

Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical

(parted) rm 2    # 删除第二个分区(parted) rm 1    # 删除第一个分区(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:

Number Start End Size File system Name 标志

(parted) q信息: You may need to update /etc/fstab.

[root@localhost ~]# lsblk    # 再次查看分区情况

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom /mnt
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 98G 0 part /vdb
253:16 0 200G 0 disk /datavdc
253:32 0 100G 0 disk

4、非交互方式创建分区

直接使用一条命令创建一个分区。

[root@localhost ~]# parted /dev/vdc 
mklabel gpt yes mkpart primary 0 10G Ignore p
警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?
警告: The resulting partition is not properly aligned for best performance.Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:

Number Start End Size File system Name

标志 1 17.4kB 10.0GB 10000MB primary

信息: You may need to update /etc/fstab.

mkfs命令——创建文件系统


mkfs命令用于在指定的设备(或磁盘分区)上创建格式化并创建文件系统。创建分区后并不能使用分区,需要对分区进行格式化为特定文件系统后才能用来存取数据。

选项:

-t 指定要创建的文件系统类型
-c 创建文件系统时检查磁盘坏块

mkfs只是一个前端命令,它通过-t参数指定文件系统类型后会调用相应的命令mkfs.fstype。因此可以直接使用mkfs.ext4这个命令创建ext4文件系统。

操作:

# 将/dev/vdc1格式化为xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/vdc1
# 将/dev/vdc2格式化为ext4系统

[root@localhost ~]# mkfs -t ext4 /dev/vdc2

resize2fs命令——调整ext2/ext3/ext4文件系统大小


resize2fs命令用于扩容或收缩未挂载的ext2/ext3/ext4文件系统。在Linux 2.6或更高版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容后的分区使用。

[root@localhost ~]# resize2fs /dev/centos/root           # 扩容文件系统,ext4文件系统格式

xfs_growfs命令——调整xfs文件系统的系统大小

xfs_growfs针对的是使用xfs格式化的的文件系统,ext4文件系统使用resize2fs调整文件系统大小。

操作

# 直接扩展整块磁盘,需要在管理平台增加容量后操作
[root@localhost ~]# xfs_growfs /dev/vdb
# 扩展逻辑卷创建的文件系统,需要先使用lvextend扩展逻辑卷大小

[root@localhost ~]# xfs_growfs /dev/centos/root

fsck命令——检查并修复Linux文件系统


fsck命令用于检查并修复文件系统中的错误。需要注意的是:文件系统必须是卸载状态,否则可能会出现故障;不要对正常的分区使用fsck,fsck会根据/etc/fstab进行文件系统检查。

选项:

-a自动修复文件系统,不询问任何问题
-s按顺序检查多个文件系统
-t指定要检查的分区的文件系统类型
-A检查文件/etc/fstab内所列的全部文件系统

只有当系统开机显示磁盘错误时,才需要执行。

[root@localhost ~]# fsck -A

dd命令——转换或复制文件


选项

if=<输入文件>从指定文件中读取,input file
of=<输出文件>写入到指定文件,output file
bs=<字节数>一次读写的字节数,block size
cout=<块数>指定复制的block块的个数
obs=<字节数>一次性写的字节,默认是512
ibs=<字节数>一次读的字节,默认512

操作:

# 生成任意大小的测试文件(/dev/zero是一个特殊块设备,相当什么都没有)
[root@localhost ~]# dd if=/dev/zero  of=datatest  bs=1M,
# 制作Linux系统的ISO镜像

[root@localhost ~]# dd if=/dev/cdrom   of=CentOS7.9.iso
# 删除分区/dev/vdb1分区的数据,谨慎操作!

[root@localhost ~]# dd if=/dev/zero of=/dev/vdb1

monut命令——挂载文件系统


一个分区被格式化后并不可以直接使用,还需要将其挂载到指定的挂载点上才可以被访问。

选项:

-l显示已经挂载的设备相关信息
-a挂载/etc/fstab文件中的配置信息
-t指定挂载的文件系统类型。如nfs,iso9660(光盘)
-o后接一些挂载选项。

操作:

# 显示系统的挂载信息
[root@localhost ~]# mount/dev/vda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)nfsd on /proc/fs/nfsd type nfsd (rw,relatime)/dev/vdb on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)/dev/vda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

# 挂载光盘光驱,前提是有光驱镜像
[root@localhost ~]# mount /dev/cdrom /media[root@localhost ~]# ll /media
# 挂载nfs文件系统

[root@localhost ~]# mount -t nfs -o nodev,noatime 172.16.1.27:/data /data永久挂载要写入到/etc/fstab中
[root@localhost ~]# cat >> /etc/fstab <<EOF172.16.1.27:/data /data nfs nodev,noatime 0 0EOF
# 文件系统只读时,需要重新挂载根目录为读写模式。

[root@localhost ~]# mount -o remount,rw /# 确认fstab文件中配置正确,避免重启失败[root@localhost ~]# mount -a

永久性挂载的磁盘都需要写入/etc/fstab文件中,若这个文件配置有错误会导致系统重启无法正常进入系统。可以使用mount -a进行挂载测试,如果能挂载成功,重启一般会正常。

umount命令——卸载已挂载的文件系统


umount卸载可以接挂载点目录,也可以接设备文件。

选项

-f强制卸载
-l将文件系统从文件系统层次结构中分离出来,并清除我对文件系统的所有引用

操作:

# 卸载挂载点/media
[root@localhost ~]# umount /media# 强制删除[root@localhost ~]# cd /media/
[root@localhost media]# umount /media # 如果处于挂载点中,则无法卸载,可以退出挂载点再卸载或强制卸载
umount: /media:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以 找到有关使用该设备的进程的有用信息)
[root@localhost media]# umount -lf /media

sync命令——刷新文件系统缓存区


sync命令会将内存缓冲区的数据强制刷新到磁盘

操作:# 手动将数据从缓冲区刷到磁盘中并重启系统
sync
sync
reboot

写SSD磁盘性能不佳怎么排查 – LinuxGuideLinuxGuide

Linux磁盘管理命令-xfs 管理命令 – LinuxGuideLinuxGuide

SSD性能优化策略 – LinuxGuideLinuxGuide

SSD性能优化策略 – LinuxGuideLinuxGuide

发表在 linux文章 | 留下评论

Linux常用命令之用户管理

本篇继续分享Linux中常用命令。主要分享Linux系统的用户管理相关的命令。

useradd命令——创建用户


原理:在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中的所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。

选项:

-r创建用户时不创建家目录
-d指定创建时的家目录位置,默认创建在/home目录,在/etc/default/useradd可修改默认目录。
-M 不建立家目录,虚拟用户一般需要建立家目录。
-s用户登录使用的shell,默认是/bin/bash,可在/etc/default/useradd修改默认值
-g指定用户组,这个用户组必须提前存在。
-G指定多个附属组,可成为不同组的成员,多个使用逗号(,)隔开。
-u uid指定用户的ID值。

常用操作

// 创建用户的同时还会创建一个与用户名相同的用户组
useradd  test  
// 创建用户rudy,属于mysql组,uid为1002 

useradd -g mysql  -u 1002  rudy   
// 创建禁止登陆的用户 ,/sbin/nologin表示禁止登录

useradd -M -s  /sbin/nologin   rudy

usermod命令——修改用户信息


参数大部分和useradd相同,usermod是修改用户,useradd是增加用户。

选项:

-d  家目录修改用户的家目录
-s  shell修改用户登录的shell
-G group修改此用户为多个不同组的成员
-l修改用户的账号名称

常用操作:

// 修改家目录和uid
usermod -d /dataroot/rudy -u 1002 rudy
// 将rudy用户名称更改为zhangsan

usermod -l zhangsan  rudy
// 将rudy添加到这些组里面

usermod -G public,wangluo rudy

userdel命令——删除用户及该用户相关的文件


选项:

-f强制删除用户,即使用户已登录
-r删除用户的同时,删除与用户相关的所有文件

常用操作

// 不加参数删除用户,家目录还存在
userdel rudy
// 加-r参数删除用户,连同家目录一起删除

userdel -r rudy
// 强制删除用户

userdel -l -r  rudy

在实际工作中尽量不要使用userdel删除用户,而是采用在/etc/passwd里注释用户的方法,防止用户误删带来的系统及服务不正常。

groupadd命令——创建新的用户组


groupadd命令的用途一般不大,因为useradd命令在创建用户的同时还会创建与用户同名的用户组。

常用操作:

添加GID为1020的rudy组
groupadd -g 1020  rudy

groupdel命令——删除用户组


groupdel不能删除还有用户归属的主用户组。

常用操作:

groupdel rudy

passwd命令——修改用户密码


说明:

root用户可以修改任何用户的密码,普通用户只能修改自身的密码。

root用户修改密码时,如果不符合系统密码规则,则给出警告信息,但密码设置仍然生效。普通用户修改密码时,如果使用弱密码,则给出告警信息,且修改无效。

选项:

-k为密码已经过期的用户更新有效期
–stdin 从标准输入读取密码字符串
-l锁定用户
-d 删除用户密码,是密码为空

常用操作:

1、修改自身密码
[root@localhost ~]# passwd root
更改用户 root 的密码 。
新的 密码:重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2、一条命令修改密码,但不安全。

[root@localhost ~]# echo manager |passwd --stdin root
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新

实战:批量创建10个用户user01-user10,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道来实现。

[root@localhost tmp]# echo user{01..10}| tr " " "\n"|sed -r 's#(.*)#useradd \1; pass=$((RANDOM+10000000)); echo "$pass" |passwd --stdin  \1; echo -e "\1 \t  `echo "$pass"`">/tmp/rudyli.txt#g'|bash

su命令——切换用户


将当前用户切换到指定用户或者以指定用户的身份执行命令或程序

选项:

-,-l,–login切换用户的同时,将用户的家目录、系统环境等重新按切换后的用户初始化
-c向Shell传递单个命令

操作

# 只切换用户,不切换家目录su liyb  
# 切换家目录,su - root# 让系统每一次开机时能自动以普通用户启动指定的服务脚本cat  /etc/rc.localsu - liyb -c '/bin/sh  /data/scripts/install.sh'

注意

1、普通用户切换到root用户,需要输入密码

2、root切换到普通用户不需要密码

visudo命令——编辑sudoers文件


-c手动执行语法检查

操作

visudo      # 等价于vi  /etc/sudoers编辑

大约100行下面添加需要提升root权限的普通用户名及对应权限

root    ALL=(ALL)       ALLliyb    ALL=(ALL)     /usr/sbin/useradd, /usr/sbin/userdelrudyli  ALL=(ALL)       NOPASSWD:ALL

检查语法

visudo -c/etc/sudoers:解析正确
待授权的用户或组机器=(授权角色)可以执行的命令
userMACHING=COMMANDS
liybALL=(ALL)/usr/sbin/useradd, /usr/sbin/userdel

sudo命令——以另一个用户身份执行命令


可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限。普通用户不需要知道root用户密码。这个授权在visudo配置管理。

who命令——显示已登录用户信息

[root@harbor ~]# who -a           
系统引导 2023-12-25 09:55
运行级别 3 2023-12-25 09:55
登录 tty1
2023-12-25 10:03 2894 id=tty1root + pts/0 2023-12-29 11:36 . 94994 (172.16.1.203)

last命令——显示用户登录列表


last命令能够从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表

[root@harbor ~]# lastroot     
pts/0 172.16.1.203 Fri Dec 29 11:36 still logged inroot
pts/0 172.16.1.203 Thu Dec 28 13:58 - 14:09 (00:11)root
pts/0 172.16.1.203 Thu Dec 28 13:06 - 13:11 (00:05)root
pts/0 172.16.1.203 Thu Dec 28 11:47 - 12:07 (00:19)root
pts/0 172.16.1.203 Thu Dec 28 10:23 - 10:38 (00:14)root
pts/0 172.16.1.203 Thu Dec 28 10:12 - 10:17 (00:05)

lastb命令——显示用户登录失败的记录


lastb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录,用于发现系统登录异常

[root@harbor ~]# lastbrudyli   
pts/0 Fri Dec 29 12:46 - 12:46 (00:00)Administ
ssh:notty 172.16.1.203 Thu Dec 28 13:58 - 13:58 (00:00)Administ
ssh:notty 172.16.1.203 Thu Dec 28 11:47 - 11:47 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)(unknown
tty1 Sat May 6 17:12 - 17:12 (00:00)

btmp begins Sat May 6 17:12:19 2023

lastlog命令:显示所有用户的最近登录记录


从日志文件/var/log/lastlog中读取信息,并显示所有用户的最近登录记录,用于查看系统是否有异常登录

[root@harbor ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 172.16.1.203 五 12月 29 11:36:08 +0800 2023
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
halt **从未登录过**

发表在 linux文章 | 留下评论

Linux常用命令之文件备份和压缩

本篇继续分享Linux中常用命令。主要分享Linux系统的文件备份和压缩相关的命令。

tar命令——压缩备份


tar命令是linux非常使用频率非常高的一个命令。打包是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

选项:

-c创建一个新的tar压缩包
-x解压tar包
-t 查看压缩包的内容
-C指定解压路径
-f指定要处理的文件名
-j使用bzip2方式进行压缩或解压
-z使用gzip方式进行压缩或解压
–exclude=PATHERN打包时排除不需要处理的文件或目录
-v显示详细过程

常用操作:

1、 解压缩包到指定位置
[root@localhost ~]# tar -zxvf jdk-8u202-linux-x64.tar.gz -C /data

[root@localhost ~]# ll /data
总用量 0drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202
2、 压缩文件
[root@localhost data]# tar -zcvf jdk8.tar.gz jdk1.8.0_202/

[root@localhost data]# ll
总用量 189500drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202
-rw-r--r-- 1 root root 194045097 10月 22 20:26 jdk8.tar.gz
3、 查看压缩包内容

[root@localhost data]# tar -tf jdk8.tar.gz

gzip命令——压缩或解压文件


gzip命令用于将一个大的文件通过压缩算法变成一个小的文件。gzip命令不能直接压缩目录,因此目录需要先用tar打包成一个文件,然后tar再调用gzip进行压缩。

选项:

-d解开压缩文件
-v显示执行过程
-c将内容输出到标准输出,不改变原始文件

常用操作:

1、压缩文件,默认不保留源文件,将源文件做成.gz压缩包
[root@localhost ~]# gzip hosts
[root@localhost ~]# ll
总用量 8-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r--r-- 1 root root 94 10月 22 20:36 hosts.gzdrwxr-xr-x 2 root root 6 10月 22 20:36 test
2、解开压缩包[root@localhost ~]# gzip -d hosts.gz

[root@localhost ~]# ll
总用量 8
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r--r-- 1 root root 177 10月 22 20:36 hosts
drwxr-xr-x 2 root root 6 10月 22 20:36 test
3、压缩目录(压缩失败,只能压缩文件,不可压缩目录)


[root@localhost ~]# gzip test/gzip: test/ is a directory -- ignored
4、保留源文件压缩

[root@localhost ~]# gzip -c hosts >hosts.gz
[root@localhost ~]# ll
总用量 12
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 177 10月 22 20:36 hosts-rw-r--r-- 1 root root   94 10月 22 20:44 hosts.gz

zip命令——打包和压缩文件


zip压缩格式是Windows与Linux等多平台通用的压缩格式。和gzip命令相比,zip命令压缩文件不仅不会删除源文件,而且还可以压缩目录。

选项:

-r递归压缩目录和文件
-x压缩文件时排除某个文件

常用操作:

1、压缩文件
[root@localhost ~]# cp /etc/services .
[root@localhost ~]# ll
总用量 660
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 670293 10月 22 20:50 services
[root@localhost ~]# zip services.zip ./services
adding: services (deflated 80%)[root@localhost ~]# ll
总用量 796
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 670293 10月 22 20:50 services
-rw-r--r-- 1 root root 136227 10月 22 20:50 services.zip

2、压缩目录

[root@localhost data]# zip jdk.zip ./jdk1.8.0_202/ //没有压缩updating: jdk1.8.0_202/ (stored 0%
[root@localhost data]# zip -r jdk.zip ./jdk1.8.0_202/
[root@localhost data]# ll
总用量 192112
drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202-rw-r--r-- 1 root root 196719566 10月 22 20:53 jdk.zip

unzip命令——解压zip命令压缩的文件


选项:

-d指定解压的路径
-v显示解压详细过程,默认选项
-o解压时不提示是否覆盖文件

常用操作:

1、默认解压到当前目录
[root@localhost data]# unzip jdk.zip
[root@localhost data]# ll
总用量 192112
drwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_202
-rw-r--r-- 1 root root 196719566 10月 22 20:53 jdk.zip
2、解压到指定目录

[root@localhost data]# unzip -d /root jdk.zip //解压到/root目录
[root@localhost data]# ll /root/
总用量 4
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfgdrwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_202
3、再次解压不提示,直接覆盖

[root@localhost data]# unzip -d /root jdk.zip //再次执行会提示是否覆盖
Archive: jdk.zipreplace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: error: invalid response
[{ENTER}]replace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^C
[root@localhost data]#
[root@localhost data]# unzip -o -d /root jdk.zip //添加-o操作后就不会询问是否覆盖。

scp命令——远程复制文件


scp使用的是ssh协议。每次都是全量复制。适合第一次复制。

选项:

-r递归复制
-p保留文件原始属性
-P  端口号指定传输的端口号
-q不显示传输进度

常用操作:

1、将本机的文件复制到远端主机,需要知道远端的服务器密码 
scp -rp jdk1.8.0_202/ root@10.10.10.3:/data
root是远端用户,也可以是其他普通用户10.10.10.3是远端IP地址/data是远端服务器的目录,要写绝对路径
2、将远端主机文件复制到本机。

[root@localhost data]# scp root@10.10.10.3:/etc/services /dataroot@10.10.10.3's password: //输入远端主机密码services         100%  655KB  64.4MB/s   00:00 
3、指定端口复制,有些不是常规端口时就需要指定

[root@localhost data]# scp -P 22 root@10.10.10.3:/etc/hosts /dataroot@10.10.10.3's password: hosts 100% 158 110.7KB/s 00:00

rsync命令——文件同步工具


rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。

选项:

-z传输时进行压缩
-a以递归方式传输文件,并保持原有属性,相当于-rtopgDI
-r递归复制传输
-t保持文件的时间信息
-o保留文件的属主信息
-p保留文件的权限
-g保留文件的属组信息
-D保留设备文件信息
-l保留软链接
–exclude-from=file排除指定的文件不需要传输
–delete使目标目录内容和源保持目录一直,删除不同的文件

三种模式:

1、本地模式:用于本机传输文件,相当于cp命令

rsync   选项    源文件   目标文件
[root@localhost ~]# rsync -av /etc/hosts /tmpsending incremental file listhosts

sent 267 bytes received 35 bytes 604.00 bytes/sectotal size is 177 speedup is 0.59[root@localhost ~]# ll /tmp总用量 4-rw-r--r-- 1 root root 177 5月 6 2022 hosts

2、远程访问模式:将文件传输给远端主机或拉去远端主机的文件

    拉取:rsync  选项   用户@主机:源文件   目标文件
    推送:rsync 选项 源文件 用户@主机:目标文件
    1、拉取远程文件

    [root@localhost ~]# rsync -avz root@10.10.10.3:/etc/hostname ./ 
    2、拉取远程目录下的所有文件
    [root@localhost ~]# rsync -avz root@10.10.10.3:/root/ /data/
    3、本地文件推送给远程目录
    [root@localhost ~]# rsync -avz /data root@10.10.10.3:/tmp/

    3、守护进程模式:需要安装客户端

    守护进程模式后期使用单独的篇章来详细解读。先了解一些基本用法。

    拉取:
    rsync 选项 用户@主机::源文件 目标文件

    rsync 选项 rsync://用户@主机:端口/源文件 目标文件
    示例:

    rsync -avz rsync_backup@10.10.10.3::backup/ /mnt/ --password-file=/etc/rsync.password
    推送:

    rsync 选项 源文件 用户@主机::目标文件rsync 选项 源文件
    rsync://用户@主机:端口/源文件
    示例: 

    rsync -avz /mnt/ rsync_backup@10.10.10.3::backup/ --password-file=/etc/rsync.password
    发表在 linux文章 | 留下评论

    Linux常用命令之信息显示

    本篇继续分享Linux中常用命令。主要分享Linux系统的信息显示和文件搜索相关的命令。

    uname命令——显示系统信息


    选项:

    -a显示系统所有相关的信息
    -m显示计算机硬件架构
    -n显示主机名称
    -r显示内核发行版本号
    -s显示内核名称
    -v显示内核版本
    -o显示操作系统名称

    常用操作:

    [root@localhost ~]# uname -a    //显示系统所有相关的信息
    Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    [root@localhost ~]# uname -r //显示内核发行版本
    3.10.0-1160.el7.x86_64[root@localhost ~]# uname -v
    #1 SMP Mon Oct 19 16:18:59 UTC 2020

    hostname命令——显示或设置系统的主机名


    相关文件:

    /etc/hosts   :配置域名的文件

    /etc/hostname  :centos7修改主机名的文件

    /etc/sysconfig/network :centos6修改主机名的文件

    常用操作:

    [root@localhost ~]# hostname liyongbin     //临时设置文件名,重启后失效
    [root@localhost ~]# hostname //查看主机名liyongbin
    [root@localhost ~]# hostnamectl set-hostname rudy //永久修改文件名,重启不失效,也可以直接修改/etc/hostname文件
    [root@localhost ~]# hostname rudy
    [root@localhost ~]# hostname -I //显示主机的所有IP地址,不依赖DNS解析,有多少块网卡就有多少个IP地址10.13.2.13

    dmesg命令——系统启动异常诊断


    dmesg用于显示内核环形缓冲区(kernel-ring  buffer)的内容。保存在/var/log目录下

    [root@localhost ~]# dmesg |grep -i error     //查看系统启动过程中的错误信息
    [ 0.955079] BERT: Boot Error Record Table support is disabled. Enable it by using bert_enable as kernel parameter.

    du命令——显示目录或文件所占用的磁盘空间


    选项:

    -s显示总计容量
    -h以人为可读的形式显示,以K,M,G为单位
    -m以MB为单位
    –exclude=<目录或文件》忽略指定的目录或文件

    常用操作:

    [root@localhost ~]# du -sh *   //查看当前目录所有子目录和文件的大小
    0 anaconda-ks.cfg
    4.0K md5.log4.0K test.txt[root@localhost ~]# du -sh md5.log //查看hosts文件大小4.0K md5.log

    date命令——显示和设置时间


    选项:

    -d显示字符串所指的日期与时间
    -s指定当前系统时间
    -u打印或设置协调世界时(UTC)

    时间格式:

    %F显示年月日
    %T显示时分秒
    %Y显示年份
    %m显示月份
    %d显示一个月的第几天
    %H显示时
    %M显示分
    %S显示秒
    %w显示星期几

    常用操作

    [root@localhost ~]# date       //显示当前时间
    2023年 10月 22日 星期日 15:29:40 CST
    [root@localhost ~]# date +%F //显示年月日
    2023-10-22

    [root@localhost ~]# date +%T //显示时分秒
    15:33:35
    [root@localhost ~]# date -s "2024-10-22 15:30:00" //设置指定时间
    2024年 10月 22日 星期二 15:30:00 CST
    [root@localhost ~]# date
    2024年 10月 22日 星期二 15:30:06 CST

    [root@localhost ~]# date +%F -d "100day" //显示100天后的时间
    2024-01-30
    [root@localhost ~]# date +%F -d "-100day" //显示100天前的时间
    2023-07-14
    [root@localhost ~]# date +"%Y-%m-%d %H:%M:%S" //指定格式显示当前时间
    2023-10-22 15:37:24

    echo命令——显示一行文本


    [root@localhost ~]# echo $PATH       //打印环境变量
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@localhost ~]# echo manager > test.sh //将打印字符重定向到文本
    [root@localhost ~]# cat test.sh manage

    [root@localhost ~]# echo manager |passwd --stdin root //修改密码更改用户 root 的密码 。passwd:所有的身份验证令牌已经成功更新。

    watch命令——监视命令执行情况


    watch 命令以周期性的方式执行给定的命令,并全屏显示执行结果。watch 可以帮助监测一个命令的运行结果,省得我们一遍遍地手动运行。

    选项:

    -n指定监测间隔,单位秒。默认 2s,不能低于 0.1s
    -d高亮显示最近两次更新之后的差异
    [root@localhost ~]# watch -n 1 -d netstat -lntup  //每隔 1s 高亮显示网络连接数的变化情况。
    [root@localhost ~]# watch uptime   //每2s显示负载情况
    Ctrl+C退出watch命令界面

    which命令——显示命令的全路径


    [root@localhost ~]# which   date     //查看date命令的全路径/usr/bin/date
    [root@localhost ~]# which which //如果设置了别名,那么使用which功能还将会显示别名alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/alias /usr/bin/which
    [root@localhost ~]# which shutdown poweroff //同时显示多个
    /usr/sbin/shutdown/usr/sbin/poweroff

    详解/bin,/sbin,/usr/sbin,/usr/bin 目录区别、

    /sbin 和/bin

    1. 从命令功能区分

    /sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统

    /bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到

    2. 从用户权限角度区分

    /sbin目录下的命令通常只有管理员才可以运行

    /bin下的命令管理员和一般的用户都可以使用。

    /bin是系统的一些指令,主要放置一些系统的必备执行命令

    比如:

    cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等

    /sbin一般是指超级用户指令。主要放置一些系统管理的必备程式

    比如

    dump、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod ,lsmod、reboot、shutdown 等。

    /usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档

    比如:

    c++、g++、gcc、make wget 等

    /usr/sbin 放置一些用户安装的系统管理的必备程式

    例如

    dhcpd、httpd、imap、、inetd、named、netconfig、samba、sendmail、squid、swap、tcpdump 等

    这些命令的目录都可以通过which命令来查看路径,无需记住其路径。

    发表在 linux文章 | 留下评论

    Linux常用命令之文件处理

    本篇分享一下文件处理的相关常用命令。

    cat命令——查看文件内容


    语法:

    cat   选项   文件

    选项:

    -n 输出行号
    -b输出行号,并忽略空白行,统计的是非空白行数

    常用操作:

    [root@localhost ~]# cat /etc/passwd     //查看文件内容
    root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin

    [root@localhost ~]# cat >> /etc/fstab << EOF //追加内容到文件尾部

    > /dev/sdb /data xfs defaults 0 0
    > EOF
    [root@localhost ~]# cat /dev/null > file.txt //清空文件内容

    more命令——分页显示文件内容


    cat命令是查看所有内容,对于内容较长的文件无法一屏显示所有内容,所以就需要分页显示内容,more命令就有这种分页显示功能。

    常用操作:

    [root@localhost ~]# more /var/log/messages      //分页查看

    常用按键:

    空格键查看下一页
    回车键查看下一行
    b键查看前一页
    q键退出查看页面
    /file查看包含file的内容

    less命令——分页显示文件内容


    less命令和more命令的功能相似,都是分页显示文件内容,但是less命令在交互界面有更灵活的操作

    [root@localhost ~]# less /var/log/messages      //分页查看
    空格键查看下一页
    回车键查看下一行
    b键查看前一页
    q键退出查看页面
    /字符串向下查看包含file的内容
    ?字符串向上搜索内容
    n向后查找下一个匹配的文本
    g移动到第一行
    G移动到最后一行

    总结下more 和 less的区别:

    • less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
    • less不必读整个文件,加载速度会比more更快
    • less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容

    head命令——显示文件内容头部


    默认显示文件的前10行。

    常用操作:

    [root@localhost ~]# head /etc/passwd    //默认显示文件10行
    [root@localhost ~]# head -n 20 /etc/passwd  //显示文件的前20行

    tail命令——显示文件内容尾部

    默认显示文件最后10行。

    选项:

    -f实时输出文件变化后追加的数据
    -n <行数>指定显示行数

    常用操作

    [root@localhost ~]# tail -n 20 /var/log/messages    //显示文件的最后20行
    [root@localhost ~]# tail -f /var/log/messages //动态追踪日志信息

    cut命令——从文件中提取一段文字并输出


    选项:

    -c以字符为单位进行分割
    -d自定义分隔符,默认以tab键为分隔符
    -f指定显示哪个区域,常和-d使用

    常用操作:

    cut -c 2-10 test.txt   //剪切每行2-10位置的字符
    cut -d :  -f 1  /etc/passwd     //指定以:作为分割符,-f指定显示第一个区域

    split命令——分割文件


    选项:

    -l指定分割后文件的最大行数
    -b
    -d以数字为后缀

    常用操作:

    split -l  10  test.txt   new_         //每10行分割一次,分割的文件名以new_开头
    split -l  10  -d  test.txt   new_     //参数-d使用数字后缀
    split -b 500M -d   test.txt   new_    //每500M分割一次

    paste命令——合并文件


    -d    :指定合并的分隔符,默认是TAB

    sort命令——文件排序


    选项:

    -n依照数值大小进行排序
    -r倒序排序
    -t指定分隔符
    -k按指定区间排序

    常用操作:

    sort -n test.txt        //按照数值大小进行排序
    sort -nr test.txt //sort默认按照从小到大排序,使用-r选项就可以实现从大到小
    sort -t " " -k2 test.txt //以空格为分隔符,按照第二列进行排序

    uniq命令——去除重复行


    选项:

    -c去除重复行,并计算每行出现的次数

    常用操作:

    uniq -c test.txt             sort -n test.txt | uniq -c   //结合sort使用,先排序后去重

    wc命令——统计文件的行数、单词或字节数


    选项:

    -l统计行数
    -c统计字节数
    -w统计单词数
    -L打印最长行的长度

    常用操作:

    [root@localhost ~]# wc /etc/passwd   //不加任何参数会打印出行数,单词数据,字节数等三个参数
    20 28 901 /etc/passwd
    [root@localhost ~]# cat /var/log/messages |wc -l   //通过管道符来统计文件的行数

    tee命令——多重定向


    用于将数据重定向到文件,同时提供一份重定向数据的副本输出到屏幕上

    常用操作:

    ls   | tee -a  ls.txt     //将输出内容记录到ls.txt文件中,并输出到屏幕上

    iconv命令——转换文件的编码格式


    语法:

    iconv   选项   原编码    新编码      输入文件

    选项

    -f  编码A从编码A转换
    -t  编码B转变成编码B
    -l显示系统支持的编码
    -o将输出输入到

    常用操作:

    iconv -f gbk -t utf-8   test.txt     # 将test.txt文档的编码从gbk改为utf-8

    diff:比较两个文件的不同

    vimdiff:VIM可视化比较工具  

    vim:文本编辑器,后续会在单独篇章详细讲解

    发表在 linux文章 | 留下评论