linux 下通过fork实现后台运行进程
1 # 通常建议使用双fork方法。在每个fork处,父级退出,子级继续
2
3 #!/usr/bin/env python
4
5 import time,platform
6
7 import os
8 def funzioneDemo():
9
10 # 这是具体业务函数示例
11
12 fout = open('/tmp/demone.log', 'w')
13
14 while True:
15
16 fout.write(time.ctime()+'\n')
17
18 fout.flush()
19
20 time.sleep(2)
21
22 fout.close()
23 def createDaemon():
24
25 # fork进程 ,首先fork在setsid之前,确保进程不是进程组领导
26
27 try:
28
29 if os.fork() > 0: os._exit(0)
30
31 except OSError, error:
32
33 print 'fork #1 failed: %d (%s)' % (error.errno, error.strerror)
34
35 os._exit(1)
36
37 os.chdir('/')
38
39 os.setsid()
40
41 os.umask(0)
42 # 在setsid之后的第二个fork确保与控制终端的新关联不会仅仅通过打开终端设备来启动
43 try:
44
45 pid = os.fork()
46
47 if pid > 0:
48
49 print 'Daemon PID %d' % pid
50
51 os._exit(0)
52
53 except OSError, error:
54
55 print 'fork #2 failed: %d (%s)' % (error.errno, error.strerror)
56
57 os._exit(1)
58
59 # 重定向标准IO
60
61 sys.stdout.flush()
62
63 sys.stderr.flush()
64
65 si = file("/dev/null", 'r')
66
67 so = file("/dev/null", 'a+')
68
69 se = file("/dev/null", 'a+', 0)
70
71 os.dup2(si.fileno(), sys.stdin.fileno())
72
73 os.dup2(so.fileno(), sys.stdout.fileno())
74
75 os.dup2(se.fileno(), sys.stderr.fileno())
76 # 在子进程中执行代码
77
78 funzioneDemo() # function demo
79 if __name__ == '__main__':
80
81 if platform.system() == "Linux":
82
83 createDaemon()
84
85 else:
86
87 os._exit(0)
linux 下通过fork实现后台运行进程的更多相关文章
- Linux下 SpringBoot jar项目后台运行、查看、停用
运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...
- linux下程序启动后后台运行实现
关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,root#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要 ...
- 在linux下利用nohup来后台运行java程序
nohup java -jar /etc/deny/denyHttp_fat.jar & http://limaoyuan.iteye.com/blog/900928 http://zshou ...
- Linux下使用matlab在后台默默的运行.m文件(无界面形式)
Linux下使用matlab在后台默默的运行.m文件(无界面形式)本主在Ubuntu18.04LTS上已经安装了matlab直接运行Matlab$ matlab会启动 matlab,出现启动界面但想要 ...
- linux 命令行远程登录 后台运行命令的方法
linux 命令行远程登录 后台运行命令的方法 http://blog.csdn.net/isuker/article/details/55061595 Linux 技巧:让进程在后台可靠运行的几种方 ...
- Linux命令nohup实现命令后台运行并输出到或记录到日志文件
Linux命令nohup实现命令后台运行并输出到或记录到日志文件 导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好. ...
- Linux下librdkafka客户端的编译运行
Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...
- Linux 下在后台运行进程:nohup,setsid,& 以及 tmux
参考: Linux 技巧:让进程在后台可靠运行的几种方法 ssh 登录了远程服务器时,如果在前台运行耗时较长的任务, 当 ssh 掉线或关闭窗口时会导致命令停止运行. hup 与 nohup 当用户注 ...
- linux 后台运行进程 fg bg ctrl+z nohup
fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &am ...
随机推荐
- 提升组件库通用能力 - NutUI 在线主题定制功能探索
开发背景 NutUI 作为京东风格的组件库,已具备 H5 和多端小程序开发能力.随着业务的不断发展,组件库的应用场景越来越广.在公司内外面临诸如科技.金融.物流等各多个大型团队使用时,单一的京东 AP ...
- 在线Remix链接本地文件夹
问题 1.本地Remix环境版本滞后于在线编译器,新版本的语法在旧版本编译器中出现错误. 2.没有配置Vscode编译器,不便导入项目. 解决方案 *本解决方案基于Mac系统 创建共享文件夹 在本地创 ...
- 一文了解MySQL的Buffer Pool
摘要:Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库的读写性能. 本文分享自华为云社区<MySQL 的 Buffer Pool,终于被我搞懂了>,作者:小林 ...
- 有序全排列c++实现(递归)
1 #include <iostream> 2 #include <algorithm> 3 #include <iterator> 4 #include < ...
- 多数据源并且数据库类型不同的情况下PageHelper的使用
一.问题来源 最近开发一个项目需要依赖两个数据源,数据源类型分别为oracle和postgresql,代码中使用com.github.pagehelper分页插件进行分页,代码运行过程中postgre ...
- Java有没有goto?
goto是Java中的保留字,暂时还不是Java的关键字.
- Dubbo 和 Spring Cloud 的区别?
根据微服务架构在各方面的要素,看看 Spring Cloud 和 Dubbo 都提供了哪些支 持. Dubbo Spring Cloud 服务注册中心 Zookeep er Spring Cloud ...
- String s = new String("xyz");创建了几个String Object?二者之间有什么区别?
两个或一个,"xyz"对应一个对象,这个对象放在字符串常量缓冲区,常量"xyz"不管出现多少遍,都是缓冲区中的那一个.New String每写一遍,就创建一个新 ...
- 手把手教你打造一个纯CSS图标库
来,干了这碗安利 写这篇文章的目的其实就是为了安利一下我的图标库:iconoo,所以,开门见山,star吧少年少妇们!(这样的我是不是应该要加个github互粉的团伙了?) 主题说完了,下面进入正题. ...
- AS之AlertDialog使用
关于AlertDialog的使用,主要是去做一个弹窗. import android.content.DialogInterface; import android.os.Bundle; import ...