linux服务器搭建心得

2023-10-30

安装显卡

# 非必要不去官网手动安装, 容易出错

# ubuntu
## 查看显卡
ubuntu-drivers devices
## 根据输出安装
sudo apt install nvidia-deiver-xxx
## 重启
reboot
## 检查安装
nvidia-smi

安装cuda

cuda

# cuda下载自带nvidia驱动
# https://developer.nvidia.com/cuda-downloads
# 检查安装: nvcc -V, nvidia-smi

cudnn

# https://developer.nvidia.com/rdp/cudnn-download
sudo apt install nvidia-cudnn

ssh设置

vim /etc/ssh/sshd_config
# 修改ssh端口
Port 22
# 禁止root登录ssh
#PermitRootLogin prohibit-password

公用conda安装

Anaconda

下载

官网
清华源

wget xxx.sh

安装

# 方法一
bash xxx.sh
# 方法二
chmod 777 xxx.sh
./xxx.sh

安装公用conda

wget conda.sh                               # 下载conda
sudo bash conda.sh -p /opt/miniconda3       # 安装miniconda到/opt,一路enter和yes
conda config --set auto_activate_base false # 设置不自动激活conda

# 添加组
sudo groupadd conda                         # 新建conda组
sudo chmod 770 -R /opt/miniconda3/          # 修改conda对应文件权限
sudo chgrp -R conda /opt/miniconda3/        # 修改conda对应文件的组

# 添加用户
sudo usermod -m -G conda -a <username>         # conda组添加用户
sudo vim /root/.bashrc                      # 复制文末>>> conda initialize >>>到<<< conda initialize <<<之间的所有内容
sudo vim /home/<username>/.bashrc           # 粘贴复制的内容到文末
# 使用source ~/.bashrc使自己立即生效

## tips: 多用户可能因为包缓存读写权限冲突导致conda create失败,执行一下conda clean --all就行

文件配置

# 打开配置文件
vim /etc/profile
# 在文件的最后加上如下配置
# 步骤2.4 中的安装路径
export ANACONDA_HOME=/tmp/software/anaconda3
export PATH=$ANACONDA_HOME/bin:$PATH
# 可不添加
export PYSPARK_PYTHON=$ANACONDA_HOME/bin/python
# 使文件修改生效
source /etc/profile

# 第三库安装与默认源修改
# 使用conda create 创建虚拟环境或利用conda install安装软件的时候,有时conda源下载速度太慢,过程中会中断连接导致压缩包下载不全或者失败
# 解决办法: 将conda改为国内源的清华源或者中科大源,比如:
# 添加数据源:例如, 添加清华anaconda镜像:
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free/
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main/
conda config --set show_channel_urls yes

然后再次执行conda create ... 命令,会有一个较长的等待过程,然后提示确认或者取消,输入y确认创建
# 拓展:关于conda的数据源,另外有下述操作可做选择
# 显示目前conda的数据源有哪些
conda config --show channels
# 删除数据源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 恢复默认源
conda config --remove-key channels

修复

  • 由于conda共享后用户之间会有部分共享文件权限冲突的问题,解决办法是让root定期执行一个修改所有文件权限的脚本,需要安装crontab。

编写脚本/root/scripts/conda_config.sh

#!/bin/bash
chmod -R 770 /opt/miniconda3/
chgrp -R conda /opt/miniconda3/

加入crontab任务

crontab -e
# 加入如下一行,每两分钟修改一次文件权限及群组
*/2 0-1,7-23 * * * bash /root/scripts/conda_config.sh

卸载

# 删除anaconda,直接切换到安装anaconda的目录,直接
rm -rf anaconda3
# 然后在/etc/profile, 把配置的删除即可

备份

系统备份

#!/bin/bash

# 将安装有系统的Samsung SSD 870硬盘备份至带日期的文件/mnt/hdd2/backup/system_backup_$(date +%Y-%m-%d).img.gz
dd if=$(lsscsi | grep "Samsung SSD 870" | awk '(NR=1){print "echo ",$NF}' | bash) | gzip -c > /mnt/hdd2/backup/system_backup_$(date +%Y-%m-%d).img.gz

# 删除NR>n的备份文件,即只保留n次备份
ls -t /mnt/hdd2/backup/system_backup_*img.gz | awk '(NR>4){print "rm -rf ",$0}' | bash

数据备份

