五、常见操作
1、静态路由配置
【描述】:当前ifconfig eno16777728 对应ip:172.41.0.120
【解决】:
(1) [root@localhost ~]# cd /etc/sysconfig/network-scripts/
(2) 添加文件:route-eno16777728
172.41.200.0/24 via 172.41.0.253 dev eno16777728
172.41.202.0/24 via 172.41.0.253 dev eno16777728
172.41.203.0/24 via 172.41.0.253 dev eno16777728
172.41.205.0/24 via 172.41.0.253 dev eno16777728
(3)重启网卡
service network restart
或者:systemctl restart network
【测试】:
[root@localhost network-scripts]# ping 172.41.200.236
PING 172.41.200.236 (172.41.200.236) 56(84) bytes of data.
64 bytes from 172.41.200.236: icmp_seq=1 ttl=127 time=0.330 ms
2、双网卡未启动
【描述】:
双网卡在reboot后一个未启动
【解决】:
(1) cd /etc/sysconfig/network-scripts/
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eno16777728
ifcfg-eno33554952
(2)cat ifcfg-eno16777728
[root@localhost network-scripts]# cat ifcfg-eno16777728
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777728
UUID=3bb5eab6-8300-4499-b882-f4d611e663a1
DEVICE=eno16777728
ONBOOT=no
IPADDR=172.41.0.120
PREFIX=24
GATEWAY=172.41.0.253
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
(3) ONBOOT 修改 为 yes
[root@localhost network-scripts]# cat ifcfg-eno33554952
TYPE=“Ethernet”
BOOTPROTO=none
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
NAME=“eno33554952”
UUID=“dd995643-1fc6-43d5-91a5-0a8d9e944eb7”
DEVICE=“eno33554952”
ONBOOT=“yes”
IPADDR=192.168.2.53
PREFIX=24
GATEWAY=192.168.2.1
DNS1=61.132.163.68
DNS2=202.102.213.68
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
【总结】:
修改成一致后解决。
3、Faild to start LSB
【描述】:重启网卡起不来报错:Faild to start LSB: Bring up/down networking
【解决】:
重启网络
systemctl restart network.service
或者 service network restart
都报错
【措施】:
https://www.cnblogs.com/lovebing/p/9805294.html
采用第三种方法解决了。
辅助查询了宿主机的ipconfigstart LSB3
4、上传文件到linux服务器
4.1 FileZilla
https://jingyan.baidu.com/article/219f4bf7d28185de442d38d2.html
此连接需要开启linux系统的sshd服务,目前常见的linux系统都默认开启的,如果没有开始,在linux系统下执行 service sshd start 命令即可开启!
配置完成主机ip:192.168.182.128
用户名:root
密码:huanzs1123
端口:22
SFTP协议
左边右击,“上传”即可。
4.2 Xftp
4.3 rz sz
rz
和 sz
是 Linux 系统中用于文件上传和下载的命令,它们属于 rzsz
工具,这个工具是基于 rlogin
和 szlocal
命令的,通常用于串行通信中。rz
是 receive 的缩写,用于接收文件;sz
是 send 的缩写,用于发送文件。
安装 rzsz
首先,确保你的系统上已经安装了 rzsz
工具。如果没有安装,可以使用以下命令安装:
对于 Debian/Ubuntu 系统:
sudo apt-get update
sudo apt-get install rzsz
对于 Red Hat/CentOS/Fedora 系统:
sudo yum install lrzsz
对于 openSUSE 系统:
sudo zypper install lrzsz
使用 rz
上传文件
- 打开一个终端窗口。
- 进入你希望上传文件的目标目录。
- 输入
rz
命令并按回车键。这会打开一个文件选择对话框,让你选择要上传的文件。 - 在文件选择对话框中,选中你想要上传的文件,然后点击“打开”或按回车键确认。
- 文件开始上传。上传完成后,你会看到一个提示,表明文件上传成功。
使用 sz
下载文件
-
打开一个终端窗口。
-
进入你希望下载文件的目录。
-
输入sz命令,然后输入文件的完整路径。例如,如果你想要下载/path/to/file,你应该输入:
sz /path/to/file
-
按回车键。文件开始下载到当前目录。
注意事项
- 使用
rzsz
时,确保另一台计算机也支持rzsz
或者已经设置了相应的串行通信连接。 - 如果你在上传或下载文件时遇到权限问题,可能需要使用
sudo
来获取必要的权限。 rzsz
工具的界面和操作可能会有所不同,具体取决于你的系统和rzsz
的版本。
5、运维流程思路
Linux 运维通常涉及监控、维护和优化系统。以下是一个基本的运维流程,它可以帮助您系统地解决问题和保持系统的稳定运行。
1. 系统监控
- 查看系统资源使用情况:使用
top
,htop
,vmstat
等命令监控 CPU、内存、磁盘 I/O 和网络使用情况。 - 检查系统日志:查看
/var/log/
目录下的日志文件,如/var/log/syslog
,/var/log/message
,以及各个服务的日志。
例如:查询所有端口服务
[root@eifire ~]# netstat -ntpl
[root@eifire ~]# netstat -nupl
或者 #netstat -at -au
- 当前tcp端口服务:22、443、637、7500、8380,但是服务运行的有:22、443、8380、7500
- 当前udp端口服务:68 ,telnet 测试不通
- 在 Linux 中,已经推荐使用 ss 来替代 netstat ,使用 ip route 来替代 netstat -r ,使用 ip -s link 来替代 netstat -i ,使用 ip addr 来替代 netstat -g 了。
2. 服务管理
- 查看所有运行中的服务:使用
systemctl
命令查看所有单元文件的状态(systemctl list-unit-files
)和所有运行中的服务(systemctl list-units --type=service --state=running
)。 - 检查服务状态:使用
systemctl status <service_name>
查看特定服务的状态。 - 启动、停止、重启服务:使用
systemctl start <service_name>
,systemctl stop <service_name>
,systemctl restart <service_name>
。
3. 网络配置
- 检查网络连接:使用
ping
,traceroute
,netstat
等命令检查网络连接和路由。 - 查看防火墙设置:使用
ufw
或iptables
查看和管理防火墙规则。
4. 存储和备份
- 检查磁盘空间:使用
df
命令检查磁盘使用情况,使用du
查看目录占用空间。 - 监控磁盘 I/O:使用
iostat
或iotop
监控磁盘 I/O 性能。 - 执行备份任务:定期执行文件系统备份,可以使用
tar
,rsync
或专用备份工具。
5. 安全审计
- 更新系统和软件:使用
yum update
或apt-get update
更新系统和软件包。 - 安装安全补丁:及时安装安全补丁以修复已知漏洞。
- 审计系统日志:检查
/var/log/audit/
目录下的审计日志,了解系统的异常行为。
6. 系统更新和升级
- 计划更新和升级:根据服务器的重要性和更新策略,计划系统更新和软件升级。
- 备份重要数据:在更新前备份重要数据,以防更新过程中出现意外。
- 逐步更新:可以先在测试环境中验证更新,确保没有问题后再在生产环境中执行。
7. 性能优化
- 优化配置文件:根据服务器的工作负载和性能瓶颈,优化系统配置文件。
- 调整资源分配:使用
cgroups
调整 CPU、内存和磁盘 I/O 的资源分配。 - 使用负载均衡:如果服务器负载过高,考虑使用负载均衡技术分散压力。
8. 故障处理
- 快速响应:当系统出现故障时,迅速响应并定位问题。
- 故障分析:分析故障原因,可能是硬件故障、软件冲突、配置错误等。
- 实施解决方案:根据故障原因实施解决方案,如更换硬件、调整配置、重新部署服务。
9. 文档和自动化
- 记录操作手册:编写和维护操作手册,记录系统的配置和运维步骤。
- 实现自动化:使用脚本或自动化工具(如 Ansible, Puppet, Chef)减少重复性工作。
10. 持续监控和维护
- 设置持续监控:使用工具如 Nagios, Prometheus + Grafana 等进行持续的系统监控。
- 定期维护:定期进行系统维护,如清理日志、优化数据库、检查硬件状态。
这个流程是一个大致的框架,具体的步骤可能会根据您的系统环境、使用场景和业务需求进行调整。
6、性能监测
6.1 vmstat
vmstat是查看虚拟内存(virtual memory)的工具,可以得到相关进程、内存、阻塞IO、CPU等活动信息。
语法格式:
[root@dbserver ~]# vmstat 2 100
参数说明:
vmstat 2 100:表示每两秒采集一次服务器状态,采集100次。
参数说明:
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小IO:
bi: 每秒读取的块数
bo: 每秒写入的块数system:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间)
wa: 等待IO时间
示例:
在这里插入图片描述
6.2 top
- top 命令是性能监控程序,它可以在很多 Linux/Unix 版本下使用,并且它也是 Linux 系统管理员经常使用的监控系统性能的工具。
- Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。
- 它也会显示内存和 CPU 使用率过高的正在运行的进程。
- 当我们对 Linux 系统需要去监控和采取正确的行动时,top 命令对于系统管理员是非常有用的。让我们看下 top 命令的实际操作。
语法:
[root@dbserver ~]# top
示例:
6.3 lsof
- lsof 命令对于很多 Linux/Unix 系统都可以使用,主要以列表的形式显示打开的文件和进程。
- 打开的文件主要包括磁盘文件、网络套接字、管道、设备和进程。
- 使用这个命令的主要原因是一个一个盘不能卸载并且显示文件正在使用或者打开的错误信息。
- 这个命令很容易看出哪些文件正在使用。
这个命令最常用的格式:
[root@dbserver ~]# lsof
示例:
7、如何查看jar进程的程序路径和相关信息
要查看正在运行的 JAR 进程的程序路径和其他相关信息,您可以使用几个不同的 Unix/Linux 命令。
-
使用
ps
命令:
您可以使用ps
命令查看当前运行的进程,并使用相关的选项来获取 JAR 进程的详细信息。例如:ps -ef | grep java | grep -v grep | awk '{print $8}' | cut -d '=' -f2
这个命令会列出所有包含 “java” 的进程,排除掉 grep 自己的进程,然后使用
awk
和cut
提取 JAR 文件的路径。 -
使用
jps
命令:
jps
是 Java Process Status 工具,它可以列出当前运行的 Java 进程。运行以下命令:jps -l
这将列出所有正在运行的 Java 进程,包括它们的完整的类路径。
-
使用
top
或htop
:
这些命令提供了一个实时的系统进程视图。在终端中简单地输入top
或htop
并按M
键可以按内存使用排序,从而找到 Java 进程。 -
使用
strace
命令:
如果您需要更详细的进程信息,可以使用strace
命令来跟踪进程的系统调用。例如:strace -f -o output.txt -p <process-id>
将
<process-id>
替换为您想要跟踪的 Java 进程的 PID。这将详细记录该进程的所有系统调用。 -
使用
lsof
命令:
lsof
可以用来查看打开文件和与之关联的进程。如果您的 JAR 进程打开了一些文件,您可以使用:lsof -p <process-id>
同样,将
<process-id>
替换为 Java 进程的 PID。
请注意,以上命令假设您的 JAR 进程是以java -jar your-application.jar
命令启动的。如果您使用的是其他命令或参数启动 JAR 文件,您可能需要调整上述命令以适应您的具体情况。 -
实际举例
假设您已经启动了一个名为myapp.jar
的 Java 应用程序,并且您想要查看运行该 JAR 文件的进程信息。
步骤 1: 查找运行 JAR 文件的进程
您可以使用ps
命令来查找包含myapp.jar
的进程。由于myapp.jar
可能在进程名称中,而不一定是完整的路径,您可以使用grep
命令来过滤输出。
ps -ef | grep myapp.jar
这将列出所有运行中包含 myapp.jar
的进程。如果 myapp.jar
没有在进程名称中,您可能需要检查 ps
输出的全貌来找到实际的 Java 进程。
步骤 2: 获取 JAR 进程的详细信息
一旦您找到了运行 JAR 文件的进程,您想要获取更多详细信息,比如进程 ID (PID)、父进程 ID (PPID)、运行状态等。
ps -fp <PID>
将 <PID>
替换为您找到的 JAR 进程的 PID。
步骤 3: 检查 JAR 文件的路径
如果 myapp.jar
没有在进程名称中出现,您可能需要查看 ps
输出的全貌来找到实际的 Java 进程。您可以通过查看进程的命令行参数来找到 JAR 文件的路径。
ps -fp <PID> | grep -oP '(\s*[^ ]+/)?myapp.jar'
这里我们使用了 grep -oP
来只输出匹配的部分,并且使用了正则表达式来处理可能存在的路径前缀。
步骤 4: 使用 jps
命令
jps
命令可以提供更精确的信息,因为它专门用于查找 Java 进程。
jps -l
这将列出所有正在运行的 Java 进程,包括它们的完整的类路径。如果 myapp.jar
是您正在查找的进程,这将显示完整的类路径。
步骤 5: 使用 strace
命令
如果您想要跟踪进程的系统调用,可以使用 strace
。
strace -fp <PID>
这将跟踪指定进程的所有系统调用。
步骤 6: 使用 lsof
命令
lsof
可以用来查看打开文件和与之关联的进程。如果您的 JAR 进程打开了一些文件,您可以使用:
lsof -p <PID>
这将显示与指定进程 ID 关联的所有文件。
请注意,<PID>
需要替换为您找到的实际进程 ID。在执行这些命令时,您可能需要具有相应的权限,特别是对于 ps
、jps
和 strace
命令,通常需要 root 权限或者针对特定用户配置了相应的权限。
8、mysql新建账户
mysql默认只有root账号,为了安全起见,使用远程管理工具时最好使用其他账号登录,所以需要创建新的账号并授予远程登录权限
8.1 授权全部权限账户
1、登录mysql,执行登录命令,输入密码进行登录。
mysql -u root -p
2、指向操作的mysql数据库,用户信息都在mysql中管理。
mysql> use mysql;
3、创建用户“test001”,并指定密码"123456"。
mysql> create user 'test001' identified by '123456'; Query OK, 0 rows affected (0.00 sec)
4、授予用户“test001”远程登录权限,需要指定设置的密码。
mysql> grant all privileges on *.* to 'test001'@'%' identified by '123456' with grant option; Query OK, 0 rows affected, 1 warning (0.00 sec)
5、刷新mysql用户权限
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
6、此时已经可以使用创建好的用户“test001”进行远程登录了。
8.2 授权只读账户
这个不能访问数据库。
mysql> grant select on *.* to 'test002'@'%' identified by 'test002@2022jtj' with grant option;
改成这个也可以访问数据库。