Linux基础

之前的教程里都会用到一些命令行,想要学会使用这些科研软件,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官网。

https://mobaxterm.mobatek.net

下载好打开后左上角点击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图形操作界面的新手来说需要适应。下面简单介绍几个常用的命令,对于只是需要偶尔用下处理数据软件的人来说一般够用了。有遇到不会的话,网络如此发达,查一下应该也不难。附一个菜鸟教程的链接,查询很方便。下文部分引用菜鸟教程https://www.runoob.com/

命令大部分是由”命令+参数(可选)+对象(可选)”构成,参数由一个或者两个”-“开头。基本上命令都自带帮助文档,在命令后跟上空格”–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

这个kill命令谨慎使用,除非你知道自己要kill的是什么。在比如用relion跑一些任务的时候可以kill来强制停止,但是千万不要关了一些系统进程。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注