linux后台停止执行命令,Linux 命令的后台运行
先来写一个需要一直运行的程序,比如 Flask 版的 Hello World
$ vi hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '
hello world
'
if __name__ == '__main__':
app.run(host='0.0.0.0')
$ pip install flask
$ python hello.py
启动成功控制台提示:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
此时打开浏览器访问 http://你的服务器ip:5000 即可看到 Hello World 了
按 CTRL+C 退出,如果想让程序一直运行又想同时做其他事怎么办?
CTRL+Z 暂停程序
程序在前台运行时,按下 CRTL+Z, 程序进入暂停状态
[1] + 74237 suspended python hello.py
此时你又可以在终端下敲其他命令了。但刷新浏览器,长时间没有响应,因为程序进入暂停状态了。
jobs 列出后台运行的命令
$ jobs
[1] - suspended python hello.py
再来启动一个命令,比如
$ tail -f hello.py
然后 CTRL+Z 暂停,再运行下 jobs 命令
$ jobs
[1] - suspended python hello.py
[2] + suspended tail -f hello.py
前面的[1] [2] 是任务编号,+ - 和接下来要说的 fg、bg 命令有关,suspended 那一栏表示状态,剩下的就是命令了
bg 将程序运行在后台
直接打 bg 命令不加参数,运行的将是 jobs 列出的 第二列是 + 的那个程序
$ jobs
[1] - suspended python hello.py
[2] + suspended tail -f hello.py
$ bg
[2] - 74616 continued tail -f hello.py
$ jobs
[1] + suspended python hello.py
[2] - running tail -f hello.py
打了一次 bg 命令之后,原本是 + 的那个命令变成 running 了,同时 + 也移到了其他命令前面
$ bg
[1] - 74237 continued python hello.py
$ jobs
[1] - running python hello.py
[2] + running tail -f hello.py
此时看到 python hello.py 处于运行状态,浏览器访问 http://你的服务器ip:5000 正常看到 hello world,但尽管程序已经在后台运行了,终端还是有日志输出:
127.0.0.1 - - [08/Apr/2017 14:34:52] "GET / HTTP/1.1" 200 -
这对我们的其他工作造成了干扰,下面再讨论怎么解决这个问题。
bg 命令还可以添加参数任务
$ bg %1
% 号后面跟着的是 jobs 命令输出的标号
fg 将后台运行的程序调到前台
fg 和 bg 命令一样,可以直接打 fg 将前面有 + 号的程序调到前台,也可以以 %标号的形式指定哪个程序
$ fg %2
然后 CTRL+C 退出,或者 CTRL+Z 暂停,然后 bg %2 在后台运行
使用 & 将程序放到后台
要把一个程序放在后台运行,照上面的做法,得先运行,然后 CTRL+Z 暂停,再用 bg 命令放到后台运行。使用 & 来简化这一过程,并且使用 > 来重定向后台运行的程序在终端上的输出。要继续下面的操作,先用 fg 命令将
python hello.py
调到前台,然后 CTRL+C 退出运行。
重新运行
$ python hello.py > hello.log 2>&1 &
上面这条命令,> hello.log 表示将 python hello.py 在屏幕上标准的输出重定向到了 hello.log 这个文件,2>&1 表示将错误信息重定向到标准输出,& 号表示在后台运行。刷新浏览器,正常看到 'hello word',终端没有输出。可以使用 tail 命令加上 -f 参数追踪 hello.log 文件的输出
$ tail -f hello.log
多刷新几次浏览器,可以看到和之前那样的日志输出。
要退出运行,同样可以使用 fg 命令,然后 CTRL+C 退出。
nohup 命令的使用
使用 bg 命令和 & 后台运行程序还有个缺点,你退出当前终端,程序也结束了。解决这一办法的是使用 nohup 命令,例如
$ nohup python hello.py &
nohup 命令默认将输出重定向到 nohup.out 这个文件,可以使用 tail 命令跟踪 nohup.out 这个文件观察程序的输出
$ tail -f nohup.out
多刷新几次浏览器,可以看到和之前屏幕上一样的输出。退出当前终端,刷新浏览器,还是能看到 'hello world'。
没退出终端之前,可以使用 fg 命令将程序调到前台,然后 CTRL+C 结束。如果已经退出当前终端,下次再登录进来,可以使用 ps aux 命令找出程序的 pid, 然后用 kill 命令结束。
linux后台停止执行命令,Linux 命令的后台运行相关推荐
- linux 后台运行jar包命令,Linux 运行jar包命令(Cent OS 7后台运行jar包)
Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...
- linux后台运行cat命令,Linux程序前台后台切换
Linux程序前台后台切换1.在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行Ubuntu$">root@Ubuntu$ ./tcpserv01 ...
- 后台执行UNIX/Linux命令和脚本的五种方法
http://hankjin.blog.163.com/blog/static/337319372010111492348473/ 2010-12-14 09:35:48| 分类: Unix | ...
- [译]后台执行UNIX/Linux命令和脚本的五种方法
原文:http://www.thegeekstuff.com/2010/12/5-ways-to-execute-linux-command/ by SathiyaMoorthy on Decembe ...
- linux结束后台命令,linux 终端的后台任务结束详解
在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出终端. 输入命令:exit 终端显示:There are stopped jobs. 解决方法: 方法一.输入命令:jobs 终 ...
- linux如何把命令放前台,Linux命令的前台或后台执行
自然情况下,我们在Linux的terminal窗口里输入一个命令,回车执行,命令打印出结果,执行结束,命令提示符再次出现.这样的执行方式叫做前台执行. Linux命令的前台执行很常用,但是有个问题,就 ...
- linux关闭后台运行命令,linux后台运行、关闭、查看后台任务常用命令
一.& 加在一个命令的最后,可以把这个命令放到后台执行,如: [root@bqh-01 ~]# watch -n 3 "sh 1.sh" #每3s在后台执行一次1.sh脚 ...
- linux 清空nohup日志命令,Linux命令之 nohup 和 后台执行命令使用说明
摘要:nohup 是 no hungup 的缩写,意思是"不挂断".我们在使用Xshell等工具,远程执行Linux脚本时,有时候会由于网络问题,导致失去连接,终端断开,程序运行一 ...
- linux 任务后台bg和fg命令
Linux的bg和fg命令 我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命 ...
最新文章
- 【browser】chinese chrome shows as english
- 什么是HystrixDashbord/如何使用?
- Java连接sap无明显报错信息,Kettle连接SAP报错问题
- Mysql整库导出导入
- MAC环境配置SDK
- C#、ASP.NET 将PDF转换成Swf
- Mac 下 Chrome 谷歌浏览器 快捷键
- 大学综评自招面试 计算机专业,自主招生中的综合评价面试技巧
- 蒙特卡洛(Monte Carlo)方法的理解
- K线技术指标实现—同花顺多空趋势点
- PopupWindow底部弹出,底部UI被遮盖问题
- 《寒江独钓windows内核安全编程》学习笔记之一
- 42. OP-TEE中secure stroage------安全文件的创建
- 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建
- 深耕硬科技,香港科大百万创赛与八大投资机构签署合作意向
- bilibili缓存文件在哪里_用这3招,彻底清除Windows10更新缓存,电脑高手必会
- matlab双线性变换切比雪夫2,语音信号滤波去噪——使用双线性变换法设计切比雪夫II型.doc...
- 【Flutter实现表格上下左右滚动】
- 使用注解失败的原因及解决方法
- USACO2013 island travels
热门文章
- html button跳转页面_HTML常用标签
- 《工程师文化行为自我分享》_文化对于鼓励创新行为至关重要
- docker 安全性_使用最新的安全性增强来调整Docker
- es6 Decorator类的修饰器
- 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结
- c语言用字符串统计一个整数中数字的个数_全国计算机等级考试二级C语言
- dw2019连接mysql数据库_Dreamweaver 8.0连接Mysql数据库全攻略
- c语言如何删除数组中的某一个元素_数据结构之线性表高效删除重复元素
- 理解Vue的计算属性
- 【操作系统】多道程序的理解