Python通过fork的方式防止僵尸进程
import subprocess
import os
import sys
import platform def fock_new(func):
def inner(*args, **kwargs):
if 'Linux'.__eq__(platform.system()):
print "main process start"
try:
pid = os.fork()
if pid > 0:
print "after fock enter main process"
print {'result': 'success', 'msg': 'Starting deploy'}
sys.exit(0)
except OSError, e:
print e print "after fock enter sub process"
try:
os.setsid()
pid = os.fork()
if pid > 0:
print "after fock 2 enter sub process"
sys.exit(0)
except OSError, e:
print e
print "after fock 2 enter sunzi process"
return func(*args, **kwargs)
else:
return True
return func(*args, **kwargs)
return inner def test(command):
print fock_new(subprocess.Popen)(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) if __name__ == '__main__':
url = "http://xxx.tar.gz"
path = "E:/xiaol/T"
command = "sh Download.sh {url} {path}".format(url=url, path=path)
test(command)
#!/usr/bin/sh
echo $$>$2/ppid && echo $1>>$2/download_url && wget -o $2/wget-log -P $2 $1 && echo Decompression....>>$2/wget-log && tar -zxf $2/*.tar.gz -C $2 --force-local && rm -rf $2/wget-log $2/ppid $2/*.tar.gz
Python通过fork的方式防止僵尸进程的更多相关文章
- UNIX高级环境编程(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid
本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID 1 进程标识符(Process Identifie ...
- 异步回收fork出的子进程(僵尸进程)
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- linux fork两次避免僵尸进程的程序(简单)
#include<stdio.h> #include<unistd.h> int main() { pid_t pid,pid1; int status; ) { printf ...
- 进程基本-进程创建,僵尸进程,exec系列函数
Linux系统中,进程的执行模式划分为用户模式和内核模式,当进程运行于用户空间时属于用户模式,如果在用户程序运行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程的运行模式就变为 ...
- fork()和僵尸进程
2018-01-03@望京 关于fork()函数,Unix/Linux提供的fork()系统调用,fork()一次返回两次, 操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在 ...
- Python脚本模拟僵尸进程与孤儿进程
最近一台机器的systemd内存高达30%多,一直不变,后来排查是僵尸进程,什么是僵尸进程呢,只能google,百度等先了解,然后自己总结了一下,虽然这是基础的东西,但是对于我来说就如新大陆一样.花了 ...
- python学习笔记—— 多进程中的 孤儿进程和僵尸进程
1 基本概述 1.1 孤儿进程和僵尸进程 父进程创建子进程后,较为理想状态是子进程结束,父进程回收子进程并释放子进程占有的资源:而实际上,父子进程是异步过程,两者谁先结束是无顺的,一般可以通过父进程调 ...
- 1.1 Linux中的进程 --fork、孤儿进程、僵尸进程、文件共享分析
操作系统经典的三态如下: 1.就绪态 2.等待(阻塞) 3.运行态 其转换状态如下图所示: 操作系统内核中会维护多个队列,将不同状态的进程加入到不同的队列中,其中撤销是进程运行结束后,由内核收回. 以 ...
- fork()函数的执行过程、孤儿进程和僵尸进程
说起fork就不得不提COW(Copy On Write),就是“写时拷贝”.也就是当fork发生时,子进程根本不会去拷贝父进程的内存页面,而是与父进程共享.当子进程或父进程需要修改一个内存页面时,L ...
随机推荐
- Failed to import package with error: Couldn't decompress package
解压unitypackage的时候出错.原因是路径中包括中文字符,更改成英文路径就可以. 參考 Error while importing package: Couldn't decompress p ...
- JQuery常用操作实现方式
http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...
- Lua顺序 执行顺序
1.4.2. Lua顺序 Nginx下Lua处理阶段与使用范围: init_by_lua http set_by_lua server, server if, location, location i ...
- 移动端数据库新王者:realm
介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...
- 使用spring-boot-maven-plugin打包
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...
- java 使用Date类、Calendar类,实现增加日期
Date date= new Date(); System.out.println("Date date= new Date()中的date: "+date); 输出对象date: ...
- Java基础07 包(转载)
包(package)的目的就是为了更好的组织Java程序. 包的建立 包的建立非常简单.我们只用在Java程序的开始加入package就可以了.我们以Human类为例,将它放入包中: packag ...
- 安装webpack最新版本出现错误
安装完了webpack出现了以下错误 解决办法 cnpm install webpack-cli -D 安装之后,就可以正常使用webpack了
- Linux Linux程序练习三
/* index1 = 45 index2 = 36 index3 = 231 index4 = 43 index5 = 100 index6 = 123 index7 = 51 * * 通过读取读取 ...
- spark 1.3 发布了
悄悄地,spark 还是像往常一样,发布了1.3版本,从release notes可以看出,这一版本比较大的变化是1. 增加了DataFrame API,这样以后操作一些结构化的数据集时将会变的非常方 ...