目录
[1. nohup 命令:](#1. nohup 命令:)
[2. tmux 或 screen:](#2. tmux 或 screen:)
[3 final shell 断开后服务器如何继续执行令?](#3 final shell 断开后服务器如何继续执行令?)
[方法一:使用 nohup 命令](#方法一:使用 nohup 命令)
[4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务](#4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务)
[(1) 查看后台作业:](#(1) 查看后台作业:)
[(3) 将作业放到后台:](#(3) 将作业放到后台:)
[5 如果你使用了 nohup 或者在终端关闭后重新连接到服务器,如何管理后台任务?](#5 如果你使用了 nohup 或者在终端关闭后重新连接到服务器,如何管理后台任务?)
[(1)ps 命令:](#(1)ps 命令:)
[(2)pgrep 命令:](#(2)pgrep 命令:)
[(3)pkill 命令:](#(3)pkill 命令:)
[(4)tmux 或 screen:](#(4)tmux 或 screen:)
如果你使用SSH连接到Linux服务器,并且希望在断开SSH连接后继续运行程序,例如深度学习训练模型需要长时间周期进行, 在这期间如果退出服务器客户端或者网页连接,服务器Linux系统会自动关闭所有进程,程序也会随之终止运行(被挂起),你可以使用以下几种方法保证在客户端ssh断开连接后,服务器执行的命令不中断:
1. nohup 命令:
使用nohup
命令可以在后台运行程序,而且在SSH连接断开后仍然保持运行。示例:
nohup your_command &
这会将your_command
命令在后台运行,并将输出写入nohup.out
文件。你可以使用jobs
命令来查看后台任务,或者使用ps aux | grep your_command
来查看特定命令的运行情况。
2. tmux 或 screen:
使用tmux
或screen
是一种更强大的方法,它允许你创建和管理终端会话,而不受SSH连接断开的影响。你可以在tmux
或screen
会话中运行你的程序,然后在需要的时候重新连接到会话。示例:
-
对于 tmux:
tmux
在 tmux 会话中运行你的程序
your_command
按下 Ctrl-b,然后按下 d 来断开 tmux 会话
对于 screen:
screen
# 在 screen 会话中运行你的程序
your_command
# 按下 Ctrl-a,然后按下 d 来断开 screen 会话
选择使用
nohup
、tmux
或screen
取决于你的偏好和需求。tmux
和screen
还提供了许多其他功能,例如在多个窗格中同时运行不同的命令。
3 final shell 断开后服务器如何继续执行令?
在Linux中,当你在终端中执行一个命令,并且希望在终端关闭后该命令继续执行,你可以使用 nohup
命令,或者将命令放在后台执行。下面是两种常用的方法:
方法一:使用 nohup
命令
nohup your_command > output.log 2>&1 &
your_command
是你要执行的命令。output.log
是命令输出的日志文件,可以省略。
此命令将 your_command
在后台执行,并将输出写入 output.log
文件。nohup
命令会忽略挂断(hangup)信号,从而使命令在终端关闭后继续执行。
方法二:将命令放在后台执行
your_command &
在命令末尾加上 &
符号,将命令放在后台执行。这样在终端关闭后,命令仍然在后台继续执行。你可以使用 jobs
命令查看后台任务。
请注意,这两种方法都可以在终端关闭后使命令继续执行,但在某些情况下,你可能还需要考虑输出和错误信息的重定向,以及可能产生的日志。
4 你可以使用 jobs
命令查看当前终端中正在后台运行的任务
这个命令会列出当前终端会话中的作业(jobs)信息,包括作业编号、作业状态以及相关的命令。以下是一些常用的 jobs
命令选项:
(1) 查看后台作业:
jobs
(2)将作业移动到前台:
fg %job_number
使用这个命令,你可以将指定编号的作业移动到前台运行。
(3) 将作业放到后台:
bg %job_number
这个命令可以将指定编号的作业从前台移到后台运行。
(4)终止后台作业
kill %job_number
使用这个命令可以终止指定编号的后台作业。
在上述命令中,%job_number 是作业的编号,可以使用 jobs 命令查看。
请注意,这些命令在当前终端会话中有效。如果你使用了 nohup
或者在终端关闭后重新连接到服务器,你可能需要使用其他方式来管理后台任务,比如使用 ps
或者其他作业控制工具。
5 如果你使用了 nohup
或者在终端关闭后重新连接到服务器,如何管理后台任务?
如果你在终端关闭后重新连接到服务器,可能需要使用其他工具来管理后台任务,因为 jobs
命令只能查看当前终端会话中的作业。以下是一些其他用于管理后台任务的工具和命令:
(1)ps 命令:
使用 ps
命令可以列出当前正在运行的进程。你可以使用以下命令来查找特定的进程:
ps aux | grep your_command
这会列出包含 your_command
的所有进程。通过查看进程的PID(进程ID),你可以确定后台任务的运行情况。
(2)pgrep 命令:
pgrep
命令可以通过进程名来查找进程的PID。例如
pgrep your_command
这将返回包含 your_command
的所有进程的PID。
(3)pkill 命令:
使用 pkill
命令可以通过进程名终止进程。例如:
pkill your_command
这将终止所有包含 your_command
的进程。
(4)tmux 或 screen:
如果你在使用 tmux
或 screen
,你可以使用相应的命令来查看和管理后台会话。例如,在 tmux
中,你可以使用以下命令:
tmux list-sessions
这会列出所有 tmux
会话,你可以重新连接到其中一个会话以查看和管理后台任务。
这些命令和工具可以帮助你在终端关闭后重新连接到服务器时查看和管理之前在后台运行的任务。