Skip to main content Link Menu Expand (external link) Document Search Copy Copied

服务器的基本操作? - Linux 服务器的基本知识

May 8, 2023, Jingyu Liu, Xiang Li, Ming Li

理解服务器的基本结构

请不要感到害怕, 使用服务器与使用你的电脑并没有太大的区别, 这种感觉就像是你登陆了某个游戏的客户端, 你要做的只不过是尽快熟悉它, 然后就可以自由的玩耍了!

当用户 aduser 登陆服务器的 loginNode 端口后, 你会看到下面的界面

[aduser@loginNode ~]$

这里 ~ 表示 home 目录, 也称为家目录. 它是你的出生点, 是你存放自己东西的地方, 只有你自己可以访问. 而 aduser@loginNode 表示一个叫 aduser 的用户在 loginNode 上. 顺便一提, 你可以输入 w 查看有谁在当前节点上.

试着输入 pwd, 它会告诉你当前的路径, 也就是你当前在的目录. 然后输入 ls, 看看当前目录下有什么.

我们在下面对一些常用的操作做了整理, 你可以放心地尝试这些操作, 这并不会带来任何令人悲伤的后果.

  • pwd 返回当前目录.

  • ls 显示当前目录下的所有文件和目录.

  • cdcd ~ 返回 home 目录.

  • clear 清除屏幕. 如果你用惯了 MATLAB, 请特别注意它和 MATLAB 的不同.

  • cd .. 进入上一级目录.

  • cd <dir> 进入 dir. 这里的 dir 可以是绝对路径.

你也许已经知道什么是 “树”, 服务器的结构也像一棵树, 一般来说, 你只在自己的 home 中工作. 但我们还要提醒你, 这并不意味着你可以在家里为所欲为, 为了资源更合理的分配, 我们对每个用户的配额 (quota) 做了限制, 请务必查看 关于服务器各用户储存空间的 Quota, 否则后果自负.

创建删除文件

在这一节中, 我们介绍如何在服务器上创建和删除文件, 我们先列出主要涉及的命令.

  • mv <file> <new_file_path> 移动文件到新位置, file 需要带后缀, 如 test.txt.

  • mv <file> <new_file_name> 修改文件名. 由于 mv 的这两种用法, 请在命名文件时格外注意.

  • mkdir <dir> 创建目录.

  • rm <file> 删除文件.

  • rmdir <dir> 删除目录. 这个命令只能用于空目录. 非空目录的删除可以用下面的方法.

  • rm -r <dir> 删除目录.

  • cp <src_file> <dest_file> 复制 src_file 到 dest_file. file 需要带后缀如 .txt.

  • cp -r <src_dir> <dest_dir> 复制目录 (及其所有文件).

  • wget <url> 通过 url 下载文件.

  • tar -xvzf <XXX.tar.gz> 解压文件. -x表示从压缩的文件中提取文件; -v 表示压缩的过程中显示文件; -z 表示用 gzip 解压文件, 若为压缩, 则压缩后的文件名称以 .gz 结尾; -f 表示指定压缩文件.

  • tar -cvzf <XXX.tar.gz> <files> 压缩文件. -c 表示建立新的压缩文件; 其他参数的解释见上面.

  • zip file, unzip <file> 压缩或者解压 zip 文件.

使用 rm 的时候, 你必须当心. 恢复意外删除的文件是一件很麻烦的事. 当目录名和文件名重合的时候, 使用 mv 也是一件很麻烦的事.

另外, 还可以用 vi/vim 或者 VSCode 编辑文件, 具体可以参考 vi/vim 教程 或者 VSCode 教程

可以参考的学习资源:

你可以使用 man <command> 查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息. 作为一个开始, 输入 man ls, 并看看发生了什么.

https://www.runoob.com/linux/linux-command-manual.html

https://www.linuxcool.com/

文件权限管理

February 26, 2022, Jingyu Liu

Linux 系统上对文件的权限有着严格的控制, 用于如果相对某个文件执行某种操作, 必须具有对应的权限方可执行成功, 这也意味着只要别人没有相应的权限, 他们是无法访问你的文件的. 因此, 文件权限管理对于每个用户, 特别是需要合作的情况下, 是尤为重要的.

文件的权限类型一般包括读, 写, 执行, 对应字母 r, w, x. 权限的对象分拥有者 (u), 同组用户 (g), 其它用户 (o)三种.

