侧边栏壁纸
  • 累计撰写 20 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

四种不同方法让linux命令在后台执行,退出时也不会停止

詹迪佳
2025-03-11 / 0 评论 / 0 点赞 / 35 阅读 / 2856 字

在 Ubuntu 中,若要让命令在后台执行并在退出终端时也不会停止,可以使用以下几种方法:

1. 使用 & 将命令放入后台运行

在命令末尾添加 &,这样命令会在后台执行,但当你关闭终端时,该命令仍可能会被终止。

your_command &

2. 使用 nohup 命令

nohup 命令允许程序在用户退出终端后继续运行。它会将输出重定向到 nohup.out 文件中。

nohup your_command &

3. 使用 screentmux

screentmux 是终端复用工具,可以在一个终端会话中创建多个虚拟终端,并在断开连接后继续运行。

3.1 使用 screen

sudo apt install screen  # 如果未安装
screen -S session_name   # 创建一个新会话
your_command             # 在screen会话中运行命令
Ctrl+A+D                 # 从会话中分离

要重新连接到会话:

screen -r session_name

要删除会话:

# 354743.session_name是一个示例的session名字
screen -X -S 354743.session_name quit

3.2 使用 tmux

sudo apt install tmux    # 如果未安装
tmux new -s session_name # 创建一个新会话
your_command             # 在tmux会话中运行命令
Ctrl+B+D                 # 从会话中分离

要重新连接到会话:

tmux attach -t session_name

4. 使用 disown 命令

如果已经在运行一个命令并希望在退出终端后继续运行,可以使用 disown

your_command &
disown

5. 使用 systemd 服务(适用于长期运行的守护进程)

对于长期运行的后台任务,可以创建一个 systemd 服务。

1. 创建服务文件:

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

2. 添加以下内容(根据需要修改):

[Unit]
Description=My Command Service
[Service]
ExecStart=/path/to/your_command
Restart=always
[Install]
WantedBy=multi-user.target

3. 启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl start mycommand
sudo systemctl enable mycommand

这些方法可以根据你的需求选择使用,其中 nohupscreentmux 是最常用的。

0

评论区