[06Linux和常用命令 - Linux] 01 - Linux 操作 | InternLM 实战营笔记

22 阅读9分钟

这一篇简单总结 Linux 的常用命令,作为 LLM 入门调试的入门级教程总结。

1 Linux 常用命令

1.1 权限管理

1.2 文件管理

在 Linux 中,常见的文件管理操作包括:

  • 创建文件:可以使用 touch 命令创建空文件。
  • 创建目录:使用 mkdir 命令。
  • 目录切换:使用cd命令。
  • 显示所在目录:使用pwd命令。
  • 查看文件内容:如使用 cat 直接显示文件全部内容,moreless 可以分页查看。
  • 编辑文件:如 vivim 等编辑器。
  • 复制文件:用 cp 命令。
  • 创建文件链接:用ln命令。
  • 移动文件:通过 mv 命令。
  • 删除文件:使用 rm 命令。
  • 删除目录rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
  • 查找文件:可以用 find 命令。
  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。
  • 处理文件:进行复杂的文件操作,可以使用sed命令。

这里介绍几种我们在课程中会使用到的命令:

1.2.1 touch 创建文件

touch file_name.txt

1.2.2 mkdir 创建文件夹

mkdir dir_name

1.2.3 cd 修改路径

路径描述支持绝对路径和相对路径。绝对路径以"/"开头,相对路径中"."表示当前目录,".."表示上一级目录。

cd target_path

1.2.4 pwd 查看当前所在的目录

pwd

1.2.5 cat 查看文件里面的内容

cat命令可以查看文件里面的内容,更多的使用命令可以使用--help命令查看:

  • -a,--show-all等价于-vET
  • -b,--number-non空白数非空输出行,覆盖-n
  • -e, 等价于-vE
  • -E,--show-结束显示$在每一行的末尾
  • -n,--number编号所有输出行
  • -s,--crick-空白抑制重复的空输出行
  • -t等价于-vT
  • -t,--show-tabs将制表符显示为^I
  • -v,--show非打印使用^和M-表示法,LFD和TAB除外

1.2.6 vi 和 vim 编辑文档

vim 同样是老生常谈的工具,全面的介绍有很多,这里仅列出部分常用命令,具体可参考其他文章。

vim使用教程-CSDN博客

vim 包含3种模式:命令模式、编辑模式、末行模式。

命令模式下可以通过 aio 进入编辑模式;其中 a 为 append 的缩写,为向后追加;i 为insert,即插入;o 为 在当前行后面插入空行。ESC 键可以从编辑模式回到命令模式。

命令模式下输入 : 会进入末行模式。

命令模式下的常用命令:

  • dd:删除一行
  • yy:复制一行
  • p:粘贴
  • ZZ:保存退出

末行模式下的常用命令:

  • :wq 保存退出
  • :q! 不保存退出
  • :w 保存
  • :/ 查找

1.2.7 cp 复制 和 ln 软连接

cp 用来将一个文件或者目录复制到另一个目录。

  • 复制文件:cp source_file target_file
  • 复制目录:cp -r source_dir target_dir

对于大模型而言,复制会占用大量的磁盘空间,因此通常使用ln命令。linux中链接分为两种 : 硬链接 (hard link) 与软链接 (symbolic link) ,硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

所以一般使用软连接,常用的使用方法如下:

ln [参数] [源文件或目录] [目标文件或目录]

参数如下:

  • -s:创建软链接(符号链接)也是最常用的;
  • -f:强制执行,覆盖已存在的目标文件;
  • -i:交互模式,文件存在则提示用户是否覆盖;
  • -n:把符号链接视为一般目录;
  • -v:显示详细的处理过程。

1.2.8 mv 移动 和 rm 删除

mv用来移动文件或目录,同时可以进行重命名。rm用来删除文件或者目录。

mv 命令常用参数:

  • -i:交互模式,覆盖前询问
  • -f:强制覆盖
  • -u:只在源文件比目标文件新时才进行移动

使用示例:

  • mv file1.txt dir1/:将文件 file1.txt 移动到目录 dir1
  • mv file1.txt file2.txt:将文件 file1.txt 重命名为 file2.txt

rm 命令常用参数:

  • -i:交互模式,删除前询问
  • -f:强制删除,忽略不存在的文件,不提示确认
  • -r:递归删除目录及其内容

使用示例:

  • rm file.txt:删除文件 file.txt
  • rm -r dir1/:递归删除目录 dir1 及其所有内容

删除目录也可以使用 rmdir

1.2.9 find 搜索

find命令是Linux系统中一个强大的文件搜索工具,它可以在指定的目录及其子目录中查找符合条件的文件或目录,并执行相应的操作。

