Ubuntu服务器关机后继续执行命令的三种方案

 更新时间:2026年01月27日 08:50:29   作者:迎风斯黄  
文章介绍了三种在电脑关闭后让远程命令持续执行的方法:nohup、tmux和systemd,nohup是最简单的后台执行方式,但不支持交互,tmux是最灵活的交互式解决方案,可以恢复会话,systemd是最稳定的自动化守护进程,适用于长期任务,需要的朋友可以参考下

为什么关掉电脑后命令会中断?

当我们用 ssh 登录服务器时,远程命令实际上依附在当前 SSH 会话 上。

如果关闭电脑、断开连接或退出终端,所有在当前会话中运行的进程(除非被特别“脱离”)都会被系统回收。

例如:

ssh ubuntu@myserver
docker compose pull

一旦你关闭笔记本或断网,docker compose pull 就会被终止。

目标:让任务“独立运行”

我们希望命令即使在你:

  • 关闭本地电脑
  • 断开 SSH
  • 甚至重启服务器后

依然能够自动或持续执行。

Ubuntu 提供了三种成熟的方式来实现这一点。

方案一:

nohup —— 最简后台执行

1、基本用法

nohup your_command > output.log 2>&1 &

例如:

cd /var/www/supabase-sk-auth
nohup docker compose pull > pull.log 2>&1 &

2、参数说明

参数含义
nohup忽略挂起信号(HUP),防止断开 SSH 时进程被杀死
> output.log把输出写入文件
2>&1把错误输出重定向到同一文件
&后台运行,不阻塞终端

3、管理命令

查看任务:

ps aux | grep docker

查看日志:

tail -f pull.log

停止任务:

kill <PID>

✅ 优点:极其简单

⚠️ 缺点:不支持交互,无法重新进入查看实时输出

方案二:

tmux —— 可恢复的终端会话(推荐)

1、安装

sudo apt install tmux -y

2、创建会话并执行命令

tmux new -s dockerpull
cd /var/www/supabase-sk-auth
docker compose pull

此时,你可以按下:

Ctrl + B, 然后 D

即可“分离”会话。任务仍在后台运行。

3、重新连接

tmux attach -t dockerpull

查看所有会话:

tmux ls

删除会话:

tmux kill-session -t dockerpull

✅ 优点:

  • 即使关机、断网也不会中断
  • 可重新连接、查看实时输出
  • 适合长期执行的命令或脚本

⚠️ 缺点:

  • 需要手动进入会话(比 nohup 多一步)

方案三:

systemd —— 永久守护进程(自动启动)

如果你想让命令在系统重启后也自动执行,可以创建一个自定义服务。

1、新建服务文件

sudo nano /etc/systemd/system/dockerpull.service

2、写入配置

[Unit]
Description=Pull Docker images automatically
After=network.target
 
[Service]
ExecStart=/usr/bin/docker compose -f /var/www/supabase-sk-auth/docker-compose.yml pull
WorkingDirectory=/var/www/supabase-sk-auth
StandardOutput=append:/var/www/supabase-sk-auth/pull.log
StandardError=append:/var/www/supabase-sk-auth/pull.log
Restart=always
 
[Install]
WantedBy=multi-user.target

3、启动并启用服务

sudo systemctl daemon-reload
sudo systemctl enable --now dockerpull.service

从此:

  • 系统启动时会自动执行
  • 日志写入 pull.log
  • 若失败会自动重启

三种方法对比

场景推荐方法是否可断线继续是否可重启继续适合任务类型
一次性命令nohup拉取镜像、短脚本
可交互、可恢复任务tmux构建、训练、爬虫
永久守护进程systemd后台服务、长期任务

附:可直接复用的脚本模板

如果你经常要执行同类任务,可以创建一个小脚本:

#!/bin/bash
cd /var/www/supabase-sk-auth
tmux new -d -s dockerpull "docker compose pull && docker compose up -d"

保存为 run-docker-pull.sh,赋予执行权限:

chmod +x run-docker-pull.sh

然后只需:

./run-docker-pull.sh

就会自动在后台 tmux 会话中执行。

总结

当你关闭电脑后,只要服务器仍在运行:

  • nohup 是最轻量的后台执行方式;
  • tmux 是最灵活的交互式解决方案;
  • systemd 是最稳定的自动化守护方案。

如果你经常在服务器上执行构建、部署、Docker 等任务,

推荐使用 tmux + 脚本封装,既安全又可控。

作者的话

很多人误以为“关掉自己电脑,任务就会停”。

其实,只要命令运行在远程服务器上,它独立于你的电脑存在。

关键是让进程 不依赖于当前 SSH 会话——这正是本文介绍的三种方案的核心原理。

以上就是Ubuntu服务器关机后继续执行命令的三种方案的详细内容,更多关于Ubuntu关机后继续执行命令的资料请关注脚本之家其它相关文章!

相关文章

  • CentOS 7 中firewall-cmd命令详细介绍

    CentOS 7 中firewall-cmd命令详细介绍

    这篇文章主要介绍了 CentOS 7 中firewall-cmd命令详细介绍的相关资料,这里对CentOS 7的firewall-cmd命令一一介绍,希望能帮助开始使用的朋友,需要的朋友可以参考下
    2016-11-11
  • 开启Selinux遇到的坑及解决

    开启Selinux遇到的坑及解决

    这篇文章主要介绍了开启Selinux遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 在Linux系统中使用Vim读写远程文件的命令详解

    在Linux系统中使用Vim读写远程文件的命令详解

    这篇文章主要介绍了在Linux系统中使用Vim读写远程文件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,这篇文章主要介绍了Linux 配置SSH免密登录 “ssh-keygen”的基本用法 ,需要的朋友可以参考下
    2019-06-06
  • Linux开机自启动服务两种方式介绍

    Linux开机自启动服务两种方式介绍

    大家好,本篇文章主要讲的是Linux开机自启动服务两种方式介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Centos7中添加、删除Swap交换分区的方法

    Centos7中添加、删除Swap交换分区的方法

    Swap空间的作用是当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这篇文章主要给大家介绍了关于Centos7中添加、删除Swap交换分区的相关资料,以及Centos7下增加swap分区大小的方法,需要的朋友可以参考下。
    2018-04-04
  • 解决hadoop启动报错ERROR: Attempting to operate on hdfs namenode as root的方法

    解决hadoop启动报错ERROR: Attempting to operate 

    这篇文章主要介绍了解决hadoop启动报错ERROR: Attempting to operate on hdfs namenode as root的方法,hadoop-3.1.0启动hadoop集群时还有可能可能会报如下错误,需要的朋友可以参考下
    2023-03-03
  • linux中SUID,SGID与SBIT的奇妙用途详解

    linux中SUID,SGID与SBIT的奇妙用途详解

    这篇文章主要给大家介绍了关于linux中SUID,SGID与SBIT的奇妙用途的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-09-09
  • Ubuntu25.10蓝牙Wifi不可用的解决过程

    Ubuntu25.10蓝牙Wifi不可用的解决过程

    本文作者分享了解决古董笔记本安装Ubuntu25.10后,蓝牙和WiFi无法正常启动的问题的过程,详细记录了查找、下载、加载固件及驱动签名注册等步骤
    2026-05-05
  • Linux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。所以下面这篇文章主要给大家介绍了关于Linux中环境变量配置的相关资料,需要的朋友可以参考下。
    2017-07-07

最新评论