在 Ubuntu 中,出于安全考虑,默认情况下root用户是被禁用的。当你使用 sudo 或 sudo su 成为 root 用户时,有时可能会发现某些方便的功能,例如 tab 键自动补全,不工作。这可能是由于几个原因:
缺少bash-completion
包:
bash-completion
是一个用于辅助 Bash 的交互式命令行操作的实用程序包。确保你安装了它:
sudo apt-get install bash-completion
.bashrc 文件:
默认情况下,/root/.bashrc 可能没有启用自动补全。要检查并启用它,首先编辑 /root/.bashrc:
sudo vim /root/.bashrc
查找以下行:
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
# . /etc/bash_completion
#fi
去掉前面的 #
注释符号,然后保存文件并退出。
然后,重新加载 .bashrc:
source /root/.bashrc
安全设置:
如果上述建议仍然无效,可能是因为某些安全设置或策略阻止了 root 用户的某些功能。
建议始终小心谨慎地使用 root 用户,因为任何误操作都可能对系统造成不可逆的损害。最佳实践是尽量使用普通用户账户,并仅在真正需要时使用 sudo 命令。
Linux默认的多任务机制决定了进程是以会话的形式存在的,当终端断开时任务就会终端
而对于远程ssh而言,在网络断开的情况下是会默认断开终端的,因此导致会话结束
然而,在进行较大的模型训练时,往往需要耗费长达数小时的时间,而又不能保证网络在数小时内一直保持稳定状态,因此需要引入后台运行的机制
tmux
提供了一个保持会话的功能,能够让任务一直在后台运行,以确保在 SSH 连接中启动的长时间运行的任务(如模型训练)在 SSH 会话断开后继续运行
以下是使用和tmux
的简单指南:
首先需要在安装tmux
:
sudo apt-get install tmux
启动一个新的 tmux 会话:
tmux new -s your_session_name
在此会话中开始你的模型训练。
退出 tmux
会话并保持它在后台运行,按下 Ctrl + B
然后按 D
。
要重新连接到此 tmux
会话,使用:
tmux attach -t your_session_name
通过上述方式,即使你的 SSH
会话断开或你的终端关闭,你在 tmux
中启动的模型训练也会继续运行。当你再次连接到服务器时,可以重新连接到这些会话,查看训练进度。
在 Ubuntu 系统中,可以使用多种方法和工具来查看 GPU 的使用情况。对于 NVIDIA 显卡,最常用的工具是 nvidia-smi。以下是一些方法:
使用 nvidia-smi
:
如果你尚未安装 NVIDIA 驱动,请首先安装它。
使用 nvidia-smi
命令可以查看 GPU 的状态和使用情况:
nvidia-smi
这个命令将显示 GPU 的型号、总内存、已用内存、GPU 使用率、温度等信息。
使用 nvtop
:
nvtop
是一个基于命令行的界面,用于监视 NVIDIA GPUs 的使用情况。它类似于 htop,但专门用于 NVIDIA GPU。
安装 nvtop:
sudo apt install nvtop
运行 nvtop
:
nvtop
这将打开一个命令行界面,显示 GPU 使用情况、内存使用情况等信息。
在执行训练任务或者测试任务是,终端输出的信息是帮我我们判断模型好坏的重要依据,但是终端输出的信息在ssh断开后就会消失,因此需要将其存入文件中方便查看
可以使用重定向操作符 > 或 >> 来把输出保存到文件中
使用 > 重定向到一个新文件:
如果文件不存在,这将创建一个新文件。如果文件已经存在,这将覆盖该文件。
python your_program.py > output.txt
使用 >> 附加到一个文件:
如果文件不存在,这将创建一个新文件。如果文件已经存在,这将在文件的末尾追加输出。
python your_program.py >> output.txt
如果你的程序有标准错误输出(例如错误消息)并且你也想捕获这些,你可以这样做:
同时重定向标准输出和标准错误:
python your_program.py > output.txt 2>&1
这样,标准输出(stdout)和标准错误输出(stderr)都会被重定向到 output.txt 文件中。