之前的教程里都会用到一些命令行,想要学会使用这些科研软件,Linux系统不必精通,但是得会一些基本的操作。
现在的服务器基本上都是linux系统。Linux系统因其开源、低风险、高稳定性、多用户的特点,被广泛地使用。现在传播最广的Liunx发行版本一个是Red Hat的CentOS,一个是Debian的Ubuntu。相对来说,CentOS更稳定简洁,更适合作为服务器。Ubuntu集成了更多功能,所以相对更适合个人使用。不过现在CentOS停止更新了,有RockyLinux替代。
这里讲一些Linux基础,仅为后续更好地使用数据处理工具,不对其作深入研究。
Shell
Shell是系统的用户交互界面。
我们连接服务器一般用ssh(即secure shell),是一种安全远程登录的协议。通过连接到服务器,可以使用命令行控制服务器。相较于直接用Teamviewer或者向日葵这种远程桌面控制软件,ssh延迟低,且支持同时打开多个,方便许多。
ssh连接客户端我个人使用的是MobaXterm软件,比较好看也很好用,下载便携版只有一个exe执行文件就可以使用。此外,还有Xshell、Xming等许多软件都支持。附MobaXterm官网。
下载好打开后左上角点击Session然后点击SSH,输入主机ip地址remote host,用户名username,端口号Port。输入密码就可以连接到远程服务器了。它会显示[用户名@主机名 当前路径] [spuser@spgpu ~]。
文件系统
linux文件类型:
-
普通文件:纯文本、代码、脚本、可执行文件、二进制文件等等。
-
目录文件:可以理解为文件夹。
-
链接文件:可以理解为快捷方式。
-
设备文件:与系统外设相关,一般在/dev下。
-
其它。
如果一个文件以”.”开头,那么它是隐藏文件。
linux文件系统是标准的树形结构。用”/”来表示根目录,用”.”来表示当前目录,用”..”来表示上一级目录。
提到这个,不得不提绝对路径和相对路径的概念。这个听起来比较抽象,新手常常不理解。绝对路径其实就是从根目录开始一层一层下去的路径,相对路径是以当前所在目录为起始和参照的。比如说我现在在我的家目录”/home/lyz”底下,且下面有一个叫test的文件。那么绝对路径就是”/home/lyz/test”,相对路径就是”./test”。
如果我们现在连接上一台linxu系统的主机或者服务器,输入”cd /”回车进入根目录(一会讲命令用法),再输入”ls”,可以显示根目录下的文件。输入”ls -l”可以显示详细信息。
cd /
ls
ls -l
-
/bin:存放常用的用户命令文件。
-
/boot:开机启动文件。
-
/dev:设备文件比如硬盘、软盘、内存等。
-
/etc:系统配置文件。
-
/home:家目录,即普通用户的主目录。也可以用”~”表示。你可以理解为桌面,把自己的一些东西放在这个目录里。
-
/lib:库文件。
-
/opt:可选目录,存放自己安装的一些软件。
-
/root:超级用户的家目录。
-
/usr:默认安装的软件会存在这里。
-
/var:可变目录,放一些日志文件。
只是作为用户的话,这些文件中除了自己的家目录”/home”(或者叫”~”)以及额外添加的比如存储数据的”/data”、”/storage”等目录,别的都不要乱动。更改配置文件很容易造成系统崩溃。
基本命令
通过命令行与服务器交互,这对于习惯了Windows图形操作界面的新手来说需要适应。下面简单介绍几个常用的命令,对于只是需要偶尔用下处理数据软件的人来说一般够用了。有遇到不会的话,网络如此发达,查一下应该也不难。附一个菜鸟教程的链接,查询很方便。下文部分引用菜鸟教程
命令大部分是由”命令+参数(可选)+对象(可选)”构成,参数由一个或者两个”-“开头。基本上命令都自带帮助文档,在命令后跟上空格”–help”,会显示出帮助文档。
ls (查看目录)
全称:list directory contents。会显示指定工作目录下的内容。
用”ls –help”可以看到用法,太长了截了一部分图(后面的命令你们可以自行输入–help看看)。可以看到help文档中写的用法是”ls [OPTION]… [FILE]…”。[]中内容是可选的。直接输入ls会显示当前目录下的内容。常用的option有:
-
ls -a:显示所有文件,包括隐藏文件。
-
ls -l:显示详细信息长列表。
cd(更换目录)
全称:change directory。进入到某个目录下。
用法:
cd [option]... [directory]...
比如:”cd /usr/local”进入到/usr/local这个文件夹下。”cd “进入到家目录(就等于/home/”username”),或者直接输入”cd”,这三者都等于进入家目录。”cd ..”表示返回上一级目录,同理”cd ../..”表示返回上两级目录
pwd(当前位置)
全称:print work directory。显示当前工作目录的位置。
用法:非常简单,直接输入pwd。
mkdir(创建目录)
全称:make directory。创建目录。
用法:
mkdir [-p] xxx #新建一个叫xxx的目录
-p是可选的,如果只是创建一个目录那就不用。如果需要在创建的目录里再创建一个目录或好几层目录,那么需要-p。比如:
mkdir test1
mkdir -p test2/test3
cp(复制文件)
全称:copy file。复制文件或目录。
用法:
cp [option] source destination #从位置source拷贝到destination
-
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-
-l:不复制文件,只是生成链接文件。
比如将当前xxx目录下所有文件复制到/data下的新目录new下:
cp -r ./xxx/ /data/new
mv(移动文件)
全称:move file。移动文件或目录。
用法和参数类似cp。但是mv目录不需要加-r参数,mv命令可以直接操作移动目录。
rm (删除文件)
全称:remove。删除。
用法:
rm [option] xxx #删除xxx
-
-r 删除目录及目录下的所有内容。
-
-f 如果文件是只读模式,也一并删除,不需要额外确认。
比如说这里有一个test文件夹,下面还有很多文件和文件夹。我想把它们都删完。
rm -rf ./test
vi/vim/gedit (文本编辑器)
用法:
vi xxx
vim xxx
gedit xxx
这三个都是linux的文本编辑器(你就想成是Windows的记事本)。所有Unix like系统都一定自带vi编辑器,其它都需要安装。现在用的比较多的是vim,因为它有字体颜色辨别语法正确性。gedit和Windows的记事本基本没什么区别了,但是会有GUI界面,打开速度慢一点。vi/vim可以直接在shell界面编辑,用法对于用惯了记事本的朋友来说略显复杂,需要学习一下,不想学的直接gedit。
vi/vim一般常用的方法就是:进入时是阅读模式,按”i”进入编辑模式,按”esc”推出编辑模式,按”:”进入操作模式,操作模式下输入”q”回车退出,输入”wq”保存后退出,输入”q!”不保存退出。更多操作上网搜。
ln (链接)
全称:link files。为某一个文件在另一个目录下创建链接。你可以理解为快捷方式。
用法:
ln [option] 源文件或目录 目标文件目录
我们常用的软链接的参数是 -s。
比如你的电镜原始数据在一个文件夹里/data/20230429xxx。而你的工作目录是/home/lyz/relion。你不想挪你的数据,又想relion能访问到,那么建立一个软链接。
cd /home/lyz/relion
mkdir rawdata
cd rawdata
ln -s /data/20230429xxx/*.tiff /home/lyz/relion/rawdata/
这样就会把原始数据里所有tiff后缀的文件链接到rawdata里了。
输入ls -l会显示软链接文件指向的位置。比如我们的根目录下的bin和lib其实都是软链接到/usr/bin和/usr/lib的一个链接而已。
nvidia-smi (显卡状态)
大名鼎鼎的显卡制造商英伟达(Nvidia)。命令为查看显卡GPU使用状态。数据处理常常用到GPU加速,注意看看GPU使用状态,别和别人撞上了,大家一起用一张卡最后内存溢出程序崩溃,都要重新算。
nvidia-smi
module (管理环境)
这是为了防止软件之间配置环境等等冲突,以及可以使用不同版本的软件。
用法:
module list #显示当前load的软件
module avili #显示待可用的所有软件
module load xxx #加载叫xxx的软件
module unload xxx #关闭叫xxx的软件
conda(管理环境)
conda是著名的Python软件包管理工具,作用是创建不同的环境来使用不同的软件,避免两个软件需要不同的环境而导致没法同时安装使用。它的功能十分强大,我们只说可能用到的一点点。
用法:
conda activate xxx
(xxx)$ conda deactivate xxx
激活了某一环境比如xxx后Shell命令行用户名之前就会出现(xxx),表示环境激活,此时就可以用在这个环境下安装的软件了。deactivate之后(xxx)消失。
mount (挂载硬盘)
有些Linux系统插入硬盘后需要手动挂载硬盘才能访问读写。可以先用lsblk
命令查看系统识别的硬件,然后用mount
命令来将硬盘挂载到挂载点上。
用法:
sudo mount /dev/sdx1 /mnt/media
这里/dev/sdx1是用lsblk
命令查看到的目标硬盘,/mnt/media是系统上自己创建的一个挂载点。
ps/kill
ps是查看当前进程命令,你可以理解为Windows的任务管理器吧。而kill命令则如其名是关闭进程的,后面需要跟一个PID,这个PID就是显示出来的第二列那个。
ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
lyz 10 0.0 0.0 14264 2716 pts/0 Ss 08:04 0:00 -bash
lyz 94 0.0 0.0 15520 1924 pts/0 R 10:53 0:00 ps au