linux-bash shell脚本中job控制

  • 时间:2018-08-24 21:08 作者:linux运维菜 来源:linux运维菜 阅读:813
  • 扫一扫,手机访问
摘要:前言今天在制作docker镜像的时候,需要让nginx在前端执行,但是在nginx执行之后,需要获取nginx端口,增加加一个针对nginx监控的程序,而且要求假如nginx挂掉,这个容器就必需销毁。思路在bash中,后端执行程序可以在命令参数之后加上 & 就可,假如需要继续前端执行 fg

前言

今天在制作docker镜像的时候,需要让nginx在前端执行,但是在nginx执行之后,需要获取nginx端口,增加加一个针对nginx监控的程序,而且要求假如nginx挂掉,这个容器就必需销毁。

linux-bash shell脚本中job控制


思路

在bash中,后端执行程序可以在命令参数之后加上 & 就可,假如需要继续前端执行 fg jobid。

例如下面写一个enterypoint脚本

#!/bin/bash

/opt/nginx/sbin/nginx -g "daemon off;" &

PORT=$(ss -lntpd | grep '\"nginx\"' | awk '{split($5,a,":");print a[2]}'|head -n 1)

/nginx-monitor http://localhost:$PORT/status &

fg 1 >> /data/startup.log 2>&1

发现容器启动之后就关闭了,说明脚本有问题,没有程序在前端执行导致容器直接退出。

通过日志文件发现有报错:fg: no job control

linux-bash shell脚本中job控制


通过man bash查看帮助

找到JOB CONTROL

A user typically employs this facility via an interactive interface supplied jointly by the operating system kernel's terminal driver and bash.

使用户一般在交互的人机界面中用这种功能。界面是由系统的终端驱动和 bash 共同提供的。

上面可以看错需要有界面才能控制,那在脚本里面有可能调使用吗?继续往下查找JOB关键字,可以看到有一个set -m参数,可以设置monitor模式

-m Monitor mode. Job control is enabled. This option is on by default for interactive shells on systems that support it (see JOB CONTROL above). Background processes run in a separate process group and a line containing their exit status is printed upon their completion.

monitor模式。作业控制被启使用。在支持这个选项的系统中,它在交互 shell中是默认启使用的 (参见上面的 JOB CONTROL 作业控制)。后端进程在单独的进程组中运行,结束时将打印出包含它们退出状态的一行信息。

linux-bash shell脚本中job控制


修改后的脚本

#!/bin/bash

set -m

/opt/nginx/sbin/nginx -g "daemon off;" &

PORT=$(ss -lntpd | grep '\"nginx\"' | awk '{split($5,a,":");print a[2]}'|head -n 1)

/nginx-monitor http://localhost:$PORT/status &

fg 1 >> /data/startup.log 2>&1

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】从谷歌到手机厂商都下决心了,要清除32位应用这匹“害群之马”(2025-10-17 05:41)
【系统环境|】Windows上使用QEMU创建aarch64(ARM64)虚拟机(2025-10-17 05:40)
【系统环境|】nodejs 如何安装在aarch64平台(2025-10-17 05:39)
【系统环境|】常用git命令-从远程更新代码合并分支、提交代码等(2025-10-17 05:38)
【系统环境|】技术干货|常用的 Git 功能和选项(2025-10-17 05:38)
【系统环境|】掌握git命令,图解一目了然(2025-10-17 05:37)
【系统环境|】总结几个常用的Git命令的使用方法(2025-10-17 05:36)
【系统环境|】这篇 Git 教程太清晰了,很多 3 年经验程序员都收藏了(2025-10-17 05:35)
【系统环境|】Git常用命令及操作指南(2025-10-17 05:35)
【系统环境|】「实用」盘点那些开发中最常用的Git命令(2025-10-17 05:34)
手机二维码手机访问领取大礼包
返回顶部