首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在后台进程完成后在bash shell中干净地打印消息?

在后台进程完成后,在bash shell中干净地打印消息可以通过以下方式实现:

  1. 使用命令替换:可以使用命令替换将后台进程的输出捕获并打印出来。可以使用$(command)或者反引号command来执行命令替换。例如,假设后台进程是一个命令mycommand,可以使用以下方式在后台进程完成后打印消息:
代码语言:txt
复制
result=$(mycommand & wait $!)
echo "后台进程已完成,结果为:$result"

这里的$!表示最后一个后台进程的PID。

  1. 使用管道和read命令:可以使用管道将后台进程的输出传递给read命令,并在后台进程完成后读取输出并打印消息。例如:
代码语言:txt
复制
mycommand | {
    while IFS= read -r line; do
        echo "$line"
    done
    echo "后台进程已完成"
}

这里的IFS= read -r line用于逐行读取后台进程的输出。

  1. 使用trap命令:可以使用trap命令设置一个信号处理函数,在后台进程完成后触发该函数并打印消息。例如:
代码语言:txt
复制
mycommand &
pid=$!

cleanup() {
    echo "后台进程已完成"
}

trap cleanup SIGCHLD

wait $pid

这里的SIGCHLD是一个子进程完成的信号。

以上是几种在后台进程完成后在bash shell中干净地打印消息的方法。根据具体情况选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【DB笔试面试700】Oracle如何彻底杀掉会话?V$SESSION的STATUS为KILLED如何找到后台OS进程

♣ 题目部分 Oracle如何彻底杀掉会话?V$SESSION的STATUS为KILLED的情况下如何找到相关的后台OS进程?...ALTER SYSTEM KILL SESSION后,会话还是一直存在(V$SESSION视图中存在,且后边OS进程也存在)。...所以,执行命令KILL SESSION的时候,可以在后边加上IMMEDIATE,这样没有事务的情况下,相关会话就会立即被删除而不会变为KILLED的状态(V$SESSION视图中不存在),当有事务存在的情况下...另外,由于变为KILLED状态的会话的PADDR列都变成了另外一个值,因此,通过平常的连接方式就没有办法关联到后台进程Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,...对于Oracle 10g可以通过特殊的SQL找到后台进程号。

2.2K10

linux常见面试题

一个区别是你不会收到任何确认消息,因此,立即重启。 20)如何引用连接打印机等设备的并行端口? Windows下,你将并行端口称为LPT端口,而在Linux下,你将其称为/ dev / lp。...你可以简单虚拟桌面之间进行随机播放,而不是每个程序中保持完整的程序,而不是最小化/恢复所有这些程序。 29)如何在Linux下跨不同的虚拟桌面共享程序?...43)你如何终止正在进行的流程? 系统的每个进程都由唯一的进程ID或pid标识。使用kill命令后跟pid来终止该进程。 要立即终止所有进程,请使用kill 0。...44)如何在命令行提示符插入注释? 通过实际注释文本之前键入#符号来创建注释。这告诉shell完全忽略后面的内容。例如“#这只是shell将忽略的注释。”...它将停止接收NOHUP信号的进程,从而终止它,你注销了调用的程序。并在后台运行该过程。 62)解释如何在Linux卸载库?

2.4K10

shell循环语句

