在 Bash 中执行脚本并后台运行141


在 Bash 脚本中,有时我们需要在后台运行命令或脚本,而不阻塞当前终端会话。这对于长时间运行的任务或需要立即执行的任务非常有用。

在 Bash 中将命令或脚本置于后台运行有两种主要方法:使用 & 和 nohup 命令。

使用 & 运算符

& 运算符是最简单的将命令或脚本置于后台运行的方法。只需在命令或脚本的末尾添加一个 & 字符即可,如下所示:command &
&

使用 & 运算符时,命令或脚本的输出将不会显示在当前终端窗口中。要查看输出,可以使用 jobs 命令查看正在后台运行的作业列表,然后使用 fg 或 bg 命令将特定作业带回前台或将其保留在后台。

使用 nohup 命令

nohup 命令可以将命令或脚本置于后台运行,即使用户退出终端会话,它也会继续运行。此方法对于长时间运行的任务很有用,例如数据处理或文件下载。

要使用 nohup 命令,请使用以下语法:nohup command &
nohup &

使用 nohup 时,命令或脚本的输出将重定向到名为 的文件中。可以随时使用文本编辑器或 cat 命令查看此文件的内容。

后台运行的优点
释放终端:后台运行任务不会阻塞当前终端会话,因此您可以继续执行其他任务。
持续运行:使用 nohup 命令,即使用户退出终端会话,任务仍会继续运行。
减少开销:后台运行任务可以减少系统资源的使用,因为它们不需要在前台持续运行。

后台运行的缺点
输出不可见:使用 & 运算符时,命令或脚本的输出不会显示在当前终端窗口中。
需要管理:后台运行的作业需要管理,以确保它们按预期运行。
难以调试:在后台运行的任务可能难以调试,因为无法实时看到它们的输出。

管理后台作业

可以使用以下命令管理后台作业:* jobs:列出正在运行和已完成的后台作业。
* fg %job_number:将作业 %job_number 带回前台。
* bg %job_number:将作业 %job_number 保留在后台。
* disown %job_number:从作业列表中删除作业 %job_number,使其不受 Bash 控制。
* kill %job_number:终止作业 %job_number。

示例

以下脚本演示如何在后台运行命令:#!/bin/bash
# 在后台运行命令
ping -c 5 &
# 检查后台作业
jobs
# 将作业带回前台
fg %1

运行此脚本将 ping 5 次,然后在后台持续不断地运行。您可以使用 jobs 命令查看后台作业,并使用 fg %1 命令将其带回前台。

在 Bash 中执行脚本并后台运行是自动化任务和最大限度提高系统资源利用率的强大技术。通过使用 & 运算符或 nohup 命令,您可以轻松地将命令或脚本置于后台运行,而不会中断当前终端会话或影响用户的生产力。

2024-12-23


上一篇:bash脚本输入和输出长度限制

下一篇:Bash 脚本执行: -c、source 和 ./ 的区别