Post

从零配置 Linux

Linux Server Configuration

CUDA、CUDA toolkit、cuDNN、NVCC 关系

CUDA Toolkit 和 Driver Version版本对应版本对应2

下载:Nvidia Driver驱动CUDA ToolkitcuDNN

cuda

nvidia

centos 中以root身份创建新用户并授权

文件夹之间软链接

1.cd <TARGET PATH> 新建空文件夹 .vscode-server

2.cd ~ 删除用vscode远程连接时自动下载的 .vscode-server(没有则下一步)

3.ln -s /<TARGET PATH>/.vscode-server ~/.vscode-server~/.vscode-server 链接到 /<TARGET PATH>/.vscode-server

4.通过vscode远程连接服务器,自动下载的 .vscode-server 会存到 /<TARGET PATH>/

5.cd ~ && ll -a 检查链接,.vscode-server -> /<TARGET PATH>/.vscode-server 表示成功

6.在vscode的设置中将 远程工作区search.followSymlinks 设置为 False原因

文件夹所有者及权限修改

chown -R <该目录所有者的用户名>:<该目录所属的用户组> /path/to/directory-R 递归修改文件夹下所有文件(夹)的所有者

chmod 755 /path/to/directory:修改文件夹下所有文件(夹)用户的权限,-R 加与不加效果一样,均会递归

1
2
3
所有者(用户)权限 rwx:读(4) + 写(2) + 执行(1) = 7
同组用户权限 r-x:读(4) + 不写(0) + 执行(1) = 5
其他用户权限 r-x:读(4) + 不写(0) + 执行(1) = 5

测试 ip 地址及端口的连通性,查看防火墙状态、开放端口

172.27.33.63:1234 为例,

  1. ping 172.27.33.63,如果不通,说明ip 地址无法访问;如果通了进行下一步
  2. telnet 172.27.33.63 1234,如果不通,进行下一步;如果通了说明ip 地址及端口没有问题
  3. sudo firewall-cmd --query-port=1234/tcp,如果显示 no,进行下一步
  4. 添加指定需要开放的端口:sudo firewall-cmd --add-port=1234/tcp --permanent

    重载入添加的端口:sudo firewall-cmd --reload

    查询指定端口是否开启成功:sudo firewall-cmd --query-port=1234/tcp

    如有需要,移除指定端口:sudo firewall-cmd --permanent --remove-port=1234/tcp

/etc/hosts 配置本地DNS

1./etc/hosts 文件的作用是将主机名(域名)映射到IP地址,提供本地 DNS 功能。在操作系统解析域名时,它首先会查阅该文件,如果找到了对应的IP地址,就会直接使用该地址,而无需再通过外部 DNS 服务器查询。通过 ping 域名的方式获取对应的IP地址

2./etc/host.confmulti on

负载均衡:在一些场景下,一个域名可能会指向多个服务器IP地址(多A记录),以实现负载均衡。如果 multi on,那么系统会返回多个IP地址,客户端可以选择其中一个进行连接 冗余和容错:当一个主机名绑定了多个IP,某个IP不可用时,返回多个IP地址可以让系统尝试其他的IP地址

服务器配置 clash 代理

下载 clash-linux-amd64-v1.18.0.gzwget https://github.com/Kuingsmile/clash-core/releases/download/1.18/clash-linux-amd64-v1.18.0.gz

获取 config.yamlClash for Windows - Profiles - config.yaml - 右键 Show in folder - 终端运行 scp config.yaml username@ip:/path/

Miniconda - python env

1.在 /data/<USER NAME> 指定目录下安装miniconda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

2.添加 Miniconda3-latest-Linux-x86_64.sh/data/<USER NAME>下的权限后,文件名变成绿色(可执行)

chmod a+rwx Miniconda3-latest-Linux-x86_64.shsh Miniconda3-latest-Linux-x86_64.sh ,修改安装路径为 /data/<USER NAME>/miniconda3

/data/<USER NAME>/miniconda3/bin 添加到所有系统路径$PATH之后并重新加载

echo 'export PATH="$PATH:/data/<USER NAME>/miniconda3/bin"' >> ~/.bashrc && source ~/.bashrc

(可选) conda init 写入代码到 ~/.bashrc,设置登录服务器自动激活 base环境

3.创建新环境并指定安装其他版本如3.10 的python conda create -n <ENV NAME> python=3.10