常见用法:

  1. 按文件名查找:使用-name选项按照文件名查找文件
    • find /path/to/directory -name "file.txt"将在指定目录及其子目录中查找名为file.txt的文件
  2. 按文件类型查找:使用-type选项按照文件类型查找文件
    • find /path/to/directory -type f将查找指定目录及其子目录中的所有普通文件
  3. 按文件大小查找:使用-size选项按照文件大小查找文件
    • find /path/to/directory -size +100M将查找指定目录及其子目录中大于100MB的文件
  4. 按修改时间查找:使用-mtime-atime-ctime选项按照文件的修改时间、访问时间或状态更改时间查找文件
    • find /path/to/directory -mtime -7将查找指定目录及其子目录中在7天内修改过的文件
  5. 按文件权限查找:使用-perm选项按照文件权限查找文件
    • find /path/to/directory -perm 755将查找指定目录及其子目录中权限为755的文件
  6. 按用户或组查找:使用-user-group选项按照文件的所有者或所属组查找文件
    • find /path/to/directory -user username将查找指定目录及其子目录中属于用户username的文件
  7. 执行操作:使用-exec选项可以对找到的文件执行相应的操作
    • find /path/to/directory -name "*.txt" -exec rm {} ;将删除找到的所有以.txt结尾的文件

1.2.10 ls 显示详细信息

ls命令可以用来列出目录的内容以及详细信息

常用参数:

  • -a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)
  • -l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等
  • -h:与-l结合使用,以人类可读的方式显示文件大小(如KMG等)
  • -R:递归列出子目录的内容
  • -t:按文件修改时间排序显示

1.2.11 sed

sed命令是一种流编辑器,主要用于文本处理,在处理复杂的文件操作时经常用到,在后续的课程中会使用到,sed命令常用参数及使用示例如下:

常用参数:

  • a:在当前行的下一行添加指定的文本字符串。
  • c:用指定的文本字符串替换指定范围内的行。
  • d:删除指定的行。
  • i:在当前行的上一行添加指定的文本字符串。
  • p:打印经过选择的行。通常与 -n 参数一起使用,只打印匹配的行。
  • s:使用正则表达式进行文本替换。例如,s/old/new/g 将所有 "InternLM" 替换为 "InternLM yyds"。

参数说明:

  • -e<script>--expression=<script>:直接在命令行中指定脚本进行文本处理。
  • -f<script文件>--file=<script文件>:从指定的脚本文件中读取脚本进行文本处理。
  • -n--quiet--silent:仅打印经过脚本处理后的输出结果,不打印未匹配的行。

1.2.12 grep

grep是一个强大的文本搜索工具。常用参数如下:

  • -i:忽略大小写进行搜索。
  • -v:反转匹配,即显示不匹配的行。
  • -n:显示行号。
  • -c:统计匹配的行数。

2 Linux 进程管理

进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:

  • ps:查看正在运行的进程
  • top:动态显示正在运行的进程
  • pstree:树状查看正在运行的进程
  • pgrep:用于查找进程
  • nice:更改进程的优先级
  • jobs:显示进程的相关信息
  • bgfg:将进程调入后台
  • kill:杀死进程

在大模型训练中还有一个特殊的进程查看命令:

  • nvidia-smi:快速查看 GPU 状态、使用情况、温度、内存使用情况、电源使用情况以及运行在 GPU 上的进程等信息

以下是一些示例:

ps aux  # 显示系统所有进程的详细信息
top  # 启动top命令,动态显示进程信息
pstree  # 显示进程树
pgrep -u username  # 查找特定用户的所有进程
nice -n 10 long-running-command  # 以较低优先级运行一个长时间运行的命令
jobs  # 列出当前会话的后台作业
bg  # 将最近一个挂起的作业放到后台运行
fg  # 将后台作业调到前台运行
kill PID  # 杀死指定的进程ID
kill -9 PID  # 强制杀死进程

nvidia-smi  # 显示 GPU 状态的摘要信息
nvidia-smi -l 1  # 显示详细的 GPU 状态信息,每1秒更新一次状态信息
nvidia-smi pmon  # 列出所有 GPU 并显示它们的 PID 和进程名称
nvidia-smi --id=0 --ex_pid=12345  # 强制结束 GPU ID 为 0 上的 PID 为 12345 的进程
nvidia-smi -pm 1  # 为所有 GPU 设置为性能模式
nvidia-smi -i 0 -pm 1  # 将 ID 为 0 的 GPU设置为性能模式
nvidia-smi --id=0 -r  # 重启 ID 为 0 的 GPU

image.png

3 TMUX

TMUX 是一个终端多路复用器。它可以在多个终端之间轻松切换,分离它们(这不会杀死终端,它们继续在后台运行)和将它们重新连接到其他终端中。

使用lsb_release -a 命令查看ubuntu的系统信息

image.png

使用apt install tmux命令安装tmux,安装完成以后可以使用tmux命令就可以使用tmux了,如果想退出tmux可以使用“Ctrl+d”快捷键。

常用的命令有:

  • tmux new -s [名称]:创建tmux终端
  • tmux attach -t [名称]:进入已创建的终端

可以使用Ctrl+bd两步分离当前会话。

具体的使用方法可以查看:

www.ruanyifeng.com/blog/2019/1…