【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式

  • 1. 问题描述
  • 2. & 符号
  • 3. nohup指令
  • 4. ctrl + z、jobs、fg、bg命令
    • 4.1 ctrl + z
    • 4.2 jobs
    • 4.3 bg
    • 4.4 fg

1. 问题描述

  • 当我们在做服务的时候,有时候在终端界面启动了,但是往往因为网络,关闭屏幕,执行CTRL+C等原因造成ssh断开造成正在运行程序退出,使得我们的服务程序也随即终止了。其背后的主要原因在于上述的相关操作,shell默认会发送中断信号给该终端session关联的进程,从而导致进程跟随终端退出,为了弄清这个问题我们首先要了解两种中断信号

  • 1)第一种中断信号sigintsignal interruptctrl+c会发送此信号,主动关闭程序

  • 2)第二种中断信号sighup: signal hang up关闭终端网络断线关闭屏幕会发送此挂断信号

2. & 符号

  • 这是一种把 &放在执行命令最后,使启动的程序忽略sigint信号,此时执行ctrl+c关闭不会关闭此进程,但是当屏幕关闭断网仍然会造成进程退出
sh test.sh &

3. nohup指令

  • nohupno hang up),意思就是不挂断运行,用nohup运行命令可以使命令永久执行下去,和用户终端没有关系断开SSH不影响运行nohup捕获了SIGHUP,并做了忽略处理,因此当屏幕关闭,断网等造成ssh中断时进程不会退出。但是ctrl+c可以关闭该进程。因此大多数情况同时使用nohup和&启动的程序,ctrl+c和关闭终端都无法关闭。在缺省情况下所有输出都被重定向到一个名为nohup.out的文件中。

  • nohup指令基本使用格式:

nohup Command \[ Arg ... \] \[ & \]

举例

  • 后台不中断执行./test.sh,stdout输出给out.log,stderr输出给err.log
nohup ./test.sh > out.log 2>err.log  &
  • 相关的数字含义如下:
0 – stdin (standard input),1 – stdout (standard output),显然 nohup command > out.log 等价于 nohup command 1> out.log,是缺省行为。2 – stderr (standard error)
  • 可能你也会见到这种写法,其含义是把stderr也重定向给stdin
nohup ./test.sh > out.log 2>&1  &

4. ctrl + z、jobs、fg、bg命令

  • 如果我们程序在启动的时候并没有使用&,nohup怎么办呢,难道我们需要先执行ctrl + c将在前台执行的进程终止执行再重新启动吗,显然有好的方法!

4.1 ctrl + z

  • 将一个正在前台执行的作业进程放到后台,并且暂停,用术语讲就是挂起,执行后如下:
[1]+ Stopped ./test.sh

4.2 jobs

  • 查看当前有多少在后台运行的命令,[jobnumber] 就是作业号。
jobs
[1]+ Stopped ./test.sh
[2]+ Running ./test2.sh &

4.3 bg

  • 后台暂停(挂起)的作业进程继续运行。例如把1号作业(./test.sh) 放到后台运行,注意看已经带了&
bg 1  [1]+ ./test.sh  &

4.4 fg

  • 后台中的作业进程调至前台继续运行,例如把2号作业(./test2.sh &)调至前台运行
fg 2   ./test2.sh

