linux服务器系统信息
# 显示系统的基本信息
uname -a
# 查看内核版本
uname -r
# 显示有关发行版的信息-操作系统的详细信息
lsb_release -a
# liunx 版本
cat /etc/issue
cat /etc/os-release
more /etc/redhat-release
hostnamectl
cat /proc/version
# cpu 信息
cpu
more /proc/cpuinfo
moer /proc/cpuinfo | grep "model name"
# cpu 位数
getconf LONG_BIT
# 内存信息
grep memtotal /proc/meminfo
free -m
# 查看时区
date -R
# 已经安装的软件包
rpm -qa | wc -l
yum list installed | wc -l
# 命令帮助信息查询
man
# 显示在线登入用户
who
# 显示用户自己的身份
whoami
# 显示当前系统中耗费资源最多的进程
top
# 显示瞬间的进程状态
ps
# 显示文件系统磁盘空间的使用情况
df
# 显示指定的文件(目录) 已使用的磁盘空间总量
du
# 显示当前内存和交换空间的使用情况
free
# 显示网络接口信息
ifconfig
cat /etc/sysconfig/network
# 测试网络的连通性
ping
# 显示网络的状态信息
netstat
# 查看软件安装目录
whereis
# 查看软件的运行路径
which
# 域名解析
nslookup
# 清屏
clear
# 杀死进程
kill
# 服务器关机
shutdown -h now
shutdown -r now
文件夹结构说明
# 在 Linux 系统中一切都属于文件(软件,硬件,文档都是)
# 常用目录:
目录名称 说明
/ Linux系统根目录
/bin 系统启动时需要的执行文件(二进制)
/boot 存放的是启动 linux 时使用的一些核心文件
/dev 设备文件目录(linux 的外部设备)
/etc 操作系统的配置文件目录(防火墙,启动项)
/home 用户信息存放的目录,用户的默认工作目录
/lib Library 库文件存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件
/lost+found 系统非法关机后,存放的一些文件
/media 自动识别的一些设备,U盘,光驱等
/mnt 临时挂载别的文件系统
/opt opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录
/proc proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器
/root 该目录为系统管理员,也称作超级权限者的用户主目录
/sbin Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序
/usr usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
/usr/src 内核源代码默认的放置目录
/var 包含在正常操作中被改变的文件:假脱机文件,记录文件,枷锁文件,临时文件和页格式文件等。
(日志文件)
Linux 目录与文件操作命令
# 查看当前所在目录
pwd
################################
cd 打开目录
cd. 打开下级目录
cd.. 打开上级目录
################################
ls -a 查看目录下的文件「隐藏的」
ll 以列的方式显示目录下的文件列表
################################
mkdir 文件名 创建文件目录
rm -rf 删除文件或目录
rm -rf / 绝对路径
rm -ri 删除文件前询问用户
################################
touch 文件名 创建空白文件
echo 生成一个带内容的文件
################################
cp 复制文件命令
cp -rf / 复制的文件绝对路径 / 复制到的绝对路径
mv 移动文件或修改文件名
mv / 路径旧名称 / 路径新名称
mv / 移动的文件绝对路径 / 移动到的绝对路径
clear 清空屏幕
################################
# 查找文件
-find -name 文件名
################################
# 显示文本文件的内容
[cat, tac, more, tail]
head 从文件开始显示文件内容
head -n 显示指定文件开始的n行数据。比如:head -3 shadow
cat 文件名称:查看所有内容
tail 从文件结尾显示文件内容
tail -f 动态加载某个文件的内容。比如:tail -f message: 用于监测查看日志
tail -n 查看某个文件结尾n行的内容
Linux 权限管理
# (用户/用户组)
用户: 是指操作系统的实际操作者
用户组:是具有相同特征的用户的集合体
UID: 用户唯一标识
GID: 用户分组唯一标识
root用户:Linux 系统权限最高的用户
#######################################
# 切换到指定用户
su[用户名]
# 查看当前登入用户
whoami
# 查看当前用户所属分组
groups
# 查看当前用户UID 和 GID
id
# 添加用户
useradd[用户名]
# 用户名 添加用户并且指定UID
-useradd -u[UID]
#######################################
/etc/passwd 这个文件存放的是用户的信息
/etc/group 这个文件存放的是组的信息
# 修改用户密码
passwd[用户名]
# 删除用户
userdel[用户名]
# 修改用户登入名
usermod -|[新用户名][旧用户名]
# 修改用户所属分组
usermod -g[新组名称][用户名]
# 添加分组
groupadd[组名]
# 添加分组并且指定GID
groupadd -g[组GID][组名]
# 举例:groupadd -g 601 test1
Linux 用户赋权
# 描述:d rwx r-x r-x 2 root root 4096 Sep 23 2011 etc
-d : d表示的是目录而不是文件
-rwx : 拥有者具有读,写,执行的权力
-r-x : 同组用户具有读,执行的权力,没有写权力
-r-x : 其他组用户具有读,执行的权力,没有写的权力
# 权限模式:
u, g, o, a : 拥有着, 同组用户, 其他组用户, 所有人
-, +, = : 赋予, 删除, 设置
r, w, x : 读, 写, 执行权限
# 数字模式
# 使用3位10进制数表示权限操作
r = 4
w = 2
x = 1
r+w+x=7 r+x=5 w+x=3
拥有着 同组用户 其他组用户
# 权限组合的数字表示:
---:0
--x:1
-w-:2
-wx:3
r--:4
r-x:5
rw-:6
rwx:7
############################ chmod ##############################
# chmod(change mode)命令用于更改文件或目录的权限
chmod [选项] 模式 文件名
# 比如:
chmod u+x filename
chmod U+X,G+W filename
chmod g-w filename
# 设置权限为 rwxr-xr--:
chmod 754 filename
# -R:递归更改目录及其内容的权限
chmod -R 755 directoryname
############################ chown ##############################
# chown (change owner)命令用于改变文件的所有者和/或所属组。基本语法如下:
chown [选项] 用户:组 文件名
# -R:递归更改目录及其内容的所有者和组
chown -R newuser:newgroup filename
常用设置
防火墙firewalld和端口设置
# 防火墙 firewalld
systemctl start firewalld 开启
systemctl status firewalld 状态
systemctl stop firewalld 关闭
systemctl disable firewalld 禁止firewall开机启动
firewall-cmd --reload 重启防火墙
# 开放指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 移除指定端口
firewall-cmd --zone=public --remove-port=2375/tcp --permanent
# 注:firewall依赖本机python版本,如果自己升级了python版本,需要修改firewall配置文件
# vim /usr/bin/firewall-cmd, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es
# vim /usr/sbin/firewalld, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es
端口
# 查看端口情况
netstat -tunlp
netstat -tunlp | grep 端口号
# netstat -ntulp | grep 80 //查看所有80端口使用情况·
进程
# 查看端口情况
ps -aux
ps -ef
# 查看特定进程
ps pid
监控类 IO,CPU,内存,磁盘
############## 查看总体情况 ##########
top
htop
# top 命令动态查看一个进程的内存使用,设置为delay 1s,默认是delay 3s
top -d 1 -p pid [,pid ...]
# pmap 命令静态查看一个进程的内存使用
# pmap命令可以显示一个或多个进程所使用的内存数量。你可以使用这个工具来了解服务器上的某个进程分配了多少内存,并以此来判断这是否是导致内存瓶颈的原因。要得到更加详细的信息,使用pmap -d选项。
pmap pid
################# 磁盘IO #################
iostat -xd
################# 网络IO #################
iftop -n
ifstat
dstat -nt
################# 磁盘容量 #################
df -h
################# 内存 #################
free -m
文件解压和压缩
#####################################################################
################################ 压缩 ################################
#####################################################################
# tar 是一个用于创建和处理归档文件的工具,通常与 gzip 或 bzip2 配合使用。
# 创建 .tar.gz 文件
# 压缩单个文件
tar -zcvf archive.tar.gz /path/to/file
# 压缩文件夹
tar -zcvf archive.tar.gz /path/to/directory
c:创建新的归档文件。
z:使用 gzip 压缩。
v:显示处理过程中的文件。
f:指定归档文件的名称。
# 创建 .tar.bz2 文件:
tar -cjvf archive.tar.bz2 /path/to/directory
j:使用 bzip2 压缩。
#####################################################################
################################ 解压 ################################
#####################################################################
# 解压 .tar.gz 文件
tar -zxvf archive.tar.gz
# 解压 .tar.bz2 文件
tar -xjvf archive.tar.bz2
#####################################################################
######################## gzip 和 gunzip #############################
#####################################################################
# 压缩文件
gzip filename
# 解压文件
gunzip filename.gz
gzip -d filename.gz
磁盘设置
# 查看磁盘总体情况
df -h
# 查看文件夹的空间占用情况
du -sh *
du -sh /path
# 排序
du -ah /path/to/directory | sort -rh
# 查看磁盘挂载情况
lsblk
lsblk -f
fdisk -l
# 普通卸载, 卸载/home/data对应挂载的磁盘
umount /home/data
# 强制卸载
umount -l /home/data
# 假设你已经在云服务提供商(如 AWS、Azure 等)控制台中增加了 /dev/sdb 磁盘的大小,现在你需要在系统中进行分区和文件系统的调整
# 分区磁盘 使用 fdisk 或 parted 工具来删除并重新创建分区
# 警告:使用这些工具时要非常小心,因为错误的操作可能会导致数据丢失
# https://www.ywbj.cc/?p=712
# https://blog.csdn.net/qq_39766779/article/details/140787071
# 检查物理卷(PV)使用情况
fdisk
m 获取帮助信息
n 创建新分区
选择分区类型p是主分区,e是扩展分区
指定分区号(如果这是第一个分区,通常是 1)
指定起始和结束的扇区或者以 +SIZEM 或 +SIZEG 指定分区大小(例如,+500M 表示500MB的分区)
输入 w 写入更改并退出
# 1.启动 fdisk 工具
sudo fdisk /dev/nvme0n1
# 3. 使用 growpart 扩展分区
sudo growpart /dev/xvda 1
# 4. 分区调整后,扩展文件系统以使用新的磁盘空间
# 扩展 ext4 文件系统
# 检查和修复文件系统(可选)
sudo e2fsck -f /dev/xvda1
# 扩展文件系统
sudo resize2fs /dev/xvda1
################################################################
##################### 不同的文件系统有不同的扩展命令 ################
# 对于 ext4, ext3, 或 ext2 文件系统,使用 resize2fs 命令
sudo resize2fs /dev/xvda1
# 对于 XFS 文件系统,使用 xfs_growfs 命令。需要注意的是,XFS 文件系统必须挂载才能扩展。
sudo xfs_growfs /mount/point
# 对于 Btrfs 文件系统,使用 btrfs filesystem resize 命令
sudo btrfs filesystem resize max /mount/point
网络相关
# 配置固定ip
### 在 CentOS 或 RHEL 系统中,网络接口配置通常存储在 /etc/sysconfig/network-scripts/ifcfg-<interface> 文件中
### 如果 ens160 是你的网络接口名称,配置该接口的文件路径为 /etc/sysconfig/network-scripts/ifcfg-ens160。
# 编辑配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens160
# 内容
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.179.137
NETMASK=255.255.255.0
GATEWAY=192.168.179.1
DNS1=8.8.8.8
DNS2=8.8.4.4
配置项说明:
TYPE: 网络接口的类型。Ethernet 表示这是一个有线网络接口。
BOOTPROTO: 设置为 static 表示使用静态 IP 地址配置。如果你使用 DHCP,应该设置为 dhcp。
NAME: 网络接口的名称(ens160)。
DEVICE: 网络接口的设备名称(ens160)。
ONBOOT: 是否在系统启动时启用此接口。设置为 yes 表示启动时启用该接口。
IPADDR: 配置的静态 IP 地址(例如 192.168.179.137)。
NETMASK: 子网掩码(通常是 255.255.255.0,如果是 /24 子网)。
GATEWAY: 默认网关的 IP 地址(例如 192.168.179.1)。
DNS1 和 DNS2: 配置 DNS 服务器地址(例如 Google 的公开 DNS 地址 8.8.8.8 和 8.8.4.4,你也可以使用其他 DNS 服务)。
# 重启网络服务
sudo systemctl restart network
sudo systemctl restart NetworkManager
# 验证网络配置
ip addr show ens160
软件安装
rpm、yum和apt是与Linux软件包管理系统相关的工具,它们在不同的Linux发行版中执行类似的功能,但有一些关键的区别。
rpm(Red Hat Package Manager): rpm 是 Red Hat 及其衍生发行版(如CentOS、Fedora等)使用的软件包管理工具。 主要功能: rpm 主要用于安装、升级、卸载和查询软件包。它管理的是单个软件包,而不涉及软件包之间的依赖关系。
yum: yum(Yellowdog Updater, Modified)是基于rpm的包管理工具,用于简化rpm的使用,并解决软件包之间的依赖关系。 主要功能: yum可以自动解决依赖关系,通过从指定的软件仓库中下载并安装软件包。它可以处理依赖关系、升级和卸载软件包,并且可以在本地缓存软件包以提高效率。
apt(Advanced Package Tool): apt 是用于 Debian 及其衍生发行版(如Ubuntu)的软件包管理工具。 主要功能: apt 提供了一组高级工具,用于管理 Debian 系统中的软件包。apt会自动解决依赖关系,通过从指定的软件仓库中下载并安装软件包,类似于yum的功能。apt也可以升级系统中的所有软件包。
支持发行版: rpm 主要用于 Red Hat 及其衍生发行版。 yum 是在rpm基础上的扩展,专门为 Red Hat 系统设计。 apt 主要用于 Debian 及其衍生发行版。
依赖解决: rpm 本身不解决依赖关系,而用户通常需要手动解决依赖问题。 yum 和 apt 都具备自动解决依赖关系的能力,使得安装和升级软件包更为方便。
软件仓库: rpm 操作的是本地的软件包文件,而不是通过软件仓库进行管理。 yum 和 apt 使用软件仓库,通过在线仓库管理软件包的安装、升级和卸载。 总体而言,这些工具为Linux系统提供了便捷的软件包管理方式,其中yum和apt更加高级和用户友好,尤其是在处理依赖关系方面。
包管理
# Ubuntu/Debian 系统
sudo apt update
# CentOS/RHEL 系统
sudo yum install epel-release
安装方式
# 1.tar 解压安装
-安装包格式 : tar , tar.gz , tar.bz
-安装软件包 : tar -zxvf [包名]
# 2.rpm 直接安装
-安装包格式 :rpm
-安装软件包 :rpm -ivh 软件包路径
-卸载软件包 :rpm -e 软件包全名
# 3. yum 在线安装
-安装软件包 : yum -y install subversion
-卸载软件包 : yum -y remove subversion
安装示例
安装JDK
# 更新软件包
sudo yum update
# 安装
sudo yum install java-1.8.0-openjdk
# sudo yum install java-1.8.0-openjdk-devel
# sudo yum install java-17-openjdk-devel
java -version
安装 Nginx
sudo yum update
sudo yum install nginx
sudo systemctl start nginx
安装 Apache-Tomcat
下载地址: archive.apache.org
步骤:
1.下载tomcat
2.解压安装包
-tar -zxvf tomcat7.0.tar.gz -C /usr/build 【c 大写 ,后面加解压的路径 】
3.ok
4.启动在bin目录下
-sh startup.sh
5.开启端口号
- 先关闭防火墙
- 查看ip
- 这时候就可以通过其他主机,通过访问ip地址和端口 就可以访问。
Swap分区使用
# 1. 新建 swap 分区
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048
sudo dd if=/dev/zero of=/var/swapfile bs=1G count=8
sudo fallocate -l 8G /var/swapfile
# 2. 授权文件
sudo chmod 600 /var/swapfile
# 3. 通过mkswap命令将上面新建出的文件做成swap分区
sudo mkswap /var/swapfile
# 4. 开启 swap
sudo swapon /var/swapfile
## 关闭 swap
sudo swapoff /var/swapfile
## 注:若想永久修改,则编辑/etc/sysctl.conf文件
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
# 5. 查看分区
swapon -s
swapon --show
#######
# 设置swappiness值:swappiness是一个Linux内核参数,它控制系统在内存不足时,
# 倾向于使用swap而不是杀死进程。你可以使用sysctl命令调整swappiness值。
# 例如,将swappiness值设置为60
sudo sysctl vm.swappiness=60
# 释放服务器缓存
sync && echo 3 > /proc/sys/vm/drop_caches
# 或者
sudo sysctl -w vm.drop_caches=3
## 支持docker
# 编辑 grub 配置: 打开 /etc/default/grub 文件
# Linux buff/cache 过高吃掉物理内存
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
echo 3 > /proc/sys/vm/drop_caches,即可清空buff/cache,目前此设备内存已恢复正常
致谢
希望这篇文章对您有所帮助!如果有任何问题,欢迎交流讨论。更多内容欢迎关注 [ 小巫编程室 ] 公众号。也希望您能点赞和转发支持,您的喜欢与支持是小编最大的鼓励,小巫编程室感谢您的关注与支持。🎉🎉🎉🚀🚀🚀
评论 (0)