Linux disown 命令及实际示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习 Linux 的 disown 命令,以及如何使用它来将正在运行的进程与 shell 分离,使这些进程在你退出系统或关闭终端后仍能继续执行。实验内容包括理解 disown 命令的用途、在后台分离正在运行的进程,以及管理多个已分离进程的输出。这些知识对于运行长时间任务(如备份脚本或 Web 服务器)非常有用,而无需保持终端会话打开。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/ProcessManagementandControlGroup(["`Process Management and Control`"]) linux/ProcessManagementandControlGroup -.-> linux/jobs("`Job Managing`") linux/ProcessManagementandControlGroup -.-> linux/bg_running("`Background Running`") linux/ProcessManagementandControlGroup -.-> linux/bg_process("`Background Management`") subgraph Lab Skills linux/jobs -.-> lab-422643{{"`Linux disown 命令及实际示例`"}} linux/bg_running -.-> lab-422643{{"`Linux disown 命令及实际示例`"}} linux/bg_process -.-> lab-422643{{"`Linux disown 命令及实际示例`"}} end

理解 disown 命令的用途

在这一步中,你将学习 Linux 中 disown 命令的用途。disown 命令用于将正在运行的进程与 shell 分离,使其在 shell 会话关闭后仍能继续运行。

当你在前台启动一个进程时,该进程会与当前的 shell 会话关联。如果你关闭 shell,该进程将被终止。然而,通过使用 disown 命令,你可以将进程与 shell 分离,使其在后台继续运行,即使 shell 已经关闭。

这在某些场景中非常有用,例如当你需要运行一个长时间的任务(如备份脚本或 Web 服务器)时,你希望确保即使你退出系统或关闭终端,该进程仍能继续运行。

让我们从一个简单的后台进程开始,然后使用 disown 命令将其与 shell 分离。

## 启动一个无限运行的后台进程
$ sleep 1000 &
[1] 12345

## 使用 disown 命令将进程与 shell 分离
$ disown %1

示例输出:

在上面的示例中,我们首先使用 sleep 1000 & 命令启动一个后台进程。这将使 sleep 命令在后台运行 1000 秒(约 16 分钟)。

接下来,我们使用 disown %1 命令将进程与 shell 分离。%1 指的是后台进程的作业编号,你可以使用 jobs 命令找到它。

运行 disown 命令后,即使你退出系统或关闭终端,该进程仍会在后台继续运行。

在后台分离正在运行的进程

在这一步中,你将学习如何在后台分离一个正在运行的进程,使其在你退出系统或关闭终端后仍能继续执行。

首先,让我们启动一个无限运行的后台进程:

## 启动一个无限运行的后台进程
$ sleep 1000 &
[1] 12345

现在,让我们使用 disown 命令分离正在运行的进程:

## 分离正在运行的进程
$ disown %1

示例输出:

在上面的示例中,我们首先使用 sleep 1000 & 命令启动一个后台进程。这将使 sleep 命令在后台运行 1000 秒(约 16 分钟)。

接下来,我们使用 disown %1 命令将进程与 shell 分离。%1 指的是后台进程的作业编号,你可以使用 jobs 命令找到它。

运行 disown 命令后,即使你退出系统或关闭终端,该进程仍会在后台继续运行。

为了验证进程是否仍在运行,你可以使用 ps 命令:

## 检查进程是否仍在运行
$ ps -ef | grep 'sleep 1000'
labex 12345 12321 0 11:30 pts/0 00:00:00 sleep 1000

如你所见,sleep 1000 进程仍在运行,即使我们已经将其分离。

分离多个进程并管理它们的输出

在这一步中,你将学习如何分离多个在后台运行的进程并管理它们的输出。

首先,让我们启动两个无限运行的后台进程:

## 启动两个后台进程
$ sleep 1000 &
[1] 12345
$ sleep 2000 &
[2] 12346

现在,让我们使用 disown 命令分离这两个进程:

## 分离正在运行的进程
$ disown %1 %2

示例输出:

在上面的示例中,我们首先使用 sleep 1000 &sleep 2000 & 命令启动两个后台进程。这将使 sleep 命令分别在后台运行 1000 秒和 2000 秒。

接下来,我们使用 disown %1 %2 命令将这两个进程与 shell 分离。%1%2 指的是后台进程的作业编号,你可以使用 jobs 命令找到它们。

运行 disown 命令后,即使你退出系统或关闭终端,这两个进程仍会在后台继续运行。

为了管理已分离进程的输出,你可以将它们的输出重定向到文件中:

## 启动两个后台进程并将它们的输出重定向到文件
$ sleep 1000 > process1.log 2>&1 &
[1] 12345
$ sleep 2000 > process2.log 2>&1 &
[2] 12346

## 分离正在运行的进程
$ disown %1 %2

在上面的示例中,我们启动了两个后台进程,并将它们的输出分别重定向到 process1.logprocess2.log 文件中。然后,我们使用 disown 命令将进程与 shell 分离。

在进程运行结束后,你可以检查日志文件的内容,查看已分离进程的输出。

总结

在本实验中,你将学习如何在 Linux 中使用 disown 命令将正在运行的进程与当前 shell 会话分离。这使得进程可以在后台继续运行,即使你退出系统或关闭终端。你将启动一个后台进程,然后使用 disown 命令将其分离,确保它继续运行。此外,你还将学习如何分离多个进程并管理它们的输出。disown 命令对于运行长时间任务(如备份或 Web 服务器)非常有用,而无需保持终端打开。

Linux 命令速查表

您可能感兴趣的其他 Linux 教程