【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式相关推荐

  1. 【genius_platform软件平台开发】第九十八讲:嵌入式网络接口(MAC、PHY)

    1. 嵌入式网络简介 1.1 嵌入式下的网络硬件接口 提起网络,我们一般想到的硬件就是"网卡",现在网卡已经是通过一个芯片来完成了,嵌入式网络硬件分为两部分:MAC和PHY,大家都 ...

  2. 【genius_platform软件平台开发】第九十二讲:vs开发环境中sln、vcxproj、vcxproj.filters、sdf、ilk、pdb、pch、pbd等文件含义

    拿libusb开源库的vs工程中为例: 1. 创建工程生产 1.1 *.sln sln是解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息 microsoft官方说明:Soluti ...

  3. 【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)

    问题起因是在进行上位机软件优化的工作安排时,同事对unsigned long long 类型的时间戳进行了格式化输出优化,从%ull优化为了% PRIu64,我进行代码合并请求处理的时候突然感觉这个可 ...

  4. 【genius_platform软件平台开发】第二十八讲:NEON指令集优化(附实例)

    当在ARM芯片上进行一些例如图像处理等计算的时候,常常会因为计算量太大造成计算帧率较低的情况.因而,需要选择一种更加简单快捷的计算方式以获得处理速度上的提升.ARM NEON就是一个不错的选择. ※ ...

  5. RH124 第十二章 Linux系统中的软件管理

    RH124 第十二章 Linux系统中的软件管理 1.Linux中软件包的类型 1.DEB #UBlinux DEBlinux 2.RPM #redhat centOS fc 3.bz2|gz|xz ...

  6. Java云同桌学习系列(十九)——Linux系统

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...

  7. 用Linux玩开发版和用Windows,在Linux系统中使用Wine开发版可正常运行千牛PC Windows版...

    目前千牛PC版仅推出Windows及Mac版本,无Linux版本提供,但是你可以在Linux操作系统中使用Wine开发版来运行千牛PC Windows版,经在Deepin平台中测试可完美运行,实现起来 ...

  8. 【genius_platform软件平台开发】第七十三讲:linux系统驱动开发之-中断处理之DSB指令

    今天在看power项目的嵌入式代码的时候发现在源代码中有这么一行引起了注意,之前有了解过cpu屏障,但是还真没有实操和应用于项目中,了解一下即可,如图: 1. 概述 这里涉及到了一些汇编的知识,对于一 ...

  9. 【genius_platform软件平台开发】第九十三讲:串口通信(485通信)

    485通信 1. 485通信 1.1 termios结构 1.2 头文件 1.3 函数讲解 1.3.1 tcgetattr 1.3.2 tcsetattr 1.4 示例工程 1.5 参考文献 1.5. ...

最新文章

  1. google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID
  2. Linux常用命令笔记2---文件管理4
  3. .net core webapi 通过swagger生成说明文档
  4. 一文带你了解企业上云数据分析首选产品Quick BI
  5. 卸载chrome_Chrome 浏览器必备“扩展管理工具”,一键管理 Chrome 扩展
  6. nginx的upstream模块安装
  7. 基于Promise对象的新一代Ajax API--fetch
  8. 南阳oj-----D的小L(algorithm全排列用法)
  9. Rational Rose下载安装教程
  10. 考公 | 张小龙讲申论(2019地市级真题)
  11. 如何用计算机抽奖,怎么用PPT制作随机点名抽奖
  12. 蜘蛛会抓取html框架,百度蜘蛛抓取网站的UA汇总
  13. 为Ubuntu搭建的WordPress博客配置自己的域名
  14. opengl绘制立方体
  15. python表示倍数_python输出倍数
  16. Python程序员的就业方向及就业薪资,你都了解吗?
  17. Unity绳子插件Obi Rope下载与简单使用方法
  18. 电视电脑盒子,一机两用,电视秒变电脑
  19. hping3的编译和安装
  20. 工作中的高效工具推荐,职场人士必备便签小工具

热门文章

  1. web常用模块测试用例
  2. 炸薯片和AI生产新闻一样样的!拢共分六步
  3. Android http请求 工具类
  4. 新疆几十公里花海开始盛放,一株580年最老野树,开出最艳鲜花
  5. 走出软件作坊 第三十章 蛋白质女孩
  6. 新年第一文 | Lip synching detective(假唱侦探工具包)
  7. 吉他大横按的学习技巧总结
  8. 工业互联网是不是很难学对于女生而言?
  9. 【从零开始的Java开发】1-5-4 ArrayList、HashSet、HashMap 概述与案例
  10. 平面设计新手如何用PS制作出一张合成海报