#!/bin/bash
# 检测是否挂载了备份盘hdd1,如果是,用rsync将hdd2的内容盘对盘备份到hdd1,可以修改成网络备份
if [ -n "$(mount -l | grep /mnt/hdd1)" ]; then
    rsync -avX --delete /mnt/hdd2/ /mnt/hdd1/
fi

代理

设置代理

# 临时设置代理
export http_proxy="http://IP:PORT"
export https_proxy="http://IP:PORT"
export all_proxy="socks5://IP:PORT"
export ftp_proxy="ftp://IP:PORT"

# 临时取消代理
unset http_proxy

# 查看代理
env | grep proxy

内网穿透

下载花生壳

下载

安装花生壳

dpkg -i phddns.deb

# 卸载花生壳
dpkg -r phddns

功能查看

# 查看指令
phddns

注册

# 查看SN码
phddns status

# 访问http://b.oray.com
# 通过SN码登录,默认密码admin,绑定到向日葵账号

系统监控

netdata

apt install netdata
# 有点问题,官网安装
# 默认监控端口是http://<ip>:19999

vim

设置tab缩进4空格

/etc/vim/vimrc追加set expandtabset ts=4set sw=4

vscode

无法连接

vim /etc/ssh/sshd_config
AllowTcpForwarding yes
systemctl restart sshd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux服务器搭建心得 的相关文章

  • 在 64 位 RHEL 上安装 32 位库 (glibc),而不使用 yum

    我试图让 32 位应用程序在 64 位 RHEL 6 1 上运行 但该计算机无法访问互联网 有没有办法在 64 位 RHEL 上安装 32 位 glibc 而不使用 yum 即仅使用 RPM 安装 我从 RHEL 6 1 ISO 中获取了
  • Linux 内核中的 64 位 time_t

    我已经编译了内核 3 19 1 但仍然有问题time t 只是一个简单的程序cout lt lt sizeof time t 给出 4 个字节的大小 而不是我的意图的 8 个字节 我应该在 make menuconfig 期间打开特定选项吗
  • ModuleNotFoundError:没有名为“schedule”的模块

    我有导入时间表的Python程序 import schedule 在开头 使用 python3 命令执行代码没有问题 但从其他 python 文件启动它call sudo python3 ProgramWithSchedule py she
  • 如何在 Linux Bash 中通过 SFTP 将数据传输到远程文件而不将数据存储在本地文件中?

    我需要能够通过 SFTP 将数据从内存传输到远程文件 我最初是通过 SSH 进行此操作的 在工作时发现我没有对远程位置的 SSH 访问权限 只有 SFTP 访问权限 下面是我的原始 SSH 代码的示例 echo secret data ss
  • 如何使用终端打开“-”虚线文件名?

    我尝试了 gedit nano vi leafpad 和其他文本编辑器 它无法打开 我尝试了 cat 和其他文件查找命令 我向你保证这是一个文件而不是目录 这种方法有很多误解 因为使用 作为参数指的是标准输入 标准输出 i e 开发 标准输
  • 为什么 gcc 会在显然不需要的时候生成 PLT?

    考虑这段代码 int foo int main foo while 1 int foo 在共享对象中实现 编译此代码gcc o main main c lfoo nostdlib m32 O2 e main no pic L shared给
  • Linux 在崩溃时自动重新启动应用程序 - 守护进程

    我有一个运行嵌入式 Linux 的系统 它的持续运行至关重要 基本上 它是一个与传感器通信并将数据中继到数据库和 Web 客户端的过程 如果发生崩溃 如何自动重启应用程序 此外 还有多个线程进行轮询 例如套接字和 uart 通信 如何确保没
  • 如果等于特定值则替换列

    我希望替换 CSV 中的第四列 如果它等于 N A 我正在尝试将其更改为 1 我似乎无法让它发挥作用 awk F if 4 N A 4 1 test csv 您可以使用以下内容awk awk F 4 4 N A 1 4 1 OFS test
  • 如何从子进程为父进程设置环境变量?

    如何从子进程为父进程设置环境变量 例如 我有父进程和子进程 子进程继承自父进程环境变量 TMP VARIABLE 777 如何将子进程中 TMP VARIABLE 的值更改为 999 使其值对父进程可见 因为 TMP VARIABLE 99
  • 字符串常量之前的预期标识符

    有一个这样的程序 include
  • 为什么不使用 sshrc 中设置的 $PATH?

    我正在尝试在 OS X 服务器上通过 ssh 设置 svn 为了做到这一点 我读到我需要一个包装器来设置 umask 并 在我的例子中 设置存储库根 一种快速而肮脏的方法是重命名 usr bin svnserve并将包装器脚本放置在该位置
  • Linux 上共享内存的生命周期是多长

    我正在使用 ftok shmget shmat shmdt 函数在 Linux 上创建 写入和读取共享段 如果我写入一个程序中的段 然后退出 然后稍后从另一个程序中读取该段 我会惊讶地发现数据仍然存在 我预计当共享一个段的最后一个进程执行
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 强制 shell 在 SunGrid 引擎中使用 conda 变量中的 python [重复]

    这个问题在这里已经有答案了 我正在尝试在 SunGrid 引擎中执行 python 文件 并且从 anaconda3 环境变量中执行它 我的代码很简单 from future import print function import url
  • top命令的CPU使用率计算

    我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用率的百分比 但 top 正在使用一些 half total 来计算百分比 即在百分比上添加 0 5 在top的utils c中 以下行 在 3 8 beta1 中
  • 使用 Python for Linux 模拟按键事件

    我正在编写一个脚本来自动运行特定模型 当模型失败时 它会等待用户输入 Enter 键 我可以检测到模型何时失败 但我无法使用 python 在 Linux 上 来模拟按键事件 Windows 有 SendKeys 库来执行此操作 但我想知道
  • 检测目录中是否有某些内容被修改,如果是,则备份 - 否则不执行任何操作

    我有一个 数据 目录 我通过 shell 脚本定期同步到远程 NAS 但是 我想让这变得更有效率 我想在运行 rsync 之前检测 数据 中是否发生了变化 这样我就不会不必要地唤醒 NAS 上的驱动器 我正在考虑修改 shell 脚本以获取
  • 共享库 RPATH 和二进制 RPATH 优先级

    如果共享库链接到二进制文件 并且共享库还依赖于其他库 则共享库的 RPATH 和二进制文件的 RPATH 的优先级 链接器搜索顺序 是什么 二进制文件的 RPATH 是否可以覆盖共享库中的 RPATH 我在共享库RPATH中设置的 ORIG
  • 在Linux上如何找到当前目录的所有直接子目录?

    在Linux上如何找到当前目录的所有直接子目录 最简单的方法是通过编写来利用 shell 通配功能echo 如果你喜欢使用ls 例如要应用格式 排序选项 请使其ls d 解释 斜杠确保仅考虑目录 而不考虑文件 Option d 列出目录本身
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt

