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 ...
随机推荐
- 【基础】java环境搭建及配置--->【关注微信公众号:三叔测试笔记,及时获取干货】
一.下载安装 Java官网下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.ht ...
- bzoj4671 异或图(斯特林反演,线性基)
bzoj4671 异或图(斯特林反演,线性基) 祭奠天国的bzoj. 题解时间 首先考虑类似于容斥的东西. 设 $ f_{ i } $ 为至少有 $ i $ 个连通块的方案数, $ g_{ i } $ ...
- Java线程池七个参数详解
Java多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释. 从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize.maximumPoolS ...
- spring集成mongodb简单使用和测试方式
@EnableMongoRepositories @ComponentScan(basePackages = "cn.example") @Configuration public ...
- spring-boot-learning-使用jsp
加入依赖: <!-- jsp--> <!--引入Spring Boot内嵌的Tomcat对JSP的解析包--> <dependency> <groupId&g ...
- springboot-数据库访问之mybatis
选中mysqldirver,数据库驱动器 选中jdbc ,帮我们配置数据源,连接数据库 选中mybatis,持久层 <!-- 这个不是springboot官方出来的,是mybatis为了设备sp ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(查询处理)
一个 Citus 集群由一个 coordinator 实例和多个 worker 实例组成. 数据在 worker 上进行分片和复制,而 coordinator 存储有关这些分片的元数据.向集群发出的所 ...
- 串联型PID,并联型PID与标准型PID简要说明
PID广泛应用于工业生产各个环节,然而对于不同PID结构会有一些差异,导致在调参时若按照常规的经验调试,结果将会有非常大的不同. 串联型PID(Serial PID) 串联型PID的三个环节由比例,积 ...
- 安装ESLint
安装ESLint ESLint是静态代码检查工具,配合TypeScript使用可以帮助检查TypeScript的语法和代码风格. 添加ESLint到当前工程,yarn add -D eslint. 使 ...
- CSS入门指南-4:页面布局
这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...