常见指令
在此主要记录一下常用到的指令
- vim 强制保存
w !sudo tee %
- 所有权限
chmod 777 文件名
ubuntu
正好最近手里突然冒出了一台 ubuntu 云服务器,纯天然,无污染,正好趁此机会好好写写搭建过程
# 创建新的用户
首先进入云服务器,如果是普通用户登录,直接切换成 root 权限,我们要开始操作了
sudo su
adduser 用户名
再输入密码,一路回车就好了,现在该用户名还不具备 sudo 权限,我们需要将其添加至 sudo 组
usermod -aG sudo 用户名
之后检查该用户名所在组:
groups 用户名
显示 sudo,大功告成
# ssh 连接
现在我是在云平台上直接访问的服务器,不过这样一来是不够快速便捷
,二来安全性不佳
,所以最好使用 rsa 密钥对进行 ssh 连接访问
切换到我们自己的用户来生成密钥对,开始操作
su 用户名
ssh-keygen -t rsa -C '用户邮箱'
使用默认存放路径,当询问Enter passphrase (empty for no passphrase):
时可以设置一个输入密码,由于之后的连接足够安全,我图快不设置密码,这里可以直接回车
如果后续报错,显示权限不够,我们可以设置用户读写权限
chmod 600 ~/.ssh/id_rsa
在id_rsa.pub
中获取我们的公钥
cat ~/.ssh/id_rsa.pub
直接复制就好了,可以添加到 github 中,便于 ssh 直接访问自己的仓库
具体操作如下,在 github 中找到 Settings/SSH and GPG keys 点击New ssh key
新增我们复制下来的公钥,key type
我们选择Authentication
,然后复制粘贴id_rsa.pub
下的内容至其中
测试连接,输入以下命令
ssh -T git@github.com
云服务器上顺带设置一下 git 客户端的用户名和邮箱(邮箱没有双引号)
git config --global user.name "username"
git config --global user.email useremail@qq.com
通过git config -l
检查是否配置成功
当然,为了便于我们本地主机访问该服务器,我们需要在~/.ssh
新建authorized_keys
文件
将我们本地主机id_rsa.pub
下的内容粘贴到 authorized_keys 中,如果主机中没有id_rsa.pub
,我们也可以按照上述相同的方法生成密钥对
# vscode 优化
我还是比较喜欢使用 vscode 进行 ssh 进行连接访问的,但苦于这种轻量型的服务器内存小,cpu 容易占满,经常卡死,这当然是不可以接受的
这里通过划分 Swap 盘来进行优化访问
- 创建一个 Swap 文件
使用 fallocate 或 dd 命令创建一个 swap 文件。例如,要创建一个 4GB 的 swap 文件,可以使用:
sudo fallocate -l 4G /swapfile
如果 fallocate 不可用或有问题,还可以使用 dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
- 设置正确的权限:
为了确保 swap 文件只能被 root 用户读写,设置适当的权限:
sudo chmod 600 /swapfile
- 格式化为 Swap:
将新创建的文件格式化为 swap 文件格式:
sudo mkswap /swapfile
- 启用 Swap:
使用以下命令启用 swap:
sudo swapon /swapfile
- 使 Swap 在重启后持久化:
要确保每次启动时都启用 swap,需要将其添加到/etc/fstab 文件中:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- 调整 Swappiness 值(可选):
Swappiness 是一个范围为 0-100 的值,决定了系统应该如何积极地使用 swap。值越高,系统越倾向于使用 swap。默认值通常是 60。你可以使用以下命令查看当前的 swappiness 值:
cat /proc/sys/vm/swappiness
如果需要,你可以临时更改它:
sudo sysctl vm.swappiness=10
对于长期更改,将以下行添加到/etc/sysctl.conf 中:
vm.swappiness=100
配置完 Swap 之后,你可以使用free -h
命令来查看 RAM 和 Swap 的使用情况。
# 安装 miniconda
我个人比较喜欢对不同项目创建不同的虚拟环境进行管理,这里可以安装miniconda 包管理器进行使用
使用如下代码进行安装:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
- 在
~/.bashrc
中添加环境变量
export PATH=~/miniconda3/bin:$PATH
- 刷新环境变量
source ~/.bashrc
发现前面就会有一个(base),代表激活了 base(最基础)环境,安装完成
解决方法(前面有一个(base)):
# 退出conda虚拟环境
conda deactivate
# conda 设置不自动进入base(最基础)环境
conda config --set auto_activate_base false
- 卸载 miniconda
找到 miniconda3 的文件夹,使用 rm 命令将它删除
用 vim 命令进入.bashrc 文件,将 conda 的语句用#注释掉
重新激活一下 source ~/.bashrc 就可以了
- conda 常用命令
- 获取版本号
conda --version
conda -V
- 更新 conda
conda update conda
- 环境管理
# 查看虚拟环境列表
conda env list
conda info -e
# 创建虚拟环境
conda create -n <env_name> [python_version] [package_name]
conda create -n pyenv python=3.6 requests
conda create -n pyenv
# 复制虚拟环境
conda create --name <new_env_name> --clone <old_env_name>
# 删除虚拟环境
conda remove -n <env_name> --all
# 激活虚拟环境
conda activate <env_name>
# 退出虚拟环境(进入环境状态下才可使用)
conda deactivate
- 包管理
我个人其实更倾向于使用 pip install 进行安装的,很多包conda install
下不了
# 查看所有包
conda list -n <env_name> # 若不指定-n,默认在当前的环境
# 搜索某个包信息
conda search <package_name> # 查询包的版本
# 安装
conda install -n <env_name> -c 镜像地址 <package_name> # 若不指定-n,默认在当前的虚拟环境
conda install <package_name>
conda install <package_name>=1.5.0 # 指定版本
# 更新
# 更新当前环境所有包
conda update --all
# 更新指定包
conda update -n <env_name> <package_name> # 若不指定-n,默认在当前的虚拟环境
conda update <package_name>
# 删除
conda remove -n <env_name> <package_name> # 若不指定-n,默认在当前的虚拟环境
conda remove <package_name>
# 安装 docker
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
sudo apt update
- 现在,你可以使用以下命令在 Ubuntu 中安装 Docker 以及 Docker Compose:
sudo apt install docker.io docker-compose
📋 Docker 包被命名为 docker.io,因为在 Docker 出现之前就已经存在一个名为 docker(用于 Dockerlet 应用)的过渡包。因此,Docker 包必须被命名为其他名称。
- 安装完成后,你可以使用以下命令检查安装的版本:
docker -v
docker 需要在 root 环境下执行
- 拉取镜像
docker pull hello-world
- 创建新容器,以
qmsgnt
为例
sudo docker run --restart=always -d --name qmsgnt -e ACCOUNT=$ACCOUNT -p $WEBUI_PORT:6099 -v ${PWD}/QQ:/root/.config/QQ -v ${PWD}/config:/usr/src/app/QmsgNtClient-NapCatQQ/config -v ${PWD}/logs:/usr/src/app/QmsgNtClient-NapCatQQ/logs qmsgnt
- 查看容器
sudo docker images
sudo docker image ls
- 启动容器
sudo docker start qmsgnt
- 停止容器
sudo docker stop qmsgnt
- 删除容器
sudo docker rm qmsgnt
- 删除镜像
sudo docker rmi qmsgnt
# python 小细节
这个 python 是服务器自带的 python,有时候我个人偷懒,更快捷的来运行脚本时会用到
- 软链接
想使用 python 却不得不打 python3,很烦!
sudo ln -s /usr/bin/python3 /usr/bin/python
- 国内换源
如果服务器在国内的话,可以尝试换源,我的腾讯云服务器,本来看在是腾讯的面子上换个腾讯源的,结果 emmmm,有的版本太低…
我的评价是,还得是清华源
# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
# 豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/
# 换回默认源pip config unset global.index-url
# 实验室服务器使用指南
arch/manjaro
有问题来官方论坛:
# 一些安装指令
# google chrome
yay -S google-chrome
安装官方平台qq ,下载对应版本,我们这里使用的是 x64/pacman
sudo pacman -U linuxqq_2.0.0-b2-1089_x86_64.pkg.tar
或者
flatpak install com.qq.QQ
# 微信
yay -S wechat-universal-bwrap
# 远程控制
安装方式:
- 安装 xrdp 核心包
yay -S xrdp
- 安装 Xorg 后端(根据自己的设备在以下之中三选一即可):
- Inter 与 AMD 核显 (支持硬件加速)
yay -S xorgxrdp-glamor
- 不使用 GPU (CPU 占用率会高)
yay -S xorgxrdp
- NVidia 独显
yay -S xorgxrdp-nvidia
- 安装 Xorg-xinit
pacman -S xorg-xinit
- 修改
Xwrapper.config
文件
在/etc/X11/Xwrapper.config
中加入以下内容:
allowed_users=anybody
needs_root_rights=no
如果没有这个文件则手动创建
- 在
~/.xinitrc
中写入以下内容:
找到如下的dbus_args
:
get_session(){
local dbus_args=(--sh-syntax --exit-with-session)
case $1 in
将其修改为:
get_session(){
local dbus_args=(--sh-syntax)
case $1 in
- 赋予
~/.xinitrc
执行权限
chmod +x ~/.xinitrc
- 启用服务
sudo systemctl enable xrdp.service
sudo systemctl enable xrdp-sesman.service
- 重启
sudo reboot
- 减少/解决画面卡顿优化
调整 Xrdp 配置参数
编辑 /etc/xrdp/xrdp.ini
tcp_send_buffer_bytes=4194304
tcp_recv_buffer_bytes=6291456
tcp_send_buffer_bytes, tcp_recv_buffer_bytes 两个参数默认被注释了,注释默认值(32768),根据实际情况进行调整。
调整系统参数
将以下内容写入配置文件 /etc/sysctl.conf
net.core.rmem_max = 12582912
net.core.wmem_max = 8388608
然后执行
sudo sysctl -p
重启 xrdp 服务生效
sudo systemctl restart xrdp
# pacman 失效问题
之前遇到了非常恶心的 bug
错误:无法从 mirrors.bfsu.edu.cn : The requested URL returned error: 404 获取文件 'pacman-6.0.2-14-x86_64.pkg.tar.zst'
错误:无法从 mirrors.bfsu.edu.cn : The requested URL returned error: 404 获取文件 'pacman-6.0.2-14-x86_64.pkg.tar.zst'
错误:无法从 mirrors.tuna.tsinghua.edu.cn : The requested URL returned error: 404 获取文件 'pacman-6.0.2-14-x86_64.pkg.tar.zst'
错误:无法从 mirrors.sjtug.sjtu.edu.cn : The requested URL returned error: 404 获取文件 'pacman-6.0.2-14-x86_64.pkg.tar.zst'
警告:无法获取某些文件
错误:无法提交处理 (无法获取某些文件)
发生错误,没有软件包被更新。
我一开始以为是换源的问题
sudo pacman-mirrors -id
尝试还原换源,无果,之后找到正确解决方法,更新 arch 组件:
sudo pacman-mirrors --continent && sudo pacman -Syyu
成功解决!
# vscode 终端乱码问题
在 vscode 终端里我由 bash 转 zsh 后发现,现有字体对于特定的图标无法显示:
Ctrl+,打开设置,在设置中的editor.fontFamily
改为MesloLGS NF
即可正常显示:
# vscode 基本设置
在~/.config/Code/User
中打开settings.json
我的自定义设置如下(后续会持续更新):
{
"workbench.colorTheme": "One Dark Pro",
"files.autoSave": "onFocusChange",
"workbench.iconTheme": "material-icon-theme",
"terminal.integrated.defaultProfile.linux": "zsh",
"window.titleBarStyle": "custom",
"editor.fontFamily": "MesloLGS NF",
"explorer.confirmDelete": false
}
WSL2
本文文章内容太长了,相关内容见WSL2