通过ssh连接linux终端,执行python任务,关闭终端后python就中断运行了,如何保持运行?

本文发布日期:24-04-30 04:23:05  浏览次数:201

可以使用工具如nohup或者screen来保持你的Python任务在后台持续运行,即使你关闭了SSH连接。

nohup命令:
使用nohup命令可以让你的程序在后台运行,并且不受SSH连接的影响。示例:

nohup python your_script.py &

这将会在后台运行your_script.py,即使你关闭SSH连接,它也会继续运行。
screen命令:
screen是一个终端复用程序,它可以创建多个终端会话,并且你可以在这些会话之间切换。使用screen命令,你可以在一个会话中运行你的Python程序,然后在需要时分离该会话,这样你就可以关闭SSH连接而不中断程序的运行。示例:
开启一个新的screen会话:

screen -S mysession

在这个会话中运行Python程序:

python your_script.py

按下 Ctrl + A,然后按下 Ctrl + D 来分离会话。
当你想要重新连接到这个会话时,输入:

screen -r mysession

这两种方法都可以让你的Python程序在后台持续运行,不受SSH连接的影响。


推荐使用screen命令

要关闭特定的 screen 会话,你需要知道该会话的会话 ID。你可以使用以下步骤关闭特定的 screen 会话:

查找会话 ID: 使用以下命令列出所有的 screen 会话以及它们的会话 ID:

screen -ls

找到你想要关闭的会话的会话 ID。
关闭会话: 使用以下命令关闭特定的 screen 会话,将 [session_ID] 替换为你想要关闭的会话的会话 ID:

screen -X -S [session_ID] quit

或者使用会话名称关闭会话,将 [session_name] 替换为你想要关闭的会话的名称:

screen -X -S [session_name] quit

这样就会关闭指定的 screen 会话。确保在执行此命令之前没有重要的工作正在进行,并且确实希望关闭指定的会话。

file


要关闭所有 screen 会话,你可以使用以下命令:

screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill

这条命令的含义是:

  1. screen -ls:列出当前所有的 screen 会话。
  2. grep pts:过滤出使用 pts(伪终端会话)的会话。
  3. cut -d. -f1:截取会话列表中的第一个字段,即会话的 ID。
  4. awk '{print $1}':打印出每个会话的 ID。
  5. xargs kill:使用 kill 命令关闭所有获取到的会话。

请注意,这个命令将关闭所有 screen 会话,包括你当前正在使用的会话。确保在执行此命令之前没有重要的工作正在进行,并且确实希望关闭所有会话。