4.创建新环境并指定路径 conda create python=3.10 --prefix /data/<USER NAME>/miniconda3/envs/<ENV NAME> 来代替默认路径 ~/.conda/envs。或修改 conda config --add envs_dirs /data/<USER NAME>/miniconda3/envs 避免每次安装时指定 prefix

5.pip 换用国内镜像源,如阿里源https://mirrors.aliyun.com/pypi/simple,中科大源https://pypi.mirrors.ustc.edu.cn/simple,豆瓣源http://pypi.douban.com/simple

1
2
3
pip install <package_name> -i https://pypi.tuna.tsinghua.edu.cn/simple # 暂时换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 永久换源
pip config unset global.index-url # 换回默认源

6.删除环境 conda remove -n <ENV NAME> --all / conda env remove --name <ENV NAME>

conda 相关命令

conda env export --name <ENV NAME> > environment.yml:导出环境包(> 会覆盖文件内容,>> 会在文末追加内容,若文件不存在都会新建文件。)

conda run -n <ENV NAME> python your_script.py:任何环境下指定conda环境运行命令,避免频繁切换环境

conda安装虚拟环境时发生ClobberError:先运行 conda clean --all,再运行安装命令

conda activate 是 Conda 4.4 的新特性,更加现代和标准,而 source activate 是 Conda 4.3以前的旧方式

Jupyter Lab

pip install jupyterlab 安装后 jupyter lab / jupyter-lab 启动

Jupyter Hub

直接部署:

