1|Introduce
1.1 🧬 Linux · RStudio · HPC · Monitoring
生物信息数据分析(Bioinformatics)是一个高度跨学科的领域。实际上,许多需要处理大规模数据的工作,也会涉及类似的技术。
日常工作中,我们通常需要接触:
🖥️ 服务器管理
🐧 Linux系统操作
💻 Python / R等编程语言
🚀 高性能计算(HPC)
📊 服务器与任务监控
这篇笔记记录了我使用这些技术时积累的一些实战经验,希望能为同行的朋友提供参考,也方便自己随时查阅~
1.2 🐧 Ubuntu Tutorial
▸ Ubuntu
Ubuntu(国际音标:/ʊˈbʊntuː/,uu-BUUN-too)是一个基于 Debian的 Linux发行版。
Ubuntu主要包括三个版本:
🖥️ 桌面版(Desktop)
🗄️ 服务器版(Server)
🤖 面向物联网设备和机器人的 Core 版
以上版本既可以安装在实体电脑上,也可以运行在虚拟机中。从 17.10版本开始,Ubuntu使用 GNOME作为默认桌面环境。
Ubuntu由英国 Canonical Ltd发布并提供商业支持。它的名称来自非洲南部祖鲁语或科萨语中的“Ubuntu”一词,通常被解释为“人性”或“我的存在是因为大家的存在”,代表了非洲传统文化中的一种价值观。
📖 相关笔记:Ubuntu Tutorial
▸ Multipass
Multipass是一款适用于 Linux、Windows和 macOS的轻量级虚拟机(VM)管理工具。
它主要面向希望通过简单命令,快速创建一个全新 Ubuntu环境的开发者。
📖 相关笔记:Multipass
1.3 🌐 FRP
FRP是一种常用的内网穿透工具,可以将内网中的服务映射到公网,方便我们从外部访问服务器上的应用。
📖 相关笔记:FRP
1.4 🚀 HPC · Distributed Computing · Container
这一部分主要整理以下内容:
1.4.1 🚀 HPC
高性能计算(High-Performance Computing,HPC)是指使用超级计算机或计算机集群,解决计算量较大的问题。
HPC可以快速完成高度并行的计算任务,并通过集群作业调度系统统一分配和管理计算资源。
常见的集群作业调度系统包括:
📖 相关笔记:Slurm · SGE · Kubernetes(Docker)
1.4.2 🌐 Distributed Computing
分布式计算(Distributed Computing,又称分散式运算)主要研究分布式系统如何完成计算任务。
分布式系统由多台通过网络连接的计算机组成。不同计算机之间可以传递消息、交换数据并协调各自的行为,从而共同完成一个目标。
简单来说,就是把一个计算量很大的任务拆分成多个小任务,由多台计算机分别处理,最后再对结果进行汇总。
分布式系统常见于:
面向服务的架构
大型多人在线游戏
对等网络应用
大规模数据处理
分布式任务队列
📖 相关笔记:Distributed Computing · Task Queue
1.4.3 📦 Container
Docker、Singularity等容器技术,可以将分析软件及其运行环境封装起来。
容器内部的环境不会轻易影响外部系统,同时具有良好的可移植性,可以较方便地迁移到不同的分析环境中:
💻 个人电脑(PC)
🖥️ 计算集群(Cluster)
☁️ 云平台(Cloud)
在搭建分析流程时,还可以将容器(Container)与分析流程(Pipeline)结合,提高运行环境的一致性和分析流程的可复现性。
📖 相关笔记:Container
1.5 ✍️ Code Editor
安装和配置服务器后,我们经常需要修改脚本及相关配置文件。
Vim等命令行编辑器可以直接在终端中使用,但它的操作方式对新手来说相对复杂。相比之下,VS Code等现代编辑器拥有更加直观的图形界面(GUI),更适合初学者编写和修改代码。
如果喜欢直接在终端中编程,也可以尝试 Neovim🪤
1.5.1 ⌨️ Vim & Neovim
▸ Vim
Vim是从 vi发展而来的一款文本编辑器。
它拥有代码补全、编译和错误跳转等功能,在程序员中被广泛使用,并与 Emacs并列为类 Unix系统中最受欢迎的编辑器之一。
Vim的第一个版本由 Bram Moolenaar 于 1991 年发布。它最初的名称是 Vi IMitation,随着功能不断增加,后来正式改为 Vi IMproved。
📖 相关笔记:Vim
▸ Neovim
Neovim是在 Vim基础上继续发展和扩展的编辑器。
它继承了 Vim的主要特点,同时增加了更现代的插件系统和扩展能力,适合喜欢 Vim操作方式、但又希望获得更多功能的用户。
📖 相关笔记:Neovim · LazyVim
1.5.2 🧩 VS Code
Visual Studio Code,简称 VS Code,是微软开发的一款免费、跨平台代码编辑器。
它支持:
语法高亮
代码自动补全(IntelliSense)
代码重构
命令行工具
Git版本控制
主题与快捷键设置
扩展插件安装
VS Code使用 Monaco Editor作为底层代码编辑器。其源代码以 MIT许可证在 GitHub上发布,而官方可执行文件使用专门的产品许可证。
📖 相关笔记:VS Code
🧩 插件整理:VS Code Plug-in
1.5.3 🌍 VS Code Server
code-server提供了可以在网页端使用的 VS Code。
简单来说,它就是部署在本地服务器或云服务器上的在线版 VS Code,通过浏览器即可访问和编辑服务器中的代码。
📖 相关笔记:VS Code(Web)
1.6 🛠️ IDE
1.6.1 📊 RStudio
R是一种广泛应用于统计计算、数据分析和生物信息学领域的编程语言。
RStudio是基于 R的集成开发环境(IDE)。凭借高效的交互式操作和丰富的生态支持,它已经成为使用 R进行数据分析时最主流的工具之一。
📖 相关笔记:RStudio
1.6.2 📒 Jupyter
Jupyter是一个开源的交互式计算环境,主要用于科学计算、数据分析和机器学习。
它的核心工具是 Jupyter Notebook。这是一种基于 Web的应用程序,可以在同一个文档中展示:
Jupyter支持超过 40 种编程语言,包括 Python、R、Julia和 Scala等。
📖 相关笔记:Jupyter
1.7 🔧 Environment · Git · CI/CD
这一部分主要整理以下内容:
📦 环境与软件包管理
🗂️ 版本控制
🔄 开发与交付流程
1.7.1 📦 Environment & Package Management
软件包(Package)是编程语言中用于封装特定功能的代码集合。
环境(Environment)是软件运行所需要的上下文,包括依赖项及其对应的版本等。
不同的分析任务可能需要不同的软件包,甚至需要同一个软件包的不同版本,而这些软件包的运行通常还依赖特定的环境配置。
在单机环境中,我们只需要部署指定版本的软件及其依赖。但是,当分析任务扩展到大型计算集群时,环境配置和管理的复杂程度会明显增加。
📖 相关笔记:Environment · Package Management
1.7.2 🗂️ Version Control
Git是一个分布式版本控制系统,主要用于记录和管理计算机文件的修改过程,也常用于程序员之间的代码协作。
它的主要特点包括:
运行速度快
保证数据完整性
记录文件修改历史
支持多人协作
支持分布式、非线性的开发流程
📖 相关笔记:Git
1.7.3 🔄 Developer Approaches
CI/CD通常代表:
CI:持续集成(Continuous Integration)
CD:持续交付(Continuous Delivery)
CD:持续部署(Continuous Deployment)
它是一套围绕代码集成、测试和交付建立的开发流程,可以帮助开发人员及时发现新代码带来的问题。
📖 相关笔记:CI/CD
1.8 📟 Terminal · Server Manager · Monitoring
这一部分主要记录:
✨ 终端(Terminal)美化
🖥️ 服务器管理
📊 系统资源监控
🔍 任务运行状态查看
🧯 常见问题排查
📖 相关笔记:Terminal · Server Manager · Monitoring
Linux工具快速教程
https://linuxtools-rst.readthedocs.io/zh-cn/latest/