云服务器跑Python:Linux系统终端后台运行进程
这篇博客介绍了在Linux系统中将Python脚本放到后台运行的几种方法。首先,使用nohup命令可以在关闭终端后保持进程运行,并将输出和错误日志重定向到指定文件。其次,screen和tmux是两个终端复用器,它们允许在多个会话中运行任务,即使SSH连接断开也能保持任务继续运行,并且支持会话的恢复和管理。最后,简单地使用&符号也可以将任务放到后台。
·
方法 1:使用 nohup 命令
nohup(No Hang Up)命令用于在关闭终端后仍然运行进程,适合在SSH断开后保持后台运行的任务。
-
命令格式:
nohup python your_script.py > output.log 2>&1 & -
命令详解:
nohup:不挂起命令。即使终端关闭,程序也会继续运行。python your_script.py:运行你的Python脚本,将其替换为你实际的脚本名称,例如python train_model.py。> output.log:将程序的标准输出(通常是打印信息)重定向到output.log文件。这个文件中可以看到程序的执行信息。2>&1:将标准错误重定向到标准输出(output.log),确保输出和错误都记录到一个文件中,便于调试。&:将任务放到后台运行,使终端可以继续接收其他命令,而不会被该任务占用。
-
查看任务运行状态:
jobs:查看当前用户的所有后台任务。ps aux | grep python:查看正在运行的Python进程,确认你的脚本是否在运行。
-
结束任务:
- 使用
kill命令可以终止任务。例如,假设任务的ID为1234(可以通过ps aux查到),则可以用以下命令终止:kill 1234
- 使用
方法 2:使用 screen
screen 是一个终端复用器,可以创建多个会话,并允许任务在后台运行,即使SSH断开也不会终止会话中的程序。
-
创建
screen会话:screen -S my_sessionscreen:启动一个新的screen会话。-S my_session:为会话命名为my_session(可以自定义名称),便于之后恢复会话。
-
在
screen会话中运行脚本:- 在
screen会话内输入以下命令来运行Python脚本:python your_script.py
- 在
-
退出
screen会话,但保持任务运行:- 按下
Ctrl + A,然后按D。这会使会话“脱离”(detach),但不会终止会话内的程序。
- 按下
-
恢复
screen会话:- 重新连接到已脱离的会话:
screen -r my_session - 这会重新打开
my_session会话,允许你查看脚本的执行情况。
- 重新连接到已脱离的会话:
-
关闭会话:
- 当任务完成后,输入
exit以退出并终止该screen会话。
- 当任务完成后,输入
方法 3:使用 tmux
tmux 和 screen 类似,也是一个终端复用器,提供创建、管理多个终端会话的功能。相比screen,tmux提供更多的分屏操作,适合并行运行多个命令并保持任务运行。
-
创建
tmux会话:tmux new -s my_sessiontmux new:创建一个新的tmux会话。-s my_session:为会话命名为my_session,便于之后恢复。
-
在
tmux会话中运行脚本:- 在
tmux会话内输入以下命令运行Python脚本:python your_script.py
- 在
-
退出
tmux会话但保持任务运行:- 按下
Ctrl + B,然后按D。这会将tmux会话“脱离”,但不会终止其中的程序。
- 按下
-
恢复
tmux会话:- 使用以下命令重新连接到脱离的会话:
tmux attach -t my_session - 这会重新打开名为
my_session的会话,使你可以继续查看任务的执行状态。
- 使用以下命令重新连接到脱离的会话:
-
关闭会话:
- 当任务完成后,输入
exit以退出并关闭tmux会话。
- 当任务完成后,输入
方法 4:使用 & 符号后台运行
简单地将&放在命令的末尾,可以将任务放到后台运行,但这种方式在SSH断开后任务可能会终止,不适合长时间运行的任务。
-
命令格式:
python your_script.py & -
命令详解:
&:将任务放到后台,当前终端可以继续接受其他命令。
-
查看后台进程:
- 使用
jobs命令查看所有后台任务,输出类似:[1]+ Running python your_script.py & - 使用
ps aux | grep python查看正在运行的Python进程,确认你的任务是否在后台运行。
- 使用
-
终止任务:
- 结束任务的方法是使用
kill命令,可以根据ps aux查询到的进程ID来终止任务:kill 1234 # 将1234替换为实际的进程ID
- 结束任务的方法是使用
总结
| 方法 | 优势 | 适用场景 |
|---|---|---|
nohup |
轻量级,简单实用,支持日志输出 | 适合单个任务的后台运行 |
screen |
支持多会话,便于后台管理 | 需要管理多个任务,或需要查看输出 |
tmux |
支持分屏,功能强大 | 需要并行任务,或进行多窗口操作 |
& |
最简单的后台运行方式 | 短期任务,不需要SSH断开保持运行 |
使用这些方法,可以在服务器上稳定地运行深度学习任务,并在需要时查看运行状态或调试。
更多推荐
所有评论(0)