随机推荐

  • 一站式JDK安装与配置(Windows、MacOS(arm64与inter)、Linux)

    JDK下载与安装 文章目录 JDK下载与安装 1 Windows 2 MacOS 2 1 一键安装方式 推荐 2 2 手动配置方式 3 Linux 4 在IDEA中配置JDK JDK是Java Development Kit的缩写 它是Ja
  • Qt一个工程调用另一个工程的类成员变量

    一句两句话已经不能表达现在的激动情绪了 唯有感叹知识的博大精深 并把感叹转变为文字 同一个工程调用其他类成员变量非常简单 如 定义 Test1 h中申明成员变量 class A public double m fTest Test1 cpp
  • php中grep,使用 $.grep() 方法

    以前自己也没有使用过 grep 方法 grep 方法是按照某种条件来过滤数组 所以使用 grep 方法可以从数组中过滤出我们想要的结果 我们以一个例子来看看 比如有一个名为 nums 的数组 var nums 1 2 3 4 5 jQuer
  • IntelliJ IDEA 快速入门指南

    本节内容 运行你的第一个Java应用程序 熟悉主界面 智能编码 简单的项目配置 构建您的项目 运行和调试应用程序 运行测试 部署你的应用到服务器上 定制一切 找到适合你的方式 从Eclipse或NetBeans的迁移 下一步做什么 如果您已
  • [矩阵的三角分解系列六] Eigen中的三角分解

    Eigen中的三角分解 简介 安装命令 三角分解函数 使用范例 矩阵的三角分解是求解线性方程组常用的方法 包括LU分解 LDU分解 杜利特 Doolittle 分解 克劳特 Crout 分解 LLT 乔累斯基Cholesky 分解 LDLT
  • 阿里云 Serverless 应用引擎 2.0,正式公测!

    阿里云 Serverless 应用引擎 SAE2 0 正式公测上线 全面升级后的 SAE2 0 具备极简体验 标准开放 极致弹性三大优势 应用冷启动全面提效 秒级完成创建发布应用 应用成本下降 40 以上 此外 阿里云还带来容器服务 Ser
  • 虚拟数字人定制公司 国内做虚拟数字人定制开发的公司有吗?

    得益于图形渲染技术 AI技术 传感器硬件等技术的发展 使得虚拟数字人逐步进入大众视野 虚拟数字人分为真人驱动 AI驱动 AI合成 不同形式的虚拟数字人制作难度与成本相差较大 许多大众认为 制作虚拟数字人就是做一个美术就可以了 如果这样的话
  • 相机标定系列---opencv相关标定算子

    目录 1 标定的相关介绍 2 算法流程及相关算子简介 1 算法流程主要有五部分 2 相关算子介绍 1 棋盘标定板查找角点 2 亚像素角点准确化 3 可视化角点 4 相机标定 5 误差计算 3 完整代码 1 标定的相关介绍 1 标定的目的 在
  • MSBuild version 与 ToolsVersion 的区别

    MSBuild version 是指MSBuild所在的Framework的版本 ToolsVersion 是指编译当前工程使用的版本 相当于MSBuild的 ToolsVersion 参数 如果一个MSBuild 脚本中 既含有Tools
  • 理解make update-api命令

    一 使用场景 增加系统API 修改 hide的API 修改公共API 存在以上修改后 都需要先执行make update api 然后再make 二 缘起 1 在以上使用场景下 编译系统源码都会出现如下提示 see build core a
  • Python——信号量、条件变量、事件

    1 信号量 Semaphore 信号量通常用于保护数量有限的资源 例如数据库服务器 在资源数量固定的任何情况下 都应该使用有界信号量 在生成任何工作线程前 应该在主线程中初始化信号量 信号量提供acquire方法和release方法 每当调
  • Summer Holiday HDU - 1827 Tarjian

    题目链接 HDU 1827 主要思路 先用Tarjian处理出强联通块 然后将每个点的边转为强联通块之间的边 然后连上一个个入度为0的强联通块中最小的结点即可 正确性解释 用Tarjian算法处理出强连通块之后把每个强联通块看成是一个点 故
  • 蓝牙模块AT模式AT指令

    文章目录 进入AT模式的两种方法 HC 05的AT指令 HC 06的AT指令 进入AT模式的两种方法 经过摸索 这里总结两种进入AT模式的方法 与USB转TTL相连后接入电脑 将波特率设置成9600 模块指示灯快闪 这时再按下模块的按钮便进
  • 解决idea中不能输出中文问题

    在CSDN上查明了问题 解决方法 gt gt gt gt gt 打开idea 点在左上角的File 找到Settings 点击找到File Encodings然后看上面的Global Encoding和Project Encoding 都选
  • 埋点理论以及基于Vue的前端埋点技术

    一 明确目标 要知道利用埋点获取数据是要做什么样的用户分析 二 获取数据 三 埋点技术 四 已有软件 五 声明式埋点的实现 利用Vue的自定义指令原理 比如下边监控按钮点击的埋点 在main js中定义全局自定义指令 Vue directi
  • 【springboot】解决springboot项目,扫描不到自定义的controller

    如果遇到 http localhost 8080 test访问出现这个异常This application has no explicit mapping for error so you are seeing this as a fall
  • ASP.Net+SQLserver部署到阿里云Windows版本服务器

    工具 1 阿里云云服务器ECS 2 Windows 7 专业版 3 Visual Studio 2017 4 SQL Server2008 R2 写在前面 网站建立好之后 部署在本地服务器 只能局域网内访问 如果想让外网可以访问该网站 我们
  • spring boot配置shiro安全框架及用户登录权限验证实现

    关于shiro的配置我单独拿出来写了 从数据库表建立 到配置 如何使用 连接地址为shiro安全框架 shiro的应用理解 如果有修改会在这里边修改的 另外 springboot shiro的项目已分享到GitHub上 如果需要的可以看下
  • Scratch3.0连接EV3,WEDO2.0的方法视频讲解。

    为什么讲这个问题 最近因为国内对Scratch服务器访问的限制 现在访问官网和链接Scratch服务器的功能模块都使用不成了 离线版本中EV3和WEDO链接上也出了问题 目前这个是可以解决的 这个问题怎么解决 其实主要还是修改电脑的host
  • linux服务器搭建心得

    安装显卡 非必要不去官网手动安装 容易出错 ubuntu 查看显卡 ubuntu drivers devices 根据输出安装 sudo apt install nvidia deiver xxx 重启 reboot 检查安装 nvidia