1
2
3
4
5
conda install -c conda-forge jupyterhub` #不推荐 pip安装
jupyterhub --generate-config #生成jupyterhub_config.py
echo "c.JupyterHub.authenticator_class = 'dummy'" >> jupyterhub_config.py #设置用户名
echo "c.DummyAuthenticator.password = 'yourpassword'" >> jupyterhub_config.py #设置密码
jupyterhub --ip 10.0.1.2 --port 443 #启动

docker 部署:

1
2
3
4
5
6
7
8
docker run -p 8000:<SERVER PORT> -d --name jupyterhub quay.io/jupyterhub/jupyterhub jupyterhub #运行容器
docker exec -it jupyterhub bash #进入容器内bash
jupyterhub --generate-config #生成jupyterhub_config.py
echo "c.JupyterHub.authenticator_class = 'dummy'" >> jupyterhub_config.py #设置用户名
echo "c.DummyAuthenticator.password = 'yourpassword'" >> jupyterhub_config.py #设置密码
exit #退出容器bash
docker stop <CONTAINER ID>
docker start <CONTAINER ID> #修改完配置重启容器

此时 jupyterhub 从容器的 8000 端口映射到服务器的 <SERVER PORT> 端口,通过 ssh -L <LOCAL PORT>:localhost:<SERVER PORT> <USERNAME>@<IP ADDRESS>jupyterhub 从服务器的 <SERVER PORT> 端口映射到本地端口 <LOCAL PORT>。本地访问 http://localhost:<LOCAL PORT>/

Ubuntu

Ubuntu docker.io 和 docker-ce 安装

docker.io 采用 apt 管理依赖,由Debian维护;docker-ce 采用 go 管理依赖,由docker官方维护 安装文档

1
2
3
4
5
6
7
8
9
10
11
# 安装 docker.io
sudo apt install docker.io
# 安装 docker-ce
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs)\
    stable"
sudo apt-get update # 更新包的安装列表,通过 sudo apt-get upgrade 更新包
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install docker-ce

Ubuntu Docker一键部署Jupyter Notebook并实现远程访问本地笔记 视频 文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Add Docker's official GPG key: 
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update

# 安装docker包
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 镜像测试
$ sudo docker run hello-world

# 拉取 `jupyter/base-notebook` 镜像
$ sudo docker pull jupyter/base-notebook

# 查看所有拉取的镜像,区别于`sudo docker ps -a` 查看所有容器
$ sudo docker images

# 创建容器,将被本地/外部端口8888映射到容器/内部端口8888
$ sudo docker run -d -p 8888:8888 jupyter/base-notebook

# 查看正在运行的容器,获取网页8888端口登陆token
$ sudo docker ps
$ sudo docker logs <CONTAINER ID>

# 安装内网穿透工具 cpolar,端口 9200,登陆邮箱 15345180091@163.com
$ curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
$ sudo systemctl enable cpolar
$ sudo systemctl start cpolar

# 查看状态,停止服务
$ sudo systemctl status cpolar
$ sudo systemctl stop cpolar

Ubuntu新系统安装显卡驱动

法一(推荐):

settings-about-software updates-addtional drivers-切换到最新的Using NVIDIA driver metapackage

法二:

更新驱动 sudo ubuntu-drivers autoinstall

法三:

官网下载驱动安装 视频教程

下载官网驱动安装 sudo ./NVIDIA-Linux-x86_64-550.54.14.run -no-x-check

卸载官网驱动 sudo ./NVIDIA-Linux-x86_64-550.54.14.run -uninstall

清理残留文件 sudo apt --purge remove nvidia* sudo apt autoremove

Ubuntu新系统安配置ssh方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 0.查看系统信息
$ uname -a
$ cat /etc/lsb-release

# 1.修改root密码并切换到root
$ sudo passwd root
$ su root

# 2.卸载重装
$ apt-get update
$ apt-get remove openssh-server
$ apt-get install openssh-server

# 3.编辑sshd_config
vim /etc/ssh/sshd_config
Port 22
PermitRootLogin yes
PasswordAuthentication yes

# 4.重启服务,检查状态
$ service ssh --full-restart
$ service ssh status

# 5.ifconfig后查看etho下的inet,形如172.27.26.118
$ sudo apt install net-tools
$ ifconfig

在同一局域网下的其他终端上通过ssh root@172.27.26.118 -p 22(端口号默认22可使用ssh root@172.27.26.118)进行SSH连接。第3步中默认的PermitRootLogin prohibit-password如果不改成PermitRootLogin yes,那么只能以普通用户如ssh yuy4o@172.27.26.118登录,无法以超级管理员root登录。

无公网IP时如何SSH远程连接Ubuntu系统

参照 视频文档 中安装内网穿透工具 cpolar,端口 9200,登陆注册邮箱xxxxxxxxxxx@163.com,获得ssh对应的公网地址比如tcp://5.tcp.vip.cpolar.cn:10713

在其他终端上,输入ssh <ubuntu用户名>@5.tcp.vip.cpolar.cn -p 10713,输入对应密码即可连接

ubuntu20.04安装Linux原生微信

参考链接1 参考链接2 下载链接

tmux

tmux 是一个终端多路复用器,允许你在一个终端窗口中运行多个终端会话,并且可以在这些会话之间自由切换,非常适用于远程会话管理和多任务处理,Windows系统可通过MSYS2使用

tmux

上海超算平台Tmux手册

tmux ls 查看现有的会话

tmux new -s <SESSION NAME> 新建会话

tmux attach -t <SESSION NAME> 接入会话

Ctrl+b d / tmux detach 分离会话

tmux kill-session -t <SESSION NAME> 杀死会话

Linux Commands

ip address / ifconfig 显示和管理网络接口信息

top -u <USER NAME> 动态展示用户进程及资源占用,htop

ps -u <USER NAME> 静态展示用户进程及资源占用

ps -u -p <PID> 根据进程号查进程

ps aux | grep python / ps -ef | grep python 查看所有python相关的进程

df -h 查看硬盘剩余空间

du -h 查看路径下文件占用硬盘空间,du -sh * 查看路径下所有文件夹各自占用的总空间,du -sh .[!.]* * 查看所有文件夹包括隐藏文件夹各自占用的总空间

free -h 查看内存使用空间

sudo lsof -i :<PORT NUMBER> 查看占用端口的所有进程信息;sudo lsof -i tcp:<PORT NUMBER> 查看占用TCP端口的进程信息

sudo chown -R <USER NAME> <PATH> && sudo chmod -R 777 <PATH> 赋予文件的写入权限,-R递归更改路径下所有文件的权限

pip install . vs pip install -e .

240723pipinstall

使用 pip install -e .(editable 模式)安装项目时,Python 会创建一个指向项目源代码目录的符号链接,而不是将文件复制到 site-packages 目录。这意味着你对源代码的任何更改会立即在安装的包中生效,无需重新安装。这对于开发和调试非常有用,因为你可以实时看到代码修改的效果

CentOS 8

centos8 解决 Failed to download metadata for repo ‘appstream’

CentOS 8 更换 yum 国内源

Mirror

校园网联合镜像站

阿里云镜像站

清华大学开源软件镜像站

Archive

Installing Miniconda

anaconda archive

pytorch wheel

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.