[转载] linux程序后台挂起demo——nohup
1. nohup
原来跑程序关了终端,程序就停了,咱的目的是后台挂起,关了终端,只要电脑不关程序就一直再跑,可以借助nohup
指令,接下来给个例子看看:
新建一个 shanchu.py
文件:
import time
while(1):time.sleep(3)print(time.time())with open("x.txt", "a+") as f:f.write("{}\n".format(time.time()))
shanchu.py
运行会将时间戳写入 x.txt
nohup python shanchu.py &
&:让命令在后台执行,终端退出后命令仍旧执行。
可以看下x.txt
的内容,以验证该程序是否在后台运行
2. 日志+错误重定向
但是这样在后台,要是程序报错了怎么办,要看程序输出怎么办,所以需要这样,将将输出写入log且错误重定向:
nohup python shanchu.py > log.log 2>&1 &
2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
- 0 – stdin (standard input,标准输入)
- 1 – stdout (standard output,标准输出)
- 2 – stderr (standard error,标准错误输出)
再来做个实验,修改一下python文件,多两个打印print
,最后print(ee)
故意报错
import time
while(1):print(12)print(23)time.sleep(3)print(time.time())with open("x.txt", "a+") as f:f.write("{}\n".format(time.time()))print(ee)
执行:
nohup python shanchu.py > log.log 2>&1 &
来查看一下输出:
$ cat log.lognohup: ignoring input
12
23
1665317182.0910141
Traceback (most recent call last):File "shanchu.py", line 9, in <module>print(ee)
NameError: name 'ee' is not defined
可以看到输出和错误都在log文件中
3. 手动结束该后台进程
原来后台运行程序,咱们可以用jobs -l
来查看
但是 jobs 命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时只能利用ps(进程查看命令)
ps -aux|grep shanchu.py
- a:显示所有程序
- u:以用户为主的格式来显示
- x:显示所有程序,不以终端机来区分
$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
......
xxx 1028204 0.0 0.0 9440 7428 pts/0 Ss 12:21 0:00 -bash
xxx 1028402 0.8 0.0 12984 10736 pts/0 S 12:23 0:00 python shanchu.py
xxx 1028405 0.0 0.0 7892 3420 pts/0 R+ 12:23 0:00 ps -aux$ ps -aux | grep shanchu.py
xxx 1028402 0.4 0.0 12984 10736 pts/0 S 12:23 0:00 python shanchu.py
xxx 1028409 0.0 0.0 5200 668 pts/0 S+ 12:23 0:00 grep shanchu.py
用ps -def | grep查找进程很方便,最后一行总是会grep自己
用grep -v参数可以将grep命令排除掉
$ ps -aux | grep shanchu.py | grep -v grep
xxx 1028402 0.0 0.0 12984 10736 pts/0 S 12:23 0:00 python shanchu.py
再用awk提取一下进程ID
$ ps -aux | grep shanchu.py | grep -v grep | awk '{print $2}'
1028402
然后 kill 结束进程即可
kill -9 进程号
有参考
https://www.runoob.com/linux/linux-comm-nohup.html
https://www.cnblogs.com/baby123/p/6477429.html
[转载] linux程序后台挂起demo——nohup相关推荐
- 后台运行linux程序,后台运行Linux程序的方法
后台运行Linux程序,可以通过crontab设置,这种方法一般用来让一个程序定时运行,也可以通过./test &这样在程序末尾加上一个&使程序在后台运行. 编写代码,下面我将参考ht ...
- nohup 与 linux 程序后台执行
来源:http://blog.chinaunix.net/uid-446337-id-94446.html & 方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & ...
- linux程序后台运行详解
一.linux常用信号 SIGHUP 在介绍SIGHUP之前先介绍两个概念:进程组.会话 进程组 进程组就是一系列相互关联的进程集合,系统中的每一个进程也必须从属于某一个进程组:每个进程组中都 ...
- Linux 程序后台运行与删除
一.查看进程:ps 或 ps -a 二.命令后台运行: sudo ./runmyled.o& 命令后边跟个&, 返回进程id号 三.查看当前的进程: 四.删除进程:sudo kill ...
- linux后台启动脚本nohup,linux下后台执行shell脚本nohup
[GSM]GTM900C的应用--短信 虽说GSM已经很老旧,但其低廉的价格,非常适合一些需要小数据上网传输和短信等功能的应用场合. 不知道GSM能否像51单片机一样,在低端应用中长久不衰.GTM90 ...
- Linux 下后台运行程序,查看和关闭后台运行程序(转载)
1.运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令. (1)&命令 功能:加在一个命令的最后,可以把这 ...
- Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Linux在后台运行python程序.脚本程序.可执行程序等,关闭终端仍可保持程序运行 文章目录: 1 为什么需要后台运 ...
- 使程序在Linux下后台运行
一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...
- Linux程序前台后台切换
Linux程序前台后台切换1.在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行Ubuntu$">root@Ubuntu$ ./tcpserv01 ...
最新文章
- 猫哥教你写爬虫 006--条件判断和条件嵌套
- 给定一个数组求里面数字拼在一起组成的最小数字
- request.getServletContext()
- SSH-jar包相应作用
- php判断对象属于哪个类,PHP instanceof:判断对象是否属于某个类
- 详解道路标记数据集 CeyMo: See More on Roads -- A Novel Benchmark Dataset for Road Marking Detection
- [转载]--- 开箱即用的springboot分库分表sharding-JDBC
- 扣绩效,从来都不会让团队变得更好
- python绘制三维图散点图_python matplotlib模块——绘制三维图形、三维数据散点图...
- python自动导出数据脚本_使用python生成一个导出数据库的bat脚本文件的示例代码...
- 剑桥女博士创立情绪识别 AI 公司,帮助自闭症患者理解他人表情
- linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案
- layui表格使用复选框批量删除_LayUI表格批量删除方法
- cad批量打印_CAD批量打印(探索者易打软件)
- 怀旧--这些游戏你都玩过么?还记得么?
- 本地Blast2GO安装
- 矩阵中的entries是什么
- 11.媒体查询.html
- 分析IBinder体系中getService的流程
- UnityVR--小程序4--第一人称控制器