我们可以通过命令 ls -lha 时查看当前目录下所有文件的权限. 其中-l 表示以垂直列表的形式罗列, -a 表示列出当前路径下的隐藏文件, -h 示显示文件内存大小.

此时, 会出现如 drwxr-xr-x 的内容, 他们代表的含义是:

  • 第一个字符代表目录. 若第一个字符为 d, 表示为文件夹; 若第一个字符为 -, 表示不是文件夹.

  • 之后, 有三组字符, 每组字符由三个字母组成, 它们定义了三种访问权限, 即为上面所说的 rwx, 若没有某种权限,在该权限位置为 -.

这样, 你就知道了自己 (或者其他人) 对于相应文件的权限了.

我们可以用 chmod <num> <file> 来修改权限. 这又分为两种方式, 字母法和数字法.

  • 字母法

    chmod u/g/o/a +/-/= rwx <file>, 每个参数含义如下:

    • u : 拥有者, g : 同组用户, o : 其他用户, a : 所有 (三者) .

    • + : 增加权限, - : 撤销权限, = : 设定权限.

      比如撤销拥有者的写权限可用 chmod u-w <file>, 设定同组用户只写的权限可用 chmod g=w <file>.

  • 数字法

    r,w,x 可用数字 4,2,1 来表示, 可用 chmod <num> <file> 修改权限. 如 chmod 754 <file> 相当于 chmod u=rwx, g=rx, o=r <file>.

还可以递归的对一个目录下所有子目录或文件修改权限, 这需要在后面加上参数 -R, 即 chmod <num> <dir> -R.

我们下面通过一个例子来说明这件事. 比如我要共享一个文本文件 permission.txt, 能够让所有人都阅读. 那么在创建好文件并把它移到一个大家能访问的目录的时候, 我们将其权限修改为 604 即可. 你可以在 /home/workshare/permission 看到这个文件, 且当你使用 vim 查看内容时, 在屏幕下方会显示 readonly. 你可以试试编辑这个文件并保存, 如果你在修改后成功保存, 请立刻告诉我.

我们来看另外一个例子, 如果我有一个可执行文件 helloworld, 我希望别人能够运行它, 那么我只要把它的权限改成 601 即可, 你还是可以在 /home/workshare/permission 下面找到这个文件, 请试试执行它.

最后留一个问题给读者, 在 首次登录服务器! - 服务器基本操作: SSH & SCP 中我们需要 ~/.ssh/authorized_keys 的权限是 600, 请想想这是为什么.

.bashrc 的用法

现在, 在 home 目录下输入 ls -a (或 ls --all), 你会发现目录下的所有文件,包括以 . 开头的隐含文件, 这其中就有 .bashrc. 或许你在之前就已经听说过 bash 是什么, 它是基于在 Unix 或者类 Unix 的操作系统中最常见, 或许也是最主流的终端. 简而言之, bash 是一个能解释你输入进终端程序的东西,并且基于你的输入来运行命令. 它在一定程度上支持使用脚本来定制功能,这时候就要用到 .bashrc 了.

.bashrc 是纯文本文件, 可以在终端中使用任何文本编辑器对 .bashrc 进行编辑. 比如使用 vim 来编辑 .bashrc, 只需在 bash 中输入

$ vim ~/.bashrc

.bashrc 有以下功能:

  • 自定义别名 (Aliases)

可以使用更简单的命令来优先执行带参数的命令, 语法为

alias <my_alias>='longer command'

比如, alias ll=’ls -alF’, 此时执行 ll 就相当于执行了 ls -alF, 这一命令的作用是使得你可以查看关于文件的大部分细节并显示隐藏文件, 当然, 这里的 ll 完全由你来定义.

  • 函数 (Functions)

当 Alias 无法满足你的需求时, 可以用函数功能来执行更复杂的代码, 语法为

function funct_name() {
	# code;
}

比如, 以下的命令结合了 mkdircd (还记得这两个命令的含义吗? 请参考服务器的基本操作? - Linux 服务器的基本知识). 在 bash 中输入 md folder_name 将在工作目录中创建一个名为 folder_name 的目录,并立即导航到该目录. 这里, -p 表示确认目录存在, 不存在的话就新建一个; $1 在 bash 中表示传入的第一个参数.

md () {
  mkdir -p $1
  cd $1
}

Copyright © 2020-2024 Advancedsolver Admin Team.