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

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

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

Last update: Sept 9, 2024

理解服务器的基本结构

使用服务器和使用个人电脑的基本操作并没有太大区别。服务器为你提供了远程计算资源,你只需要熟悉它的环境,便可以开始使用。下面将带你了解一些基本操作,帮助你快速上手。

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

[aduser@loginNode ~]$

~ 表示 home 目录,也称为家目录。它是用户的私人工作区,用于存放个人文件。虽然只有你可以修改和查看这个目录中的文件,但服务器管理员仍然有权限访问所有用户的 home 目录。

aduser@loginNode 表示一个叫 aduser 的用户在 loginNode 上. 顺便一提, 你可以输入 w 查看有谁在当前节点上.

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

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

  • pwd 返回当前目录.

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

  • cdcd ~ 返回 home 目录.

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

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

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

为了合理分配服务器资源,我们对每个用户的存储空间进行了限制(配额)。请务必注意配额的限制,超出配额可能会导致无法保存新文件。更多关于配额的信息,请查看 关于服务器各用户储存空间的 Quota.

创建删除文件

在这一节中, 我们介绍如何在服务器上创建和删除文件.

  • mv <file> <new_file_path>:将文件移动到新位置,路径可以是相对或绝对路径。

  • 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 文件.

可以参考的学习资源:

你可以使用 man <command> 查看 Linux 中的指令帮助,帮助你了解某个命令的详细用法。例如,输入以下命令来查看 ls 命令的用法:

man ls

此外,你可以参考以下资源来进一步学习 Linux 命令和操作:

Linux 命令手册:详细介绍各种常用的 Linux 命令。

Linux 酷:提供关于 Linux 操作的丰富教程和案例。

文件权限管理

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 4 读取
w 2 写入
x 1 执行

可以递归地对一个目录及其所有子目录和文件修改权限,使用 chmod -R 命令。例如:

chmod -R 755 <dir>

请注意,递归修改权限可能会影响所有子文件和子目录,导致文件系统权限混乱。因此在对敏感或系统目录使用递归权限修改时要格外小心。

我们通过以下例子来说明文件权限的设置。

假设我要共享一个文本文件 permission.txt,并希望所有人都能够读取它。在创建该文件并将它移动到一个共享目录后(例如 /home/workshare/permission),我们将其权限修改为 604。这意味着文件拥有者可以读取和写入,而其他人只能读取。你可以在 /home/workshare/permission 目录下找到该文件,并使用 vim 打开查看。在屏幕的下方,你会看到 readonly 标志,表示该文件为只读状态。你可以尝试编辑这个文件并保存,就会发现不能保存。

再来看另一个例子。如果我有一个可执行文件 helloworld,并希望其他人能够运行它,但不允许修改或读取其内容,那么我将其权限设置为 601。这意味着文件拥有者有读写权限,其他用户只能执行该文件。你可以在 /home/workshare/permission 目录下找到这个文件,尝试执行它。

最后,给读者留一个问题。在 首次登录服务器! - 服务器基本操作: SSH & SCP 中,我们要求 ~/.ssh/authorized_keys 的权限为 600。请思考一下,为什么我们需要设置这个特定的权限?提示:这个文件的安全性对 SSH 登录非常重要。

.bashrc 的用法

home 目录下输入 ls -a (或 ls --all) 你会发现目录下的所有文件,包括以 . 开头的隐藏文件,其中 .bashrc 是一个非常重要的配置文件。修改 .bashrc 可以自定义 shell 的行为。在编辑完成 .bashrc 后,需要执行以下命令使其生效:

source ~/.bashrc

这会重新加载 .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.