注意
本文档适用于 Ceph 的开发版本。
cephfs-shell -- 与 CephFS 交互的类 Shell 工具
概要
描述
CephFS Shell 提供了可直接与 Ceph 文件系统交互的类 shell 命令。
该工具既可以在交互模式下使用,也可以在非交互模式下使用。在前者模式下,cephfs-shell 会打开一个 shell 会话,在给定命令执行完成后,它会打印提示符并无限期等待。当 shell 会话结束时,cephfs-shell 会以最后执行命令的返回值退出。在非交互模式下,cephfs-shell 会执行一个命令,并在命令执行完成后立即退出,退出时返回该命令的返回值。
CephFS Shell 的行为可以通过 cephfs-shell.conf 进行调整。有关详细信息,请参阅 CephFS Shell 配置文件。
选项
- -b, --batch FILE
批处理文件路径。
- -c, --config FILE
cephfs-shell.conf 的路径
- -f, --fs FS
要挂载的文件系统名称。
- -t, --test FILE
用于测试的 FILE 中的记录文件路径
注意
运行 cephfs-shell 需要最新版本的 cmd2 模块。如果 CephFS 是通过源代码安装的,请在构建目录中执行 cephfs-shell。也可以使用 virtualenv 如下执行:
[build]$ python3 -m venv venv && source venv/bin/activate && pip3 install cmd2 colorama
[build]$ source vstart_environment.sh && source venv/bin/activate && python3 ../src/tools/cephfs/shell/cephfs-shell
命令
注意
除了 Ceph 文件系统,CephFS Shell 命令还可以直接与本地文件系统交互。为此,必须在 CephFS Shell 命令前加上 !(感叹号)。
用法
!<cephfs_shell_command>
例如,
CephFS:~/>>> !ls # Lists the local file system directory contents.
CephFS:~/>>> ls # Lists the Ceph File System directory contents.
mkdir
创建目录(如果它们尚不存在)。
用法
mkdir [-option] <directory>…
directory - 要创建的目录名称。
- 选项
- -m MODE
设置新目录的访问模式。
- -p, --parent
根据需要创建父目录。指定此选项时,如果目录已存在,则不会报告错误。
put
将文件/目录从本地文件系统复制到 Ceph 文件系统。
用法
put [options] <source_path> <target_path>
- source_path - 要复制到 cephfs 的本地文件/目录路径。
如果 . 则复制本地工作目录中的所有文件/目录。
如果 - 则从 stdin 读取输入。
- target_path - 文件/目录要复制到的远程目录路径。
如果 . 则文件/目录被复制到远程工作目录。
- 选项
- -f, --force
如果目标已存在,则覆盖目标。
get
将文件从 Ceph 文件系统复制到本地文件系统。
用法
get [options] <source_path> <target_path>
- source_path - 要复制到本地文件系统的远程文件/目录路径。
如果 . 则复制远程工作目录中的所有文件/目录。
- target_path - 文件/目录要复制到的本地目录路径。
如果 . 则文件/目录被复制到本地工作目录。
如果 - 则将输出写入 stdout。
- 选项
- -f, --force
如果目标已存在,则覆盖目标。
ls
列出当前工作目录中的所有文件和目录。
用法
ls [option] [directory]…
- directory - 要列出其文件/目录的目录名称。
默认情况下,列出当前工作目录的文件/目录。
- 选项
- -l, --long
以长格式列出 - 显示权限
- -r, --reverse
反向排序
- -H
易读格式
- -a, -all
忽略以 . 开头的条目
- -S
按文件大小排序
cat
连接文件并打印到标准输出
用法
cat <file>….
file - 文件名
ln
为现有文件添加硬链接,或为现有文件或目录创建符号链接。
用法
ln [options] <target> [link_name]
target - 要创建链接的文件/目录
link_name - 指向 target 的链接名称 link_name
- 选项
- -s, --symbolic
创建符号链接
- -v, --verbose
打印每个链接文件的名称
- -f, --force
强制创建链接/符号链接
cd
更改当前工作目录。
用法
cd [directory]
- directory - 路径/目录名称。如果未提及目录,则更改为根目录。
如果为 ‘.’,则移至当前目录的父目录。
cwd
获取当前工作目录。
用法
cwd
quit/Ctrl + D
关闭 shell。
chmod
更改文件/目录的权限。
用法
chmod <mode> <file/directory>
mv
将文件/目录从源移动到目标。
用法
mv <source_path> <destination_path>
rmdir
删除目录。
用法
rmdir <directory_name>…..
rm
删除文件。
用法
rm <file_name/pattern>…
write
创建并写入文件。
用法
write <file_name> <Enter Data> Ctrl+D Exit。
lls
列出指定目录中的所有文件和目录。如果未提及路径,则列出当前本地目录的文件和目录
用法
lls <path>…..
lcd
进入给定的本地目录。
用法
lcd <path>
lpwd
打印当前本地目录的绝对路径。
用法
lpwd
umask
设置和获取文件模式创建掩码
用法
umask [mode]
alias
定义或显示别名
用法
alias [name] | [<name> <value>]
name - 要查找、添加或替换的别名名称
value - 别名将解析为什么(如果添加或替换),这可以包含空格,无需加引号
run_pyscript
在控制台内运行 python 脚本文件
用法
run_pyscript <script_path> [script_arguments]
可以在此脚本中使用 cmd(“your command”) 执行控制台命令。但是,您不能在此脚本中运行嵌套的“py”或“pyscript”命令。包含空格的路径或参数必须用引号括起来。
注意
对于 cmd2 版本 0.9.13 或更低版本,此命令可用作 pyscript。
py
调用 python 命令、shell 或脚本
用法
py <command>:执行 Python 命令。py:进入交互式 Python 模式。
shortcuts
列出可用的快捷方式(别名)
用法
shortcuts
history
查看、运行、编辑和保存以前输入的命令。
用法
history [-h] [-r | -e | -s | -o FILE | -t TRANSCRIPT] [arg]
- 选项
- -h
显示此帮助消息并退出
- -r
运行选定的历史记录项
- -e
编辑然后运行选定的历史记录项
- -s
脚本格式;无分隔线
- -o FILE
将命令输出到脚本文件
- -t TRANSCRIPT
将命令和结果输出到记录文件
unalias
取消设置别名
用法
unalias [-a] name [name …]
name - 要取消设置的别名名称
- 选项
- -a
删除所有别名定义
set
设置可设置的参数或显示参数的当前设置。
用法
set [-h] [-a] [-l] [settable [settable …]]
不带参数调用以获取可设置参数及其值的列表。
- 选项
- -h
显示此帮助消息并退出
- -a
也显示只读设置
- -l
描述参数的功能
edit
在文本编辑器中编辑文件。
用法
edit [file_path]
file_path - 要在编辑器中打开的文件路径
run_script
运行脚本文件中的命令,该文件编码为 ASCII 或 UTF-8 文本。脚本中的每个命令都应由换行符分隔。
用法
run_script <file_path>
file_path - 指向脚本的文件路径
注意
对于 cmd2 版本 0.9.13 或更低版本,此命令可用作 load。
shell
执行命令,就像在操作系统提示符下一样。
用法
shell <command> [arguments]
locate
在文件系统中查找项目
用法
locate [options] <name>
- 选项
- -c
计算找到的项目数
- -i
忽略大小写
stat
显示文件状态。
用法
stat [-h] <file_name> [file_name …]
- 选项
- -h
显示帮助消息
snap
创建或删除快照
用法
snap {create|delete} <snap_name> <dir_name>
snap_name - 要创建或删除的快照名称
dir_name - 应在其下创建或删除快照的目录
setxattr
设置文件的扩展属性
用法
setxattr [-h] <path> <name> <value>
path - 文件路径
name - 要获取或设置的扩展属性名称
value - 要设置的扩展属性值
- 选项
- -h, --help
显示帮助消息
getxattr
获取与路径关联的名称的扩展属性值
用法
getxattr [-h] <path> <name>
path - 文件路径
name - 要获取或设置的扩展属性名称
- 选项
- -h, --help
显示帮助消息
listxattr
列出与路径关联的扩展属性名称
用法
listxattr [-h] <path>
path - 文件路径
- 选项
- -h, --help
显示帮助消息
df
显示可用磁盘空间量
用法
df [-h] [file [file …]]
file - 文件名
- 选项
- -h, --help
显示帮助消息
du
显示目录的磁盘使用情况
用法
du [-h] [-r] [paths [paths …]]
paths - 目录名称
- 选项
- -h, --help
显示帮助消息
- -r
所有目录的递归磁盘使用情况
quota
目录的配额管理
用法
quota [-h] [--max_bytes [MAX_BYTES]] [--max_files [MAX_FILES]] {get,set} path
{get,set} - 配额操作类型。
path - 目录名称。
- 选项
- -h, --help
显示帮助消息
- --max_bytes MAX_BYTES
设置此目录下数据的最大累积大小
- --max_files MAX_FILES
设置此目录树下的文件总数
CephFS Shell 配置文件
默认情况下,CephFS Shell 会在环境变量 CEPHFS_SHELL_CONF 提供的路径中查找 cephfs-shell.conf,然后在其用户主目录 (~/.cephfs-shell.conf) 中查找。
目前,CephFS Shell 继承了其依赖项 cmd2 的所有选项。因此,这些选项可能会随您系统上安装的 cmd2 版本而异。有关这些选项的描述,请参阅 cmd2 文档。
以下是 cephfs-shell.conf 示例
[cephfs-shell]
prompt = CephFS:~/>>>
continuation_prompt = >
quiet = False
timing = False
colors = True
debug = False
abbrev = False
autorun_on_edit = False
echo = False
editor = vim
feedback_to_output = False
locals_in_py = True
退出代码
cephfs shell 返回以下退出代码
错误类型 |
退出代码 |
|---|---|
杂项 |
1 |
键盘中断 |
2 |
操作不允许 |
3 |
权限被拒绝 |
4 |
无此文件或目录 |
5 |
I/O 错误 |
6 |
设备上没有剩余空间 |
7 |
文件已存在 |
8 |
无可用数据 |
9 |
无效参数 |
10 |
传输端点不支持此操作 |
11 |
范围错误 |
12 |
操作将阻塞 |
13 |
目录非空 |
14 |
不是目录 |
15 |
超出磁盘配额 |
16 |
管道损坏 |
17 |
传输端点关闭后无法发送 |
18 |
连接中止 |
19 |
连接被拒绝 |
20 |
连接重置 |
21 |
函数调用被中断 |
22 |
文件
~/.cephfs-shell.conf