Linux运维


文章目录


前言

目前大部分服务器都是用的Linux,程序员对linux系统的了解也成了必要条件。下面内容是根据我个人在开发中用到的Linux相关知识进行一个分类分享


dump配置

一、dump 安装

1.1 在ubuntu系统上安装dotnet sdk和运行时

执行以下命令
安装sdk

sudo apt install dotnet-sdk-8.0

安装运行时

sudo apt install dotnet-runtime-8.0

在这里插入图片描述
安装好了之后环境变量文件会增加以下配置
通过以下命令查看,它处于文件末尾

vi ~/.bashrc

在这里插入图片描述

1.2 安装dotnet dump

执行以下命令进行安装

 dotnet tool install dotnet-dump -g

在这里插入图片描述

1.3 检查是否安装成功

执行以下命令

dotnet tool list -g

在这里插入图片描述

1.4 配置环境变量

编辑环境变量文件

vim ~/.bashrc

把以下内容添加至文件末尾

export DOTNET_ROOT=/usr/lib/dotnet
export PATH="$HOME/.dotnet:$HOME/.dotnet/tools:$PATH"

刷新配置文件信息
执行以下命令

source ~/.bashrc

检查是否配置完成
执行以下命令

dotnet-dump -help

在这里插入图片描述

二、dump 的使用

2.1对指定进程进行dump转为文件

执行以下命令
120298为pid

dotnet-dump collect --process-id 120298

在这里插入图片描述

接下来它会生成一个dump文件,就可以把dump文件放入windbg里进行分析了。

系统配置相关命令

磁盘挂载

为方便后续操作可执行 sudo su 切换到 root 权限

1、查看未挂载磁盘

1.1 使用命令 lsblk 命令列出所有块设备,可以看到未挂载的磁盘 sdb 100GB
1.2 执行 blkid /dev/sdb 若无返回则表明无文件系统,需要格式化磁盘
1.3 执行命令 mkfs.ext4 /dev/sdb 格式化磁盘,若未格式化磁盘无法挂载

2、创建挂载点

2.1 创建一个空文件夹作为该磁盘挂载点,如 mkdir /mnt/mytek
2.2 执行命令 mount /dev/sdb /mount/mytek 将磁盘挂载到挂载点上
2.3 设置开机自动挂载执行

blkid

获取磁盘的UUID,如 UUID=“86d3fb1d-11da-4758-971c-a623cc703335”
2.4 然后编辑 /etc/fstab 文件,新增一行如:(UUID中去除引号)

UUID=86d3fb1d-11da-4758-971c-a623cc703335  /mnt/your_mount_point  ext4  defaults  0  2

3、查看挂载详情

查看磁盘剩余容量和使用情况

df-h

查看执行权限

ls -lh

查看文件所属权限

ls -alh

