跳转至

Linux 基础

Linux 历史

  • 1970年,Unix 诞生于贝尔实验室,开放源码,此后诞生了AIX、Solaris、HP-UX、BSD等Unix系统
  • 1979年,从Unix V7开始,贝尔实验室严格了版本 ,禁止其源码用于教学
  • 1987年,Tanenbaum 发布了其从头开发、兼容Unix V7的操作系统 Miniux(mini-UNIX)用于教学
  • 1991年,Minix功能有限,Linus借鉴Minix开发了Linux(内核)
  • 1983年,Stallman发起GNU(GNU is not Unix)计划,目标是创建一套完全自由的操作系统,并陆续开发了Emacs、GCC等各种工具,但缺乏操作系统内核
  • 1991年Linus开发出Linux内核之后,GNU软件和Linux内核结合, 形成现代Linux生态环境。Stallman发布的GPL协议保障了开源软件的发展。
    根据不同目的和用途,整合Linux内核和各类应用软件形成不同的操作系统,称之为Linux发行版。常见的Linux发行版有Ubuntu、Dedian、RHEL、Fedora、CentOS、SLE等。

Linux 特点

  • 免费
  • 一切皆文件
  • 由目的单一的小程序组成,组合小程序完成复杂任务
  • 多任务、多用户系统
  • 大量的可用软件
  • 良好的可移植性及灵活性
  • 优秀的稳定性和安全性

Linux 组成

  • Kernel(内核)
    • 系统启动时将内核装入内存
    • 管理系统各种资源
  • Shell
    • 保护操作系统
    • 用户界面,提供用户与内核交互处理接口,各种命令运行的地方
    • bash, ash, pdksh, tcsh, ksh, sh, csh, zsh….
  • Utility
    • 提供各种管理工具,应用程序

文件

linux哲学核心思想是"一切皆文件"。"一切皆文件"指的是,对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用 fopen()/fclose()/fwrite()/fread() 等函数进行处理。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。虽然类型各不相同,但是对其提供的却是同一套操作界面。

文件具有多种属性,如类型、所属用户、用户组、权限、修改时间、大小等。

所有文件的起始为 / (根目录),采用树形结构存放。各类文件存放目录遵循FHS (Filesystem Hierarchy Standard)。

文件的位置称之为路径,如 /var/log/messages。

从 / 写起的为 绝对路径,如 /var/log/messages
从当前位置写起的为 相对路径,如 log/messages
/
├── bin   # binaries(二进制文件),存放着最常用的程序和指令
├── boot  # 系统启动相关文件,如内核,initrd,以及grub(BootLoader)
├── dev   # device,设备文件 — 体现了LInux的“一切皆文件”思想
├── etc   # 配置文件。大多数为纯文本文件
├── home  # 用户的家目录
├── lib   # library,公共库文件(不能单独执行, 只能被调用)
├── media # 挂载点目录,挂载移动设备(如U盘)
├── mnt   # 挂载额外的临时文件(如第二块硬盘)
├── opt   # optional,存放额外安装软件
├── proc  # processes,伪文件系统,内存映射文件,系统启动后才出现文件, 关机就空
├── root  # 管理员的家目录
├── run   # 是一个临时文件系统,存储系统启动以来的信息
├── sbin  # superuser binaries,存放系统管理所需要的命令
├── srv   # 该目录存放一些服务启动之后需要提取的数据
├── tmp   # temporary,临时文件,所有用户都可以操作,但只能删自己的,不能删别人的
├── usr   # unix shared resources,存放只能读的命令和其他文件
└── var   # variable,存放运行时需要改变数据的文件,如日志等

Linux学问很大,为了学会使用超算而去把Linux系统学一遍是得不偿失的,当然大佬可跳过此步。我们要做的,是明确如何学习Linux, 还有该学Linux的什么内容。

就我们的经验,需要学习的是计算机组成原理的基本概念(选学,没有学问题不大)、Linux的一些命令——对文件和目录的管理、vim的使用、shell和shellscript的概念。掌握这些知识,大家使用超算就能得心应手了,如果想深入了解Linux的建议找一本参考书,比如《鸟哥的Linux私房菜》

襄阳超算采用的是Linux系统,Linux系统和Windows一样,都是用户对计算机资源管理和使用的一种工具而已。超算操作系统的原理大致如下:用户通过登录的shell与远程计算机资源建立连接,每个用户都被管理员赋予一定的权限和计算机的资源,他们可以通过自己的shell输入命令来指导远程计算机对自己分配到的一些资源进行操作,比如在文件夹下新建文件、删除文件,或者安装程序。但是这些操作会受到一定的权限限制,例如不能删除其它用户的文件。用户登录时都在计算机的登录节点操作自己的文件,如果有一些运算量比较大的程序,用户可以输入命令,将这些程序提交到其它节点去执行。每个用户都有运算的需求,那么这些计算需求怎么处理呢?这就是后面手册中讲到的slurm作业管理系统。

Linux的一些基本命令——对文件和目录的管理

常用的命令大概有如下几个:

  1. cd: change directory 的意思,跳转到一个路径下。路径分为绝对路径和相对路径,绝对路径以“/”开头,要写出中间每一个路径。相对路径就是从当前操作的路径开始,不以“/”开头。按照如下的代码就可以跳转到相应的路径下
    cd 路径名

  2. rm:remove 的意思,用来删除文件。

  3. cp:copy 的意思,复制文件从一个位置到另外一个位置。

  4. mv: move 的意思,移动文件从一个位置到另外一个位置。

  5. ls:list 的意思,列出该目录下的所有文件。

与文件和目录管理的命令建议找一本linux书籍学一学,或者看看博客,留个大致印象,要用到具体的操作不懂的话直接百度即可,毕竟用超算不需要学完Linux。

shell脚本和vi编辑器

什么是shell脚本呢?shell脚本简单来说就是把每次都要在shell输入的命令写在一个后缀为.sh的文本文件中,那么linux运行这个shell脚本相当于执行里面的语句。类似于python和matlab的脚本文件的机制。在python或者matlab解释器中,输入一条语句再按回车键执行就能显示该语句的结果,当语句比较多的时候,或者处于某种特殊目的,得一次性执行多条语句,这时候就得把语句写进脚本,然后执行脚本文件。关于shell脚本只需要了解这个概念就够了,即Linux会把写进shell脚本的命令一步步往下执行,而这些命令原本是可以选择直接在shell窗口一条一条顺序输入的。

vi是什么呢?vi就是在linux文件下编辑文本文件的一个工具,在shell窗口下,输入"vi xxx.cpp"就可以编辑cpp文件,输入“vi xxx.py”就可以编辑python脚本,输入"vi xxx.sh"皆可以编辑sh脚本。使用vi,可以直接在linux上编辑自己的程序脚本还有提交要用的sh脚本。关于vi的使用,需要找一本linux书籍来学习,就不做详细的教程了。

好了,如果你学完以上的Linux相关知识,对于使用超级计算机来说就已经完全够用了!

本文阅读量  次    本站总访问量  次