Centos7服务器
配置情况
-
查看操作系统信息:
bash
cat /etc/*-release
-
查看 CPU 信息:
bash
cat /proc/cpuinfo
或者使用
lscpu
命令:bash
lscpu
-
查看内存信息:
bash
free -m
-m
参数表示以 MB 为单位显示内存信息。 -
查看磁盘信息:
bash
df -h
-h
参数表示以人类可读的格式显示磁盘空间。 -
查看网络接口信息:
bash
ifconfig
或者使用
ip
命令:bash
ip addr
-
查看系统负载:
bash
uptime
-
查看系统启动时间:
bash
who -b
-
查看系统运行时间和平均负载:
bash
cat /proc/loadavg
-
查看系统硬件信息:
bash
dmidecode
-
查看系统服务状态:
bash
systemctl status
你可以指定服务名来查看特定服务的状态。
-
查看系统版本和内核信息:
bash
uname -a
-
查看系统分区信息:
bash
fdisk -l
-
查看系统环境变量:
bash
printenv
-
查看系统进程信息:
bash
top
或者使用
ps
命令:bash
ps aux
-
查看系统防火墙状态:
bash
firewall-cmd --state
这些命令为你提供了一个全面的服务器配置概览。根据你的需求,你可以选择使用这些命令中的一个或多个来获取所需的信息。如果你需要更详细的信息,可能需要使用特定的工具或命令。
资源监控
# 查看资源: top
# 查看内存: free -h
查看磁盘大小
sudo df -h
查看挂载点路径大小
sudo df -h /
查看centos7子目录大小
sudo du -sh /*
ps -ef命令
ps -ef|grep nginx
时间处理
[leouser@dev ~]$ timedatectl
Local time: 三 2023-10-18 16:06:06 CST
Universal time: 三 2023-10-18 08:06:06 UTC
RTC time: 三 2023-10-18 08:06:05
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[leouser@dev ~]$ date
2023年 10月 18日 星期三 16:07:23 CST
SHOW VARIABLES LIKE '%time_zone%';
system_time_zone CST
time_zone +08:00
端口查看
在 CentOS 7 中,你可以使用以下命令来查看端口的状态和监听情况:
- 查看所有打开的端口和对应的监听进程:
sudo netstat -tulnp
- 查看指定端口是否被占用:
sudo netstat -tulnp | grep <PORT>
请将 <PORT>
替换为你想要查看的具体端口号。
在上述命令中:
-t
表示显示 TCP 相关的端口信息。-u
表示显示 UDP 相关的端口信息。-l
表示仅显示处于监听状态的端口。-n
表示以数字形式显示端口号,而不进行域名解析。-p
表示显示端口对应的进程名称。
使用 sudo
是为了获取更详细的信息,因为查看端口需要管理员权限。
通过以上命令,你可以查看系统中当前所有打开的端口和对应的进程信息,以及指定端口是否被占用。
- 使用ss命令: ss是Socket Statistics的缩写,它是一个工具,用于获取socket统计信息,它可以成为netstat的替代品。要检查特定端口,可以使用以下命令:
ss -tulnp | grep 端口号
- 使用lsof命令: lsof(List Open Files)是一个查看当前系统打开文件的工具,也可以用来检查端口。使用以下命令来检查特定端口:
lsof -i :端口号
- 使用telnet命令(仅限TCP端口): 如果您只是想测试远程系统上的TCP端口是否开放,可以使用telnet命令:
telnet IP地址 端口号
- 使用nmap工具: nmap是一个网络扫描工具,可以用来发现设备上开放的网络端口。要检查远程设备上的端口,可以使用以下命令:
nmap -p 端口号 IP地址
这将显示端口的状态(开放、关闭或过滤)。
查看JAVA应用
列出的Java进程信息中包含主类的全名。这里的-l选项表示长格式(long),它会显示Java进程的完整类名
jps -l
[root@leo-sys-dev sqlstudio]# jps -l
4753 org.elasticsearch.bootstrap.Elasticsearch
10146 /home/sqlstudio/Maicong-SQLStudio-1.8.0-release.jar
1224 org.logstash.Logstash
28825 /home/sys/server-lang/sys-server-lang.jar
11593 /home/sys/server/sys-server.jar
13211 sun.tools.jps.Jps
修改文件
如果你想要更安全的操作,可以考虑使用 rsync
命令,它提供了一种更智能的方式来同步文件夹内容,并且可以避免删除目标文件夹中不应该删除的文件:
# 使用 rsync 来同步文件夹内容,并且删除目标文件夹中多余的文件
rsync -av --delete /data/program/sys-front-backup/sys-front_20240516_143000/ /data/program/sys-front/
rsync
命令的 -a
参数表示归档模式,它保留了原始的文件权限、时间戳等信息,-v
参数表示详细模式,会显示复制过程中的信息,--delete
参数则表示删除目标文件夹中那些在源文件夹不存在的文件。使用 rsync
可以确保目标文件夹中只包含源文件夹中的内容,而不删除其他不应该删除的文件。
远程复制
-
scp filename leouser@1.1.1.1:/dir/dir/
这个命令用于将本地文件
filename
复制到远程服务器上。这里的远程服务器由用户leouser
和 IP 地址1.1.1.1
指定,文件将被复制到远程服务器上的/dir/dir/
目录中。filename
:要复制的本地文件的名称。leouser@1.1.1.1
:远程服务器的用户名和 IP 地址。:/dir/dir/
:远程服务器上的目的地目录。
如果远程目录不存在,
scp
命令可能会失败。如果filename
包含路径,那么文件的相对路径也会被保留。 -
scp -r dir leouser@1.1.1.1:/dir/dir/
这个命令用于将本地目录
dir
递归地复制到远程服务器上。-r
选项表示递归复制,这对于复制整个目录结构非常有用。-r
:递归复制,用于目录复制。dir
:要复制的本地目录的名称。leouser@1.1.1.1
:远程服务器的用户名和 IP 地址。:/dir/dir/
:远程服务器上的目的地目录。
使用
-r
选项时,scp
会复制目录以及目录内的所有文件和子目录。如果远程目录不存在,scp
会尝试创建它。确保有足够的权限来读取本地文件或目录,并且远程服务器上的用户
leouser
有权限写入目标目录/dir/dir/
。
用户管理
创建用户
- 创建一个 Elasticsearch 用户:
bashCopy code
sudo useradd -d /path/to/elasticsearch -M -r -s /bin/bash elasticsearch
- 将 Elasticsearch 安装目录的所有权转移到这个新用户:
bashCopy code
sudo chown -R elasticsearch:elasticsearch /path/to/elasticsearch
- 切换到新创建的用户:
bashCopy code
sudo su - elasticsearch
- 进入 Elasticsearch 安装目录,运行 Elasticsearch 服务:
bashCopy codecd /path/to/elasticsearch
./bin/elasticsearch
这样,你就使用非root用户身份启动了 Elasticsearch 服务。确保 Elasticsearch 的安装目录和数据目录对新用户可读写,并根据需要配置 Elasticsearch 的配置文件。
同时,在启动 Elasticsearch 之前,最好检查一下 /path/to/elasticsearch/logs/elasticsearch.log
日志文件,查看是否有其他错误或警告信息,以便及时进行排查和处理。
查看用户
- 查看当前登录用户:
whoami
- 查看所有用户列表:
cat /etc/passwd
该命令会输出所有用户的信息,每行表示一个用户,包含用户名、用户 ID、组 ID、用户家目录和默认 Shell 等信息。
- 查看当前登录的所有用户:
who
该命令会列出当前登录的所有用户,并显示其用户名、登录终端、登录时间等信息。
- 查看当前登录用户的详细信息:
id
该命令会显示当前登录用户的详细信息,包括用户 ID、组 ID、附加组、家目录等。
- 查看当前登录用户的组信息:
groups
该命令会显示当前登录用户所属的组列表。
请注意,在使用这些命令时,可能需要使用管理员权限(如 sudo
或 root
用户)来查看所有用户列表和其他用户的详细信息。
查找命令
在 CentOS 7 中,你可以使用 find
命令来删除指定日期之前的文件。假设该文件位于 /path/to/files/
目录下,下面是删除日期小于 2023-06-30 的文件的命令:
find /path/to/files/ -type f -name "elasticsearch-*.log.gz" ! -newermt "2023-06-30" -delete
解释一下上面的命令:
find /path/to/files/
:在/path/to/files/
目录下查找文件。-type f
:限定查找的是普通文件,排除目录。-name "elasticsearch-*.log.gz"
:匹配文件名为elasticsearch-*.log.gz
的文件。! -newermt "2023-06-30"
:使用逻辑 NOT 条件!
,表示查找修改时间不是在 2023-06-30 之后的文件。-delete
:对查找到的文件执行删除操作。
在执行这个命令之前,建议先使用 find
命令的 -print
参数进行测试,看看是否能够正确找到要删除的文件。例如:
find /path/to/files/ -type f -name "elasticsearch-*.log.gz" ! -newermt "2023-06-30" -print
如果输出显示了你要删除的文件列表,确认无误后,再将 -delete
参数加入执行命令中。请务必谨慎执行删除操作,确保不会误删重要文件。
批量删除日志
find /home/leouser/logs -type f -name "dev-*" -exec rm -f {} \;
警告:使用 rm
命令删除文件是不可逆的,请确保你正确指定了文件名模式和路径,以避免误删除重要文件。在执行删除操作之前,你可以先用 echo
替换 rm
来确认哪些文件将被删除:
find /path/to/search -type f -name "dev-*" -exec echo {} \;
批量删除60天之前
find /home/leouser/logs -type f -name "prd-*" -mtime +30 -exec rm -f {} \;
警告:使用 rm
命令删除文件是不可逆的,请确保你正确指定了文件名模式和路径,以避免误删除重要文件。在执行删除操作之前,你可以先用 echo
替换 rm
来确认哪些文件将被删除:
find /home/leouser/logs -type f -name "prd-*" -mtime +30 -exec ls -l {} \;
ELK服务
ES服务
启动 Elasticsearch 服务
并使其在后台运行,可以按照以下步骤操作:
PS: Elasticsearch 官方不建议以root权限运行 Elasticsearch,因为这可能会导致安全风险和权限问题。
-
进入 Elasticsearch 安装目录: 在终端中使用
cd
命令进入 Elasticsearch 的安装目录。假设 Elasticsearch 安装在/path/to/elasticsearch
目录下,那么可以输入以下命令:bashCopy code cd /path/to/elasticsearch
-
启动 Elasticsearch 服务: 使用
./bin/elasticsearch
命令启动 Elasticsearch 服务。如果一切正常,你会在终端看到 Elasticsearch 的启动日志信息。例如:./bin/elasticsearch
如果 Elasticsearch 配置了自定义的配置文件,可以使用
-E
参数指定配置文件的路径,例如:./bin/elasticsearch -Epath.conf=/path/to/config
-
后台运行: 默认情况下,终端中启动的 Elasticsearch 进程会占用当前终端窗口,并在该终端窗口中输出日志信息。如果你希望 Elasticsearch 在后台运行,可以使用以下两种方法:
a. 使用
&
符号: 在启动 Elasticsearch 命令的末尾加上&
符号,表示将进程置于后台运行。例如:./bin/elasticsearch &
这样,Elasticsearch 将在后台运行,且终端仍然可用于其他命令。
b. 使用
nohup
命令: 使用nohup
命令可以使 Elasticsearch 在后台运行,并将输出日志重定向到一个文件中,这样即使终端关闭,Elasticsearch 也会继续运行。例如:nohup ./bin/elasticsearch &
默认情况下,日志输出会保存在
nohup.out
文件中。如果希望自定义日志输出文件,可以使用以下命令:nohup ./bin/elasticsearch > /path/to/elasticsearch.log 2>&1 &
选择其中一种方法将 Elasticsearch 启动并后台运行,根据需要选择合适的方式。注意,无论哪种方式,Elasticsearch 进程都会在后台运行,你可以通过查看日志文件来监视 Elasticsearch 的运行状态。
ELK日志处理
# 日志目录 /home/elk/elasticsearch-7.17.5/logs
cd /home/elk/elasticsearch-7.17.5/logs
多条件匹配日志内容
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "slow sql"
}
},
{
"match": {
"message": "label_no"
}
}
]
}
}
}
优化建议
#如何优化ES采集数据导致索引时间与日志实现不同问题,能使用日志时间[2023-12-30 14:13:17.067]作为索引时间
Dec 30, 2023 @ 14:13:17.866 [2023-12-30 14:13:17.067] [http-nio-10001-exec-4] DEBUG c.e.w.s.m.S.updateLabel - [debug,135] - <== Updates: 1
Dec 30, 2023 @ 14:13:17.866 [2023-12-30 14:13:16.938] [http-nio-10001-exec-4] DEBUG c.e.w.s.m.S.getMinMoveNoByLabelId - [debug,135] - <== Total: 1
批量删除
在 CentOS 7 中,你可以使用 find
命令来查找并删除一个月前的日志文件。find
命令可以根据文件的修改时间(mtime)来查找文件,然后使用 -exec
选项来执行删除操作。
下面是一个示例命令,它会查找并删除所有在 30 天前修改的 .json.gz
和 .log.gz
文件:
find /home/elk/elasticsearch-7.17.5/logs -type f \( -name "*.json.gz" -o -name "*.log.gz" \) -mtime +30 -exec rm -f {} \;
在这个命令中:
/path/to/logs
是日志文件的路径,你需要将其替换为实际的路径。-type f
表示只查找文件。-name "*.json.gz" -o -name "*.log.gz"
表示查找以.json.gz
或.log.gz
结尾的文件。-mtime +30
表示查找在 30 天前修改的文件。-exec rm -f {} \;
表示对每个找到的文件执行rm -f
命令,删除这个文件。
请注意,这个命令会立即删除找到的文件,不会有任何提示或确认。在运行这个命令之前,请确保你已经备份了所有重要的数据。
ELK索引处理
进入kibana页面处理索引管理 - Elastic
MYSQL服务命令
# 使用root用户访问数据库,并在test库中执行下面的SQL
# 请注意,以root用户身份访问数据库可能存在安全风险,请谨慎操作。
# 步骤一:使用root用户登录数据库
mysql -u root -p
# 步骤二:输入root用户的密码进行登录
# 步骤三:切换到test数据库
use test;
# 步骤四:执行所需的SQL语句
SELECT * FROM your_table;