修改用户所属权限

 chown 账户 ./*

授予文件执行权限

chmod -x 文件名称

按创建日期降序查看文件

ls -ltr

按创建日期升序查看文件

ls -lt

设置系统时区

sudo timedatectl set-timezone Asia/Shanghai

查看系统当前时间

date

查看系统当前时区

timedatectl

复制粘贴文件

sudo cp -r 被复制文件 新的文件地址

复制文件夹中的文件与该文件夹同级

sudo cp -r 被复制文件夹 .
cp -rf source_folder/* .

日志分析相关命令

查找文件是否存在

find . -name "log-20250603*.gz"

查找文件里的是否包含某个内容

grep 3135373330343136383531 2025-03-12-18.log

如果是压缩包里查找的话

zcat 2025-03-12-18.log | grep 3135373330343136383531

文件倒叙查看(tac )

tac yourfile.txt | more

文件倒叙查看( less)

less +G your_log_file.log
  • +G:在打开文件时直接跳转到文件末尾。

  • your_log_file.log:日志文件的路径。

less 中,你可以使用以下快捷键:

  • Ctrl+R:反向滚动(从后往前查看)。

  • Ctrl+F:正向滚动(从前往后查看)。

  • G:跳转到文件末尾。

  • gg:跳转到文件开头。

  • q:退出 less

实时查看文件变化

tail -f yourfile.txt

实时查看服务异常

journalctl -u 服务名称 -f

docker相关命令

docker 查看正在运行的容器

docker ps

docker 查看所有的容器

docker ps -a

docker安装clickhouse

# docker run -d \
#   --name clickhouse-server \
#   -p 18123:8123 \  # HTTP API端口
#   -p 19000:9000 \  # TCP协议端口
#   -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \  # 启用访问控制
#   -e CLICKHOUSE_USER=default \  # 管理员用户名
#   -e CLICKHOUSE_PASSWORD=SihEct9deWrA9txQ \  # 设置密码
#   --ulimit nofile=262144:262144 \
#   clickhouse/clickhouse-server

  docker run -d --name clickhouse-server -p 18123:8123 -p 19000:9000 -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=SihEct9deWrA9txQ clickhouse/clickhouse-server

验证是否安装成功

curl "http://localhost:18123/?user=default&password=SihEct9deWrA9txQ" --data "SELECT 1"

重启容器

docker restart 64e

检查容器

 docker  inspect  64e

docker设置开机自启

sudo systemctl enable docker

查看docker是否开启开机自启

sudo systemctl is-enabled docker

rabbitmq相关命令

1.查看所有用户

rabbitmqctl list_users

2.创建新用户

rabbitmqctl add_user 用户名 密码

3.创建虚拟机

rabbitmqctl add_vhost 虚拟机名称(示例:/或者/test)

4.授权用户

rabbitmqctl set_permissions -p 虚拟主机 用户名 ".*" ".*" ".*"

5. 授予账户网页端登录权限

rabbitmqctl set_user_tags 用户名 administrator

6.修改rabbitMq用户密码

rabbitmqadmin  change_password  username  'newpasswd'

7.查看rabbitmq里队列里的数据量

sudo rabbitmqctl list_queues --vhost 虚拟主机名 name messages

8.删除指定vhost下的所有队列

rabbitmqctl list_queues name -p 虚拟主机名 --quiet | xargs -I {} rabbitmqctl delete_queue -p 虚拟主机名 "{}"

mysql相关命令

修改MySQL 配置允许远程访问

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 配置项。默II认值通常是 127.0.0.1,表示只允许本地访问。将其修改为 0.0.0.0,表示允许所有外部 IP 访问:

bind-address = 0.0.0.0

配置防火墙

如果你的 Ubuntu 系统启用了防火墙(如 ufw),需要允许外部机器访问 MySQL 的默认端口(3306)。
允许 MySQL 端口通过防火墙:

sudo ufw allow 3306/tcp

检查防火墙状态,确保规则已生效:

sudo ufw status

重启mysql服务

sudo systemctl restart mysql

连接数据库

执行后需要输入对应账户的密码

mysql -h 服务器IP -u 账户-p 

用户授予远程访问权限

假设你的用户名是 your_user,密码是 your_password,可以运行以下命令

ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
-- 【非必须】创建一个新用户,允许从任何 IP 地址访问。
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';

-- 授予该用户对所有数据库的所有权限。
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
-- 刷新权限,使更改生效。
FLUSH PRIVILEGES;

查看所有库

show databases

切换库

use 库名

查看所有表

show tables;

查看表结构

desc 表名

开启mysql执行sql日志

以下命令是在查找问题是使用,使用后需关闭
查看日志开启状态

SHOW VARIABLES LIKE 'general_log';

开启日志

SET GLOBAL general_log = 'ON';

查看日志保存路径

SHOW VARIABLES LIKE 'general_log_file';

后续直接用相关shell命令查看日志里的信息就可以了

磁盘性能检查(fio)

安装

apt install fio -y

写入速度测试

并发顺序写入:写入100GB数据,1MB块大小,8线程并发

fio --name=heavy-sequential-write --rw=write --direct=1 --ioengine=libaio \
    --bs=1M --size=100G --numjobs=8 --iodepth=64 --group_reporting \
    --output=heavy_seq_write.txt

读取速度测试

创建用于读取的文件

dd if=/dev/zero of=testfile bs=1G count=100 status=progress

并发顺序读取:1MB块大小,8线程并发

fio --name=heavy-sequential-read --rw=read --direct=1 --ioengine=libaio \
    --bs=1M --size=100G --numjobs=8 --iodepth=64 --group_reporting \
    --time_based --runtime=300 --output=heavy_seq_read.txt

磁盘使用情况查看(ncdu)

安装

apt install ncdu

扫描指定目录

ncdu /path/to/directory

更多操作

导航操作

  • ↑↓​ 或 j/k​ - 上下移动光标
  • →​ 或 l​ - 进入目录
  • ←​ 或 h​ - 返回上级目录
  • n​ - 按文件名排序
  • s​ - 按文件大小排序
  • C​ - 按项目数排序
  • M​ - 按修改时间排序
  • g​ - 显示大小百分比条
  • ^R​ (Ctrl+R) - 重新计算当前目录

文件操作

  • d​ - 删除选中的文件/目录
  • i​ - 显示文件/目录信息
  • r​ - 刷新当前目录大小
  • t​ - 切换显示目录/文件
  • m​ - 切换显示模式(大小/项目数)

视图控制

  • +​ - 展开所有子目录
  • -​ - 折叠所有子目录
  • a​ - 在磁盘使用和分配大小间切换
  • q​ - 退出 ncdu

性能监控(Netdata)

安装

官方一键安装脚本

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

使用

安装成功之后通过服务器ip:19999可访问它的网页段
在这里插入图片描述
点击【Skip and use the dashboard anonymously】 跳过登录
效果如下
在这里插入图片描述
它除了管理端页面意外还提供了webAPI接口,可以获取相关数据


总结

这写命令和软件都是靠经常使用累计的,并非死记硬背,也没必要去背,要用的时候问ai或者网上找也基本能找到。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