服务器常见技术问题与技巧
目前碰到的一些技术问题与知识
ubuntu安装驱动时候出现的问题
1 | echo -e “blacklist nouveau\noptions nouveau modeset=0” > /etc/modprobe.d/disable-nouveau.conf |
修改启动参数:在GRUB菜单中选择Ubuntu启动选项,按下”e”键以编辑启动参数。尝试在命令行中添加”nomodeset”参数,然后按下F10键启动。
ubuntu安装cuda驱动时候出现报错
- 安装显卡驱动需要关闭图形界面,在命令行完成安装(提前下好安装包)
关闭图形界面
1 | sudo systemctl isolate multi-user.target |
开机可能出现黑屏,按ctrl + shift + F2
即可进入命令行窗口,登录即可,随后安装驱动,安装完成之后,执行下边命令开机默认进入图形用户界面。
1 | systemctl isolate graphical.target |
给Ubuntu安装驱动(nvidia)保姆级教程(方法一)_X.等雨停的博客-CSDN博客
ubuntu拨号上网以及各种方式上网设置
命令行输入即可进入图形管理界面
1 | nm-connection-editor |
ubuntu22.04 向日葵远程无法连接成功
需要切换桌面模式
ubuntu机械盘挂载
1 | 创建挂载路径 |
使用yaml创建虚拟环境
1 | conda env create -f environment.yml |
例如:
1 | name: transformer |
最后的prefix
指定环境位置
使用.gitkeep
文件保存空文件夹
创建一个新的普通用户
1 | sudo useradd -m ai -s /bin/bash |
- 创建了可以登录的ai用户并使用/bin/bash作为shell。
- 设置密码。
- 为ai用户增加管理员权限。
- 切换登录用户为ai。
为普通用户添加sudo权限
1 | 为用户username添加sudo权限 |
给用户授权
1 | groups ai |
删除用户
1 | sudo deluser --remove-home ai |
删除用户目录
查看所有用户
1 | grep bash /etc/passwd |
linux新建用户也使用原来conda环境
a用户下安装anaconda,默认地址不变,b用户直接不可用,在b用户登录的终端编辑b用户的.bashrc
文件,在文档最后一行加入
1 | export PATH=$PATH:/home/<Username>/anaconda3/bin |
保存退出,并source .bashrc
,然后conda init
就可以了
高级配置参考Anaconda 多用户共享安装(Ubuntu) - 知乎 (zhihu.com)
给用户授予docker使用权限
1 | sudo gpasswd -a $USER docker |
$USER
可以更换为其他,不换就是默认的。第二步有可能需要输密码,然后输入会发现错误,其实是没有设置密码,需要先设置密码,然后这样更新组
1 | sudo chmod a+rw /var/run/docker.sock |
1 | sudo usermod -aG docker $USER |
neofetch
方便的查看系统的工具
卸载图形界面
1 | sudo apt-get remove gnome-shell |
ssh免密登录
1 | ssh-keygen -t rsa |
1 | cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器IP |
1 | lscpu |
cudnn source problem
1 | W: GPG error: file:/var/cudnn-local-repo-ubuntu2004-8.6.0.163 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 323547C4B0FE0A41 |
then input sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 323547C4B0FE0A41
to solve the problem.
But it doesn’t work. You can follow the steps below to solve the problem.
1 | sudo cp /var/cudnn-local-repo-ubuntu2004-8.4.1.50/*.gpg /usr/share/keyrings/ |
复制到/usr/share/keyrings即可。
两个盘软raid命令
1 | sudo apt-get install mdadm |
每隔时间杀程序
kill_python.py
1 | while [ true ];do |
然后再讲其添加到crontab中,执行crontab -e,添加如下:
1 | */30 * * * * /usr/bin/sh /aa/bb/cleanFfmpegProcess.sh |
:wq即可。
关闭服务器自动休眠
1 | sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target |
查看系统休眠状态
1 | systemctl status sleep.target |
设置github的ssh连上github
生成ssh key
读取公钥
1 | cat ~/.ssh/id_rsa.pub |
复制粘贴到github。github配置ssh key的地方在
https://github.com/settings/keys
测试ssh key是否配置成功,在linux开发机上输入
$ ssh -T git@github.com
如果出现Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github
3、配置git的用户名和邮箱
1 | $ git config --global user.name "your name" |
以后可以通过git config –global -l来查看全局设置,git config –global -e来编辑
更新包导致cuda和驱动版本不对应,NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
终端nvidia-smi出现这样,是内核版本更新的问题,导致新版本内核和原来显卡驱动不匹配
查看已安装内核
1 | dpkg --get-selections |grep linux-image |
查看正在使用的内核
1 | uname -a |
利用命令 ll /usr/src/
可查看下面有一个nvidia-470.82.00文件夹,版本号因电脑而异。
只需执行两条命令就好:
1 | sudo apt-get install dkms |
(470.82.00表示的是驱动版本号)
禁止内核自动更新
1)命令行关闭系统自动更新,使用命令打开文件并编辑
1 | sudo gedit /etc/apt/apt.conf.d/10periodic |
将双引号中的“1”全部置“0”即可,修改后保存。
ubuntu默认启动了自动更新内核,为了避免出现重启系统后遇到错误进入不到系统中去,我们可以进一步关闭内核更新,使用当前内核。
1 | $ sudo apt-mark hold linux-image-generic linux-headers-generic |
如果要重启启动内核更新:
1 | sudo apt-mark unhold linux-image-generic linux-headers-generic |
文件格式问题
qsub:script is written in DOS/Windows text format
dos格式文件传输到unix系统时,会在每行的结尾多一个^M(/r),当然也有可能看不到。但是在vim的时候,会在下面显示此文件的格式,比如 “dos.txt” [dos] 120L, 2532C 字样,表示是一个[dos]格式文件,如果是MAC系统的,会显示[MAC]。因为文件格式的原因有时会导致我们的unix程序,或者shell程序出现错误,那么需要把这些dos文件格式转换成unix格式,方法是
1 | vim dos.txt |
centos7安装驱动
https://www.cnblogs.com/2012blog/p/9431432.html
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ |
彻底卸载wsl
在powerShell上
先看还有哪些子系统
1 | wsl --list --all |
注销子系统
1 | wsl --unregister Ubuntu |
只读文件系统
在linux硬盘挂载时候,部分情况磁盘变成ro只读而不是rw
一般df查看挂载设备
1 | umount -i 挂载路径 |
rm -rf 目录/文件
在部分情况下,先使用windows系统,后使用linux,可能有系统挂载问题,即使chmod 777 也没用,出现错误:
需要重新挂载
1 | umount /dev/sda2 |
报错target busy
杀死使用该目录的进程:
1 | fuser -mv -k /dev/sda2 |
再次卸载,卸载成功后重新挂载:
1 | mount /dev/sda2 /data |
报错解决:
报错1:“The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Falling back to read-only mount because the NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.)”。说明是NTFS分区格式错误
解决方法:ntfsfix修复,需要安装工具:
sudo apt-get install ntfs-3g
安装完成后进行ntfsfix修复:
sudo ntfsfix /dev/sda2
提示修复成功。
报错2:“没有那个文件或目录”。说明/data目录不存在,需要创建。
解决方法:media根目录下创建新目录:
mkdir /media/jngk/data
然后重新挂载,即可挂载成功。
mount /dev/sda2 /media/jngk/data
现在该目录就不是只读文件系统了,在该目录下右键,新建文件夹选项也不再是灰色不可选状态了。
无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
进入PowerShell 模式
Get-ExecutionPolicy -List 查看当前所有作用域
1
上图显示就最后一个作用域有权限,其他作用域都没有权限,那么我们就需要去给它设置权限
设置权限
Set-ExecutionPolicy RemoteSigned -Scope < scopeName >,设置当前用户作用域具备权限,具体设置格
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
1
按照上面的格式,执行需要加权限的作用域,然后再去尝试之前的方法,发现就不会报错提示了。
挖矿病毒处理
找到病毒文件:
方法一:由于入侵者对程序的名称做了伪装,无法直接通过其进行查找。因此使用PID入手,查找其在/proc里的文件,进而发现了关键路径
将所有病毒文件展示出来,可以发现关键词miner
对里面的文件作进一步的查看,可以看到ETH(以太坊)、POOL、WALLET等关键词,实锤中了挖矿病毒
此外,查看run文件,可以发现这个病毒文件确实做了伪装
方法二:考虑到入侵者可能会用某些方式将病毒程序作一定的隐藏,这里通过查看用户的计划任务来定位病毒文件,因为病毒文件可能被kill掉而入侵者不会每次都自己手动启动的,肯定会设置自动启动。查看计划任务的命令为crontab -l
为了查看病毒文件在服务器上是否有多份,可以使用如下命令一次性查看所有用户的计划任务:
1 | for u in $(cat /etc/passwd | cut -d":" -f1) |
方法三:尝试定位病毒文件中的特有关键词,比如“miner”
updatedb
locate miner
由于locate命令不能查找/dev/shm之类的路径,以防万一可以使用find命令,不过会很慢
find / -name miner
应对方法:
删除整个病毒文件夹(python),kill相关的PID,并删除相关定时任务(使用命令crontab -e,或者如果只有一个定时任务的话可以用命令crontab -r)
更改所有用户的密码,并设置一定的密码复杂度(可以使用cracklib)
移除所有除了管理员以外用户的sudo权限
1 | admin="root,sudo,%sudo" # 填入管理员账号(前三个不能删) |
删除现有的所有密钥&授权
updatedb
删除公钥+密钥
1 | for pub in $(locate .pub|grep .pub$) |
查看剩余
updatedb
locate .pub|grep .pub$
locate known_hosts
locate authorized_keys
可能会遇到某个文件用root权限也删除不了
如果使用命令lsattr发现该文件的隐藏属性中存在除了e以外的属性,则用命令chattr来移除这些属性
设置远程连接只能使用密钥,不能使用密码
禁止使用root账号进行远程连接
使用终端安全杀毒软件、内网安全监控产品、漏洞扫描设备等专业工具
查杀病毒
1、crontab -e 发现一条自启动任务,且为“python”程序,但不确定是否为挖矿程序,暂时保留
2、根据挖矿程序PID,进入/proc/PID目录下检查
进入/tmp/…/Python目录
通过sudo vim config.ini检查config.ini文件,发现正是挖矿配置文件,从而自启动任务为挖矿任务
4、kill挖矿进程,删除挖矿文件及自启动任务,同时关闭挖矿病毒使用的端口
5、使用杀毒软件全盘查杀
在cuda版本过高的情况nvidia官方bug,会出现内存泄露no such progress
使用
1 | python3 -m pip install --upgrade nvidia-ml-py |
fsl 安装
使用本地安装包
解压缩到要安装的文件夹。推荐和我一样解压缩到/usr/local目录下
有可能会出现权限不足的问题无法解压缩,可以在usr目录中打开终端,输入
sudo chmod -R 777 local
输入密码后,打开权限
配置环境变量.bashrc
1 | export FSLDIR=/usr/local/fsl |
卸载cuda
1 | cd /usr/local/cuda-xx.x/bin/ |
微星tpm
微星gl63有TPM的,下面教你如何操作:
首先进bios
然后按右边的CTRL+SHIFT+左边的ALT+F2开启超级模式。
之后在高级选项中找到PCH-FW Configuration
找到PTT Configuratio
把dTPM改为PTT(如果已经是PTT可以跳过此步)。
之后在高级选项中找到Trusted Computing
找到Security Device Support,将Disable改为Enable
按F10保存。