【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
【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)
第一种中断信号
:sigint
:signal interrupt
,ctrl+c
会发送此信号,主动关闭程序
;2)
第二种中断信号
:sighup
:signal hang up
,关闭终端
,网络断线
,关闭屏幕
会发送此挂断信号
;
2. & 符号
- 这是一种把
&
放在执行命令最后
,使启动的程序忽略sigint信号
,此时执行ctrl+c关闭
就不会关闭
此进程,但是当屏幕关闭
,断网
仍然会造成进程退出
。
sh test.sh &
3. nohup指令
nohup
(no 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系统中可执行程序后台运行的几种方式相关推荐
- 【genius_platform软件平台开发】第九十八讲:嵌入式网络接口(MAC、PHY)
1. 嵌入式网络简介 1.1 嵌入式下的网络硬件接口 提起网络,我们一般想到的硬件就是"网卡",现在网卡已经是通过一个芯片来完成了,嵌入式网络硬件分为两部分:MAC和PHY,大家都 ...
- 【genius_platform软件平台开发】第九十二讲:vs开发环境中sln、vcxproj、vcxproj.filters、sdf、ilk、pdb、pch、pbd等文件含义
拿libusb开源库的vs工程中为例: 1. 创建工程生产 1.1 *.sln sln是解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息 microsoft官方说明:Soluti ...
- 【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)
问题起因是在进行上位机软件优化的工作安排时,同事对unsigned long long 类型的时间戳进行了格式化输出优化,从%ull优化为了% PRIu64,我进行代码合并请求处理的时候突然感觉这个可 ...
- 【genius_platform软件平台开发】第二十八讲:NEON指令集优化(附实例)
当在ARM芯片上进行一些例如图像处理等计算的时候,常常会因为计算量太大造成计算帧率较低的情况.因而,需要选择一种更加简单快捷的计算方式以获得处理速度上的提升.ARM NEON就是一个不错的选择. ※ ...
- RH124 第十二章 Linux系统中的软件管理
RH124 第十二章 Linux系统中的软件管理 1.Linux中软件包的类型 1.DEB #UBlinux DEBlinux 2.RPM #redhat centOS fc 3.bz2|gz|xz ...
- Java云同桌学习系列(十九)——Linux系统
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...
- 用Linux玩开发版和用Windows,在Linux系统中使用Wine开发版可正常运行千牛PC Windows版...
目前千牛PC版仅推出Windows及Mac版本,无Linux版本提供,但是你可以在Linux操作系统中使用Wine开发版来运行千牛PC Windows版,经在Deepin平台中测试可完美运行,实现起来 ...
- 【genius_platform软件平台开发】第七十三讲:linux系统驱动开发之-中断处理之DSB指令
今天在看power项目的嵌入式代码的时候发现在源代码中有这么一行引起了注意,之前有了解过cpu屏障,但是还真没有实操和应用于项目中,了解一下即可,如图: 1. 概述 这里涉及到了一些汇编的知识,对于一 ...
- 【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. ...
最新文章
- google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID
- Linux常用命令笔记2---文件管理4
- .net core webapi 通过swagger生成说明文档
- 一文带你了解企业上云数据分析首选产品Quick BI
- 卸载chrome_Chrome 浏览器必备“扩展管理工具”,一键管理 Chrome 扩展
- nginx的upstream模块安装
- 基于Promise对象的新一代Ajax API--fetch
- 南阳oj-----D的小L(algorithm全排列用法)
- Rational Rose下载安装教程
- 考公 | 张小龙讲申论(2019地市级真题)
- 如何用计算机抽奖,怎么用PPT制作随机点名抽奖
- 蜘蛛会抓取html框架,百度蜘蛛抓取网站的UA汇总
- 为Ubuntu搭建的WordPress博客配置自己的域名
- opengl绘制立方体
- python表示倍数_python输出倍数
- Python程序员的就业方向及就业薪资,你都了解吗?
- Unity绳子插件Obi Rope下载与简单使用方法
- 电视电脑盒子,一机两用,电视秒变电脑
- hping3的编译和安装
- 工作中的高效工具推荐,职场人士必备便签小工具