linux
配置环境变量
配置root用户的环境
vim /root/.bashrc命令起别名和配置环境变量
# 起别名的格式===》 alias 别名=命令
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
alias fk='fuck'
alias sysr='systemctl reload'
alias syssu='systemctl status'
alias syssta='systemctl start'
# 启动所有项目相关的docker镜像
alias apd='docker stop nacos mysql seata && docker start nacos mysql seata'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
eval "$(thefuck --alias)"
# 在这里配置环境变量,变量之间用:分隔
export PATH="/usr/test:$PATH"使命令生效
source /root/.bashrc查看环境变量
echo $PATH配置系统环境
以配置nginx命令为例
# 编辑环境变量
vim /etc/profile
# 新增如下语句后保存并退出
export PATH=$PATH:/usr/local/nginx/sbin
# 使其生效
source /etc/profile网络配置
# 进入网卡所在目录
cd /etc/sysconfig/network-scripts/
# 编辑网卡配置
vim ifcfg-ens33 (←对应的网卡)
# 重启网卡
service network restartTYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=46b54acf-ab0d-4f09-857d-b2012e796c1a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.111.128
PREFIX=24
GATEWAY=192.168.111.2
DNS1=192.168.111.2防火墙操作
# 开启/关闭
# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
service firewalld start
# 查询已开放的端口(已开放的端口号集合)
firewall-cmd --zone=public --list-ports
# 查询防火墙中指定的端口是否开放
firewall-cmd --query-port=9001/tcp
# 开放一个指定的端口
firewall-cmd --permanent --add-port=9002/tcp
# 批量添加开发端口
firewall-cmd --permanent --add-port=9001-9003/tcp
# 移除一个指定的端口
firewall-cmd --permanent --remove-port=9003/tcp
# 重新加载
firewall-cmd --reload
# 注意:
# --permanent表示设置为持久
# --add-port表示添加指定端口
# --remove-port表示移除指定端口软件安装
yum
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
yum可以在配置的仓库中搜素并安装软件
yum换源
备份仓库源文件
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak将需要设置的源复写到之前的源文件中
# 阿里云源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清华大学源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
# 网易源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 中科大源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ustc.edu.cn/centos/7/os/x86_64/清理 YUM 缓存
sudo yum clean all
sudo yum makecache验证新源是否可用
sudo yum repolistdnf
DNF 是 YUM 的下一个即将推出的主要版本,YUM 是基于 RPM 的 Linux 的包管理器 分布。它大致保持了 CLI 与 YUM 的兼容性,并为 扩展和插件。
安装dnf
如果没有设置过yum的源的话,可能需要先执行这一步
yum install epel-release直接安装
yum install dnf知识点
su加-和不加-的区别
su omm:只切换用户身份,不加载 omm 用户的环境变量,不切换到 omm 用户的主目录。
su - omm:切换用户身份,同时加载 omm 用户的环境变量,并切换到 omm 用户的主目录。极端上网方式
环境
没有网线,但是有手机的上网方式
dhclient
将手机插到电脑上,然后打开usb共享网络(支持将手机连到的wifi共享出来)
参数介绍
找到当前手机的网卡,一般是最后一个,判断不了就拔插手机并用这条命令测试
ip a通过指定网卡发起DHCP请求
dhclient + 网卡名释放系统中已获取的网卡参数
dhclient -r向指定的服务器请求获取网卡参数
dhclient -s 192.168.111.128(服务器地址)手动停止执行dhclient服务进程
dhclient -x代理共享模式
环境
服务器无法上网,但是局域网有可上网的代理设备
注意
http无法代理udp,需要socks才能代理udp,如果需要让手机使用,请自己使用手机创建一个socks的配置(参考上面的视频连接)
配置代理软件(此处为clash)
在可以上网的电脑上开启代理,并在代理中开启局域网链接
设置系统代理
注意
我的测试系统的代理为10.2.7.118:10809 下面例子中需要替换的字符:10.2.7.118:10809 例如替换为你的代理ip:代理的端口 下面的临时和永久二选一即可
临时设置代理
export http_proxy="http://10.2.7.118:10809"
export https_proxy="http://10.2.7.118:10809"
export all_proxy="socks5://10.2.7.118:10809"
export no_proxy="localhost,127.0.0.1"临时清除
unset http_proxy
unset https_proxy
unset all_proxy
unset no_proxy永久设置
echo 'export http_proxy="http://10.2.7.118:10809"' >> /etc/profile
echo 'export https_proxy="http://10.2.7.118:10809"' >> /etc/profile
echo 'export all_proxy="socks5://10.2.7.118:10809"' >> /etc/profile
echo 'export no_proxy=localhost,127.0.0.1' >> /etc/profile
source /etc/profile永久清除(编辑 /etc/profile 删除相关行)
vim /etc/profile
# 删除上面的那几行后保存
source /etc/profile查看代理
env | grep -i proxy单独查看各代理变量
echo $http_proxy
echo $https_proxy
echo $all_proxy
echo $no_proxy测试代理是否生效
curl -v baidu.comcurl -v google.com针对yum代理
有时候配置完系统代理之后,yum可能还是无法使用,请使用下面这个方式为yum加上代理
vim /etc/yum.confproxy=http://10.2.7.118:10809/针对docker的代理
Daemon proxy configuration | Docker Docs
方法一(该方法优先级最高)
vim /etc/docker/daemon.json{
"proxies": {
"http-proxy": "http://10.2.7.118:10809",
"https-proxy": "http://10.2.7.118:10809",
"no-proxy": "localhost,127.0.0.1"
}
}systemctl restart docker方法二(手动设置 Docker 守护进程的环境变量)
/etc/systemd/system/docker.service.d/http-proxy.conf
sudo mkdir -p /etc/systemd/system/docker.service.d
vim http-proxy.conf[Service]
Environment=HTTP_PROXY=http://10.2.7.118:10809
Environment=HTTPS_PROXY=http://10.2.7.118:10809
Environment=NO_PROXY=localhost,127.0.0.1systemctl daemon-reload
systemctl restart docker也可以在执行的时候使用环境变量使用代理
docker run -e HTTP_PROXY=http://10.2.7.118:10809 -e HTTPS_PROXY=http://10.2.7.118:10809 -e NO_PROXY=localhost,127.0.0.1 镜像名称方法三(不推荐)
Proxy configuration | Docker Docs
vim ~/.docker/config.json{
"proxies": {
"default": {
"httpProxy": "http://proxy.example.com:3128",
"httpsProxy": "https://proxy.example.com:3129",
"noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
}保存文件后,配置将变为活动状态,您无需 重启 Docker。但是,该配置仅适用于新容器和 构建,并且不会影响现有容器。
网关共享模式
开启ip转发
sysctl -w net.ipv4.ip_forward=1clash安装服务模式并启用tun模式
将需要上网的设备的网关改为代理端的ip地址
快速换源脚本
bash <(curl -sSL https://linuxmirrors.cn/main.sh)一些命令
查看参数
动态查看命令结果可以使用watch,例如下面的例子中
watch -n 5标识5秒执行一次后面的free -h命令
动态查看内存变化
watch -n 5 free -hcpu参数
lscpu查看显卡
lspci | grep -i nvidia查看docker位置
which docker首先查找大文件
sudo du -h / --max-depth=1 | sort -rh查看系统默认启动目标
systemctl get-default想查看所有可用的启动目标
systemctl list-units --type=target查看可用的shell列表
cat /etc/shellstabby
如何让sftp自动读取当前所在目录
按照如下方法在对应的编辑器中添加对应的语句即可,官方文档
bash
vim ~/.bash_profileexport PS1="$PS1\[\e]1337;CurrentDir="'$(pwd)\a\]'zsh
vim ~/.zshrcprecmd () { echo -n "\x1b]1337;CurrentDir=$(pwd)\x07" }fish
vim ~/.config/fish/config.fishfunction __tabby_working_directory_reporting --on-event fish_prompt
echo -en "\e]1337;CurrentDir=$PWD\x7"
end解决上传文件断开链接的问题
关闭图中的两个加密方法
切换默认shell
为什么我要切换shell
在使用tabby的mcp时,由于zsh有命令保护,会导致mcp执行命令失败,因此得切换为bash再使用
永久切换(需要重新登陆)
切换为bash(root用户不用写用户名)
sudo chsh -s /bin/bash 用户名切换为zsh(root用户不用写用户名)
sudo chsh -s /bin/zsh 用户名临时切换(直接生效)
方法一
bash方法二
exec -l bash查看当前使用的shell
方法一
echo "$SHELL"输出
/usr/bin/zsh解释
打印环境变量 SHELL,它表示“登录时的默认 shell 的路径”(如 /bin/bash、/bin/zsh),不一定等于你当前子进程里使用的那个 shell。方法二
ps -p $$ -o comm=解释
ps: 查看进程。
-p $$: 只看进程号为 $$ 的进程;$$ 是“当前 shell 进程的 PID”。
-o comm=: 只输出进程的“可执行名”(command name),并把列标题去掉(等号表示不显示表头)。
结果会是 bash、zsh 等,最准确反映你“当前正在用”的 shell方法三
getent passwd "$USER"解释
getent:查询系统的“名称服务开关”(NSS) 数据库的通用工具。数据源既可能是本机文件(如 /etc/passwd、/etc/group),也可能是 LDAP、NIS 等集中目录,按 /etc/nsswitch.conf 的顺序查询。
passwd:指定要查的数据库是“账户数据库”(等价于传统的 /etc/passwd)。显示模式
查看已安装的桌面环境
ls /usr/share/xsessions/切换回文本模式
sudo systemctl set-default multi-user.target
sudo reboot查看默认的显示管理器
ls -l /etc/systemd/system/display-manager.service服务器相关操作
跨服务器深度拷贝(假设10.2.7.56拷贝到10.2.7.113)(root表示目标服务器用root账号登录)
scp -r 需要拷贝的目录 root@10.2.7.113:拷贝到的位置用cat写入文件
cat << EOF > hello.yaml
# 配置内容
EOF- cat: 用于读取或创建文件的命令
- <<: 这是一个重定向操作符,表示后面跟着的是一个"here document"
- EOF: 是一个标记,表示文档的开始和结束。你也可以使用其他标记,如 END
: 重定向操作符,将输出写入文件
- hello.yaml: 目标文件名
清理文件
查找并删除重复文件或旧文件(查找大于100MB的文件)
sudo find / -type f -size +100M -exec ls -lh {} \;检查用户目录空间占用
du -h /home/* --max-depth=1 | sort -rh查看日志占用的磁盘空间
sudo journalctl --disk-usage如果您想要更改日志的最大限制,可以编辑配置文件
sudo vi /etc/systemd/journald.conf- SystemMaxUse=: 限制日志总大小
- SystemKeepFree=: 保持可用空间
- MaxRetentionSec=: 日志保留时间 修改配置后需要重启journald服务
sudo systemctl restart systemd-journald查看系统中所有进程
ps aux常用组合
# 查看特定进程
ps aux | grep nginx
# 按 CPU 使用率排序
ps aux --sort=-%cpu
# 按内存使用率排序
ps aux --sort=-%mem
# 只看当前用户的进程
ps ux调整设置
设置主机名
hostnamectl set-hostname 新主机名启动项位置
cd /etc/xdg/autostart使用 nvidia-xconfig 生成基础显示配置
nvidia-xconfig --allow-empty-initial-configurationopeneular
安装nvidia驱动
注意
以730显卡为例
禁用 Nouveau
创建黑名单文件来禁用 Nouveau
sudo bash -c 'cat > /etc/modprobe.d/blacklist-nouveau.conf << EOF
blacklist nouveau
options nouveau modeset=0
EOF'重新生成 initramfs
# 对于 openEuler 系统
sudo dracut --force确认 nouveau 配置已经被添加
cat /etc/modprobe.d/blacklist-nouveau.conf重启系统
sudo reboot系统重启后,确认 Nouveau 已被禁用
lsmod | grep nouveau安装必要的编译工具和内核头文件
sudo yum groupinstall "Development Tools"
sudo yum install -y kernel-devel kernel-headers gcc make dkms安装对应的内核开发包
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)安装其他必要的开发工具
sudo yum groupinstall "Development Tools"
sudo yum install -y gcc make dkms验证内核开发包是否正确安装
ls -l /usr/src/kernels/$(uname -r)开始安装驱动
找到驱动对应的版本 Unix Drivers | NVIDIA
执行下述命令安装即可
# 进入下载目录
cd /home/NVIDIA
# 删除旧的驱动文件
sudo rm -f NVIDIA-Linux-x86_64-*.run
# 下载最新的 470.xx 系列驱动
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/470.256.02/NVIDIA-Linux-x86_64-470.256.02.run
# 添加执行权限
sudo chmod +x NVIDIA-Linux-x86_64-470.256.02.run
# 安装驱动
sudo ./NVIDIA-Linux-x86_64-470.256.02.run --no-cc-version-check选项如下
DKMS 会自动在内核更新时重新编译 NVIDIA 驱动模块
如果您使用的是服务器环境,主要用于 Docker 和 GPU 计算,不运行需要 32 位支持的应用程序,不需要运行 32 位的游戏或图形应用,就选
否等待直至安装完成
对于服务器环境,特别是用于 Docker 和 GPU 计算的环境,不需要配置 X 服务器,选
否重启并验证是否安装成功
# 重启系统
sudo reboot# 验证驱动安装
nvidia-smi看到这样的界面,即为安装成功
安装 NVIDIA Container Toolkit
# 添加 NVIDIA 容器工具包仓库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
# 安装 NVIDIA Container Toolkit
sudo yum clean all
sudo yum install -y nvidia-container-toolkit nvidia-container-runtime配置 Docker 运行时
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker测试 GPU 在 Docker 中是否正常工作
# 运行一个测试容器
docker run --rm --gpus all nvidia/cuda:11.4.0-base nvidia-smi安装桌面
GNOME
安装 GDM
# 安装 GDM
dnf install gdm -y
# 禁用 lightdm
systemctl disable lightdm
# 启用 GDM
systemctl enable gdm创建一个最小化的 X 配置
cat > /etc/X11/xorg.conf << EOF
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
EOF确保 NVIDIA 驱动正确加载
# 检查 NVIDIA 模块是否加载
lsmod | grep nvidia
# 如果没有加载,加载模块
modprobe nvidia
# 检查 NVIDIA 驱动状态
nvidia-smi使用GNOME桌面
# 停止当前的 UKUI 会话
sudo systemctl stop lightdm
# 禁用 UKUI
sudo systemctl disable lightdm
# 启用并启动 GNOME 的显示管理器
sudo systemctl enable gdm
sudo systemctl start gdmukui
安装ukui
sudo dnf update
sudo dnf install ukui
systemctl set-default graphical.target
reboot如果不行,完全移除 X 配置,让系统自动检测
rm /etc/X11/xorg.conf使用ukui桌面
# 停止当前的 GNOME 会话
sudo systemctl stop gdm
# 禁用 GDM
sudo systemctl disable gdm
# 启用并启动 UKUI 的显示管理器
sudo systemctl enable lightdm
sudo systemctl start lightdm卸载lightdm
# 首先停止并禁用 lightdm 服务
systemctl stop lightdm
systemctl disable lightdm
# 删除 lightdm 包及其依赖
dnf remove lightdm lightdm-gtk-greeter lightdm-gtk3-greeter
# 删除配置文件
rm -rf /etc/lightdm
rm -f /etc/systemd/system/display-manager.service.wants/lightdm.service
rm -f /etc/systemd/system/display-manager.service.requires/lightdm.service
# 清理可能残留的配置文件
rm -f /usr/share/xgreeters/lightdm-gtk-greeter.desktop
# 重新加载 systemd 配置
systemctl daemon-reload
# 确认 gdm 是默认的显示管理器
systemctl status gdm执行完这些命令后,系统应该只保留 GDM 作为显示管理器。你可以用以下命令验证清理结果
# 检查是否还有 lightdm 相关的包
rpm -qa | grep lightdm
# 检查当前的显示管理器
ls -l /etc/systemd/system/display-manager.service加快由于图形化显示导致的开机缓慢问题(减少了几秒)
查看启动时间
systemd-analyze
systemd-analyze blame编辑 GRUB 配置
vim /etc/default/grub删除GRUB_CMDLINE_LINUX中的这几个内容
rhgb quiet更新 GRUB 配置
grub2-mkconfig -o /boot/grub2/grub.cfg重启
reboot远程连接
nomachine
linux
cd /tmp
# 下载
wget https://download.nomachine.com/download/8.16/Linux/nomachine_8.16.1_1_x86_64.rpm
# 安装
dnf install ./nomachine_8.16.1_1_x86_64.rpm手动配置(因为 openEuler 是基于 RHEL 的)
/usr/NX/scripts/setup/nxserver --install redhat放开防火墙4000端口
firewall-cmd --permanent --add-port=4000/tcp
firewall-cmd --reload启动服务
# 启动服务
systemctl start nxserver
# 设置开机自启
systemctl enable nxserver
# 再次检查状态
systemctl status nxserverwindows
点击"添加"新连接
协议:NX
主机:10.2.7.56
端口:4000
使用你的 Linux 用户名和密码登录xrdp
linux(10.2.7.56)
# 安装 XRDP
dnf install xrdp
# 启动 XRDP 服务并设置开机自启
systemctl enable xrdp
systemctl start xrdp
# 检查 XRDP 状态
systemctl status xrdp
# 开放防火墙端口
firewall-cmd --permanent --add-port=3389/tcp
firewall-cmd --reloadwindows(10.2.7.118)
- 按 Win + R 打开运行
- 输入 mstsc 打开远程桌面连接
- 在连接地址中输入:10.2.7.56
- 输入 Linux 系统的用户名和密码
切换桌面
查看已安装的桌面
ls /usr/share/xsessions/这里我安装了2个桌面(
GNOME和UKUI)
gnome-custom-session.desktop gnome.desktop gnome-xorg.desktop ukui.desktop

DKMS 会自动在内核更新时重新编译 NVIDIA 驱动模块
如果您使用的是服务器环境,主要用于 Docker 和 GPU 计算,不运行需要 32 位支持的应用程序,不需要运行 32 位的游戏或图形应用,就选
等待直至安装完成
对于服务器环境,特别是用于 Docker 和 GPU 计算的环境,不需要配置 X 服务器,选
重启并验证是否安装成功