Useful instructions in Linux

这是第一次正经使用远程服务器跑数据,遂记录一下常用的命令,希望以后会越来越熟练!🤗

  • 查看显卡情况

    • 1️⃣ 简易版
      1
      nvidia-smi
    • 2️⃣ 更详细更美观🤩
      1
      2
      pip install nvitop
      nvitop
      nvitop的效果确实更美观,包括进程也展示的更加清楚:
      nvitop效果图
  • 查看虚拟环境列表

    1
    conda env list
  • 多人共享一个服务器,GPU资源稀缺的时候,需要进行占卡操作,确保一个人在使用 GPU 时,其他人不会干扰或抢占该资源
    如何实现占卡?编写一个脚本,在脚本中执行一个死循环,这样就可以占用 GPU 资源了。例如:

    1
    2
    3
    nvidia-smi
    export CUDA_VISIBLE_DEVICES=0 # 选择 GPU 0
    python your_script.py
  • 脱离自己的终端,继续运行脚本,我常常使用的指令是nohup,例如:

    1
    nohup python your_script.py > stdout.log 2>&1 &

    这个指令用于在后台运行一个Python脚本,同时将输出重定向到日志文件中。具体来说:

    • nohup:表示“no hang up”,用于在你关闭终端后继续运行该命令。通常,如果没有使用nohup,关闭终端后,正在运行的进程也会被终止。使用nohup可以确保即使关闭了终端,脚本仍然会继续运行。
    • python your_script.py:这是你要运行的Python脚本的命令。
    • >:重定向符号,表示将输出重定向到指定的文件。
    • stdout.log:用于存储脚本的标准输出(即通常在终端显示的输出信息)。所有标准输出会被写入这个文件中。
    • 2>&1:这是将标准错误输出(即错误信息)重定向到标准输出中,因此所有的错误信息也会被写入stdout.log中。这其中,2表示标准错误,1表示标准输出,&表示引用相同的文件描述符。
    • &:将该命令放到后台运行,即使你关闭当前的终端会话,脚本仍然会继续运行。
  • 赋予自己的脚本权限,例如:

    1
    chmod +x your_script.py

    使用chmod命令,你可以给文件赋予权限。+x表示增加执行权限,这样你就可以运行这个脚本了。同理,-x表示移除执行权限,移除之后,你无法运行这个脚本。

  • 杀死进程

    1
    2
    kill -9 pid # pid是进程的ID, kill -9 强制终止进程
    kill pid
  • 退出状态码

    • Exit 1 通常是脚本内的问题,需要检查日志。
      本小菜在分批次使用nohup执行脚本时,发现脚本总是自动退出,退出状态码为1。后来寻找发现是自己的bash文件多了一行空行,实际上是多了换行符,导致脚本无法执行🥲🥲。
    • Exit 126 通常是权限或路径问题,需要检查脚本路径和权限。
  • 查看文件夹下有多少文件

    1
    ls -1 /path/to/directory | wc -l
    • ls -1 列出目录中的每个文件和文件夹,每行显示一个名称。
    • wc -l 统计行数,即文件和文件夹的数量。
  • 从huggingface的镜像上下载文件到服务器,步骤如下图所示:
    huggingface-cli.png

    注意,在每次执行下载命令的时候都要export HF ENDPOINT=https://hf-mirror.com,要不然下载速度会巨慢无比😑

  • 查看当前的python进程

    1
    2
    ps -ef | grep python 
    ps -aux | grep python
    • ps -ef 显示的是更传统的 Unix 风格的输出,注重进程间的关系(如父子进程关系)以及命令的详细信息。例子如下所示:
      ef.png

    • ps -aux 提供了关于资源使用情况的更多信息,如 CPU 和内存占用率,且格式与 ps -ef 不同。 例子如下所示:
      aux.png
      其中,STAT 列显示了每个进程的状态,其中字母组合(如 Ssl、Sl、Rl 等)表示进程的状态和属性。以下是这些标记的含义:

      1. S: Interruptible Sleep (可中断的睡眠状态)
      2. R: Running (运行中)
      3. l: Multi-threaded (多线程)
      4. s: Session Leader (会话领导)
      5. S: Low-priority (低优先级)

      这些字母组合起来,就表示了进程的状态和属性。例如,Ssl 表示进程正在睡眠中,并且是低优先级的···

  • 查看当前机器的内存空间

    1
    free -h

    效果如下图所示:
    free.png


Useful instructions in Linux
https://august6676.github.io/2024/08/01/Useful-instructions-in-Linux/
作者
Xiaoxuan Zhou
发布于
2024年8月1日
许可协议