示例2: 批量创建用户 用户名存放在users.txt的文件,每行一个 初始密码123456 验证脚本 示例:99乘法表 示例: 根据IP地址检查主机状态 IP地址存放在ipadds.txt文件...、示例2、为指定用户发送在线消息 若用户不在线(未登录系统),则每10分钟试一次,直至用户登录系统后再发送信息 用户名与消息通过位置参数传递给脚本 4、多线程 利用 实现后台并行执行 do {...$i is offline" >> /root/shell4/host_ip_offline.txt fi }& #增加&符号,代表的是将进程放到后台处理,后台命令之间是不区分先来后到关系的 done...#执行wait,等待上面所有后台进程执行完毕后,才会执行后面的语句 #没有wait,后面语句不会等待后台进程的,会对一些需要上下文依赖关系的程序执行错误 wait cat /root/shell4/...host_ip_online.txt cat /root/shell4/host_ip_offline.txt 5、循环体三种跳出方式 5.1、exit n (0-255) 退出shell脚本进程

60610

一个提升你 Shell 脚本编写质量的工具,建议大家人手必备的神器!

跨平台支持:ShellCheck 支持 Linux、macOS、Windows 等多种操作系统上运行,并支持各种常见的 Shell 解释器,如 Bash、Dash、Zsh 等。...使用操作 安装完成后,你可以命令行中使用ShellCheck来检查Shell脚本。...fi 这个脚本接受一个参数,并打印出"Hello, "加上这个参数。如果参数是"World",则额外打印一条消息。 现在,我们想要使用ShellCheck来检查这个脚本是否存在问题。...安装完成后,重新加载VSCode或重启编辑器。 打开你的Shell脚本文件。VSCode现在应该在后台使用ShellCheck来分析你的脚本,并在发现问题时显示警告或错误。...总结 总的来说,ShellCheck是一个强大的Shell脚本开发辅助工具,它可以帮助你更有效编写、维护和调试Shell脚本,提高你的工作效率和脚本质量。

28510

编写快速安全Bash脚本的建议

使用它来使您的shell脚本更好! 我们会像讨论编程语言一样讨论bash,因为,怎么说呢,它就是。 这篇文章的目标不是bash编程详解。我不会在bash做复杂的编程,也真的不计划学习如何去做。...fi 函数不是那么难 bash 定义和调用函数(特别是没有参数)是非常容易的。...后台进程 我不会在此谈及太多关于 job 控制的内容,但是:你可以像下面这样启动后台进程 long_running_command & 如果你后来后悔将进程放到后台,并希望把它带调回前台,你可以用 fg...如果不止一个进程,您可以使用 jobs 查看所有后台进程。由于某种原因,fg 需要一个 “job ID”(这就是 jobs 打印输出的)而不是一个 PID。 谁知道 Bash 为什么这样子呢。...说到后悔 - 如果你不小心错误的终端启动一个进程,Nelson Elhage 有一个很棒的项目叫做reptyr,可以保存你的进程并将其移到屏幕会话或者某些其他东西

1.8K80

《Linux命令行与shell脚本编程大全》第十六章 控制脚本

16.1.2 生成信号 bash shell允许用键盘上的组合键生成两种进本的linux信号。 1.中断进程 Ctrl+c会生成SIGINT信号。会发送给当前shell运行的所有进程。...但是这样可以不终止进程的情况下能深入脚本内部一窥究竟。 Ctrl+z 会生成一个SIGTSTP信号,停止shell运行的任何进程。...后台进程结束时,会在终端显示一条消息表明已经结束了。 注意:后台进程运行时,任然会使用终端显示器来显示STDOUT和STDERR消息。...终端会话中使用后台进程要注意,ps命令的输出,每一个后台进程都和终端会话(pts/0)终端联系在一起。如果终端会话退出,那么后台进程也会退出。...linux系统,由shell启动的所有进程的调度优先级默认都是相同的, 调度优先级是个整数值(-20 -- +19)。 -20是最高优先级,+19是最低优先级。

3K61

【Linux】《how linux work》第二章 基本命令和目录层次结构(2)

如果文件已经存在,shell会先擦除(覆盖)原文件。(一些shell有参数可以防止擦除。例如,bash输入set -C可以避免擦除。)...要修复警告消息中指出的问题,你可能需要在执行其他操作之前查找并终止一个进程(你将在2.16 列出和操作进程中学习如何列出和终止进程)。...然而,你可以使用和号(&)将一个进程shell 中分离并放到“后台”;这样你就能够立即得到提示符。...(Depending on your setup, the shell might notify you when the process completes.)Shell 应该会打印后台进程的 PID...如果后台进程产生了无关紧要的输出,学习如何重新绘制终端窗口的内容。

11710

2019年常见的Linux面试题及答案解析,哪些你还不会?

如何忽略大小写? 如何查找不含该串的行? 16、Linux 中进程有哪几种状态? ps 显示出来的信息,分别用什么符号表示的? 17、怎么使一个命令在后台运行?...40、bash shell 的 hash 命令有什么作用? 41、哪一个 bash 内置命令能够进行数学运算。 42、怎样一页一页查看一个大文件的内容呢? 43、数据字典属于哪一个用户的?...答案: 可以使用 bind 命令,bind 可以很方便 shell 实现宏或按键的绑定。进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。...40、bash shell 的 hash 命令有什么作用?...答案: bash shell 的内置命令 let 可以进行整型数的数学运算。 #! /bin/bash … … let c=a+b … … 42、怎样一页一页查看一个大文件的内容呢?

2.7K31

Linux面试题Top100

6.什么是BASH? 回答: Bash是Brian Fox为GNU项目编写的Unix shell和命令处理器。它是免费软件,可以代替Bourne Shell。...这是一个解释后的未编译过程,也可以终端窗口中运行。这使用户可以编写命令并引起动作。Bash能够从Shell脚本读取命令。 7.什么是LILO?...ls / etc / var / etc / passwd 45.Linux,tail命令是什么? 回答: Tail命令打印给定数据的最后N行,默认情况下它打印10行。...Linux的env命令是什么? 回答: env是一个shell命令,用于打印当前环境变量的列表,它可以另一个环境运行另一个进程,而无需对当前环境进行任何修改。.... | command_N 67.描述父子进程如何相互通信? 回答: 父进程通过使用管道,套接字,消息队列等与子进程进行通信。 68.什么是无状态Linux服务器?

13.7K42

The Missing Semester of Your CS Education

折腾完Powershell后,shell的课程用的是bash,那我想了想可以用git bash,于是又给git bash也配置了一下,现在已经可以cmd打开并且有个看起来还不错的主题啦 更换完主题心情舒畅...shell脚本中使用空格会起到分割参数的作用,有时候可能会造成混淆,请务必多加检查。 Bash的字符串通过' 和 "分隔符来定义,但是它们的含义并不相同。...,确实感觉有点烦 Command-line Environment 学习如何同时执行多个不同的进程并追踪它们的状态、如何停止或暂停某个进程以及如何使进程后台运行,学习一些能够改善您的 shell 及其他工具的工作流的方法...可以使用百分号 + 任务编号(jobs 会打印任务编号)来选取该任务。 命令的 & 后缀可以让命令直接在后台运行,这使得您可以直接在 shell 中继续做其他操作。...对日志着色可以让日志可读性更好,下面是一个可以终端打印颜色的bash脚本 #!

1.9K21

2019年常见的Linux面试题及答案解析,哪些你还不会?

如何忽略大小写? 如何查找不含该串的行? 16、Linux 中进程有哪几种状态? ps 显示出来的信息,分别用什么符号表示的? 17、怎么使一个命令在后台运行?...40、bash shell 的 hash 命令有什么作用? 41、哪一个 bash 内置命令能够进行数学运算。 42、怎样一页一页查看一个大文件的内容呢? 43、数据字典属于哪一个用户的?...答案: 可以使用 bind 命令,bind 可以很方便 shell 实现宏或按键的绑定。进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。...40、bash shell 的 hash 命令有什么作用?...答案: bash shell 的内置命令 let 可以进行整型数的数学运算。 #! /bin/bash … … let c=a+b … … 42、怎样一页一页查看一个大文件的内容呢?

1.5K00

shell 教程,这次我要步步详解,学会了以后能早点下班

后台运行的最后一个进程的pid $_:之前命令的最后一个参数 shell 的变量还有一点特性,可以设置默认值,即为了防止一些意外导致变量成为空值而导致脚本崩溃。...err_msg}:如果var已经被声明,那么就使用设置的值,否则打印err_msg错误消息。 (2)${parameter:?...创建 Shell进程最简单的方式是运行 bash 命令,如图所示: 通过exit命令可以一层一层退出 Shell。...,子进程完成后,子进程的各项变量或操作将会结束而不会传回到父进程。...注意:执行时要赋权限 补充知识点: 一个规范的Shell脚本第一行会指出由哪个程序(解释器)来执行脚本的内容,这一行内容Linux bash的编程一般为: #!/bin/bash 或 #!

4.1K20

【Linux】《how linux work》第二章 基本命令和目录层次结构

标准流的一个最好的特性是你可以轻松操作它们以读取和写入除终端以外的其他地方,你将在2.14 Shell输入和输出中学到这一点。特别是,你将学习如何将流连接到文件和其他进程。...要修复警告消息中指出的问题,你可能需要在执行其他操作之前查找并终止一个进程(你将在2.16 列出和操作进程中学习如何列出和终止进程)。...Shell 应该会打印后台进程的 PID,并立即返回提示符,以便你可以继续工作。 该进程将在你退出登录后继续运行,这在你需要运行一个进行大量数值计算的程序时特别方便。...如果后台进程产生了无关紧要的输出,学习如何重新绘制终端窗口的内容。 bash shell和大多数全屏交互式程序都支持使用CTRL-L重新绘制整个屏幕。...您现在应该知道如何在命令行执行以下操作:运行程序、重定向输出、与文件和目录交互、查看进程列表、查看手册页面,并且可以Linux系统的用户空间中自如操作。 您还应该能够以超级用户身份运行命令。

20510

shell第九讲

然而在实际工作,我们往往使用for循环来遍历每一个位置参数,那么有些人习惯加上给特殊变量加上双引号,那么此时使用上就会有些区别: bash [root@localhost ~]# cat a.sh...上面就是两者的使用区别,大家使用的过程多加注意。...1.3、$$使用 这个我们之前的知识中都给大家分享过了,他表示打印当前进程的PID号, 我们当前都是shell交互界面来执行命令的,这个shell交互我们也称之为bash进程上,那么我们查看一下当前...表示打印出来上一条命令运行在后台进程的PID号。...(当然,命令结尾处放一个&符号,表示把命令放在当前终端的后台运行,同时也会打印出来此后台进程的PID号) 文章转载于马哥教育官网:http://www.magedu.com/83997.html

35330

Bash编程 set -e 与 trap exit ERR 有什么相同点和不同点

Bash编程,set -e(或更正式写作set -o errexit)和使用trap命令来捕获EXIT或ERR信号有相似的目的,即在脚本检测错误并作出相应处理,但它们在行为和使用场景上有一些不同点...trap 'handler' ERR主要针对当前shell作用域内的命令,对于子shell后台任务,可能需要额外配置以确保它们也能被正确捕获错误。...使用trap可以让开发者完全控制错误处理逻辑,包括决定何时、如何响应特定类型的错误,以及是否让脚本继续执行。 提示信息: set -e:当命令失败时,脚本会直接退出,无额外的打印信息。...兼容性: set -e:几乎所有的 Bash 版本都支持。 trap 'exit ERR' ERR:同样广泛支持,但可能在某些非常旧的 shell 不可用。...需要注意的是:进程替换”(process substitution)执行的 exit 命令或因错误触发的陷阱,并不会终止外部进程,只会结束那个特定的子进程

8110

【Linux】《how linux work》第二章 基本命令和目录层次结构(第二部分)

要修复警告消息中指出的问题,你可能需要在执行其他操作之前查找并终止一个进程(你将在2.16 列出和操作进程中学习如何列出和终止进程)。...然而,你可以使用和号(&)将一个进程shell 中分离并放到“后台”;这样你就能够立即得到提示符。...(Depending on your setup, the shell might notify you when the process completes.)Shell 应该会打印后台进程的 PID...如果后台进程产生了无关紧要的输出,学习如何重新绘制终端窗口的内容。...:运行程序、重定向输出、与文件和目录交互、查看进程列表、查看手册页面,并且可以Linux系统的用户空间中自如操作。

9110

Docker入门

最后,我们告诉 Docker 新容器内要运行什么命令,我们容器运用 /bin/bash 创建了一个 Bash Shell。 使用容器 现在,我们已经切换到了新的容器 ?...我们还在容器要运行的命令行里使用了一个 while 循环,该循环会一致打印 hello world 直到容器或者进程停止运行。...可以容器内部运行的进程有两种类型:后台任务和交互式任务。后台任务容器内部运行并且没有交互需求,而交互式任务保持在前台运行。...对于需要在容器内部打开的 shell 任务,交互式任务还是很实用的,下面是一个后台任务的例子 ? 这里的标志 -d 表示是一个后台进程。...接着我们指定了要在容器内部运行的名称以及要执行的命令,在上面的例子,这条命令会在 daemon_dave 容器创建一个新的 bash 会话,有了这个会话,我们就可以该容器运行其他命令了。

90720

【基础干货】Linux Shell基础教程

如果您需要帮助了解命令的工作方式,通常使用--help标志发送命令将提供关于如何使用命令的信息。 文件系统导航 shell的主要功能之一是为文件系统提供接口。.../jack/home目录中使用也会转到/home/jack目录,因为它.指示工作目录或当前目录(用于pwd终端打印工作目录)。 相对路径用于指定所有命令的文件和目录。...如果您不记得某个特定命令的选项或标记,那么可以该命令后面添加--help查询如何使用。本节介绍shell环境的一些基本功能,这些功能在大多数现代UNIX系统上都很常见。...任务管理 shell能够一次接受多个命令。如果您在命令末尾添加了一个&,任务将被发送到后台,并且您将立即得到一个提示。因此,您工作时,您可以使用&号将要发出的命令集合串在一起。...注意,后台任务仍然会生成输出,这在一开始可能会令人困惑。 如果在命令末尾添加双&&),shell将一直等到前一个命令成功完成后才执行下一个命令。

1.4K40

轻度Linux服务器维护人员常用的Shell脚本命令

控制台下后台模式运行脚本 command & 非控制台下后台模式运行脚本 nohup command & 查看shell当前处理的作业 jobs 重启停止的作业 bg 计划执行作业 at [-f filename...*ly 运行服务器问题错过的的计划 anacron 后台新窗口 screen 创建新shell后台执行,完成后退出 sh -c "cd /home; ls" 系统监控 虚拟内存 cat /proc/meminfo...or du 查看登录用户 who 查看所有进程和登陆用户 lsof 捕捉信息 trap 打印确切的系统信息 uname -a 打印操作系统信息 cat /etc/redhat-release 日期/时间...变量 描述 CDPATH 冒号分隔的目录列表,作为cd命令的搜索路径 HOME 当前用户的主目录 IFS shell用来分隔文本字符串的一列字符 MAIL 当前用户收件箱的文件名;bash shell...会检查这个文件来看有没有新邮件 MAILPATH 冒号分隔的当前用户收件箱的文件名列表;bash shell会检查列表的每个文件来看有没有新邮件 OPTARG getopts命令处理的最后一个选项参数值

2.1K130
领券