240 发简信
IP属地:四川
  • 面试内容梳理之Linux操作系统

    问熟悉Linux操作系统么?答: linux 操作系统按照层次可以分为用户态和内核态两层。用户态主要运行着用户的应用程序,比如shell,nginx等程序。内核态主要运行着驱...

  • @Absolute273 有三层关系不是因为shell=True。 是因为shell执行命令的方式。
    父进程是python 进程, 子进程是subprocess.Popen进程, 因为代码例子中的subprocess.Popen 入参shell=False(默认), 所以subprocess.Popen进程就是bash 'bash', '/home/XXXX/test.sh' 进程,它是一个shell, shell的执行方式就是默认新建一个进程去执行/home/XXXX/test.sh脚本里面的命令,就是ping, 所以可以看到三层关系。 如果把ping 前面加上exec 那么就没有孙进程, 看不到bash进程了,因为ping直接是在子进程bash中执行的。 可以通过打印一下subprocess.Popen的进程号和'bash', '/home/XXXX/test.sh' 脚本运行的进程号,以及ps -ef | grep ping ps -ef |grep bash验证这个关系。 如果suprocess.Popen 入参shell=True 那么应该是有4个进程,可以验证一下。 centos 和debian是一样, 你如果是用文章中的第一个测试例子的话,出现两层关系的情况应该是用ps 查看的时候,已经达到了超时时间,bash已经被干掉了, 你可以把超时时间设成1000再验证一下, 我在验证的时候也遇到过。

    python subprocess.Popen系列问题

    最近在项目中遇到一个需求,前端发来一个命令,这个命令是去执行传递过来的一个脚本(shell 或者python),并返回脚本的标准输出和标准出错,如果执行超过设定时间还没结束就...

  • 是的,没有被回收。
    子进程没被回收是因为没有被wait掉,之所以没有被wait,就是因为孙进程一直在执行,往stdout输出。 所以孙进程(ping进程)也没有被回收。 最终的解决办法也是preexec_fn=os.setsid或者preexec_fn=os.setpgrp,然后在超时的时候执行os.killpg(p.pid, signal.SIGKILL)杀掉子进程孙进程以及在同一个会话的所有进程。

    python subprocess.Popen系列问题

    最近在项目中遇到一个需求,前端发来一个命令,这个命令是去执行传递过来的一个脚本(shell 或者python),并返回脚本的标准输出和标准出错,如果执行超过设定时间还没结束就...

  • 在代码中通过fork + exec 去执行一个脚本,很多时候我们并不知道这个脚本是shell 或者是python或者是其他的脚本, 又或者并不知道这个shell脚本是用bash还是dash去运行。 而通过bash -c "/home/abs/path/test args1 args2" 的模式去运行,那么就可以在/home/abs/path/test文件头通过#!/usr/bin/env python 或者#!/bin/bash或者 #!/bin/dash的方式指定用什么环境去运行脚本,其实就是文中提到的第三点。这种情况在master/agent架构中的agent中很常见。
    当然这也只是参考的一个方面, 其他情况或许不一样,需要根据情况而定。

    bash -c 注意事项

    用法:bash -c "cmd string"通常使用shell去运行脚本,两种方法 bash xxx.sh,另外一种就是bash -c "cmd string"对于ba...

  • 递归转码函数的倒数第三行:return input.encode(encoding) 是不是应该是:
    return input.encode(‘utf-8’)

  • 120
    windows10虚拟机ubuntu安装minikube记录

    首先说明,我的虚拟机上的ubuntu系统是走了代理的,能够直接访问谷歌,所以才会有后面的流程和问题。1.安装virtualbox 2.安装kubectl 3.安装miniku...

  • 请教一下,文章最后的列出的CrashLoopBackOff等一系列的状态,官方文档或者源码中哪儿有说明?

    kubelet Pod 的状态分析

    pod从创建到最后的创建成功会分别处于不同的阶段,在源码中用PodPhase来表示不同的阶段: 运行中(PodRunning):该 Pod 已经绑定到了一个节点上,Pod 中...

  • tornado流程第二次分析

    先上代码例子: 关于tornado,它既是web服务器(看成nginx服务),又是web框架(看成一个wsgi程序),不过官方推荐两个一起用才能发挥最大功效。所以不管是tor...

  • 120
    kubernetes基本框架和基本概念

    kubernetes基本框架和基本概念 Kubernetes是什么?我(们)为什么使用?Kubernetes主要概念Kubernetes总体结构Kubernetes核心原理K...

  • 关于golang的context控制协程的例子

    关于context的概念,可以参考http://www.flysnow.org/2017/05/12/go-in-action-go-context.html协程间的通信方式...

  • 一个跑的通的例子
    非常感谢

    用Docker部署Flask应用

    近几年,容器越来越火,也越来越好用,我也开始尝试使用容器来运行我的应用。本篇主要讲述如何将一个Flask应用正确地运行在Docker容器中。 创建应用 创建一个文件夹test...

  • “goroutine用完再内部不会被销毁的”这句怎么理解?
    也就是即使这个协程退出了,协程占用的资源也不会释放?那如果这样的话,更应该有用协程池呀。不然一个daemon服务,有任务就开新的协程,那资源还不得刷爆?
    最后关于golang不用协程池,有官方的说明么? golang菜鸟,望指导。 多谢

    golang实现协程池

    golang中启动一个协程不会消耗太多资源,有人认为可以不用协程池。但是当访问量增大时,可能造成内存消耗完,程序崩溃。于是写了一个协程池的Demo。 Demo中有worker...

  • @coffeeying 首先确认一下,所说的当前登录用户是指所有的登录用户,还是当前请求页面的登录用户。如果是请求页面的登录用户,个人理解,那应该是可以的,这个跟前后端分离没关系,在django中,用户认证都是要走这样的流程,所以request.user就是登录的用户。

    基于rest-framework对django的RESTful API进行权限设置

    当我们通过django框架创建RESTful API对外提供后,我们希望这些API只有相关权限的人才可以调用,这个怎么做呢?可以采用在django框架之上rest-frame...

  • @IT人故事会 嗯,趁周末,可以对本周内的事儿做个好好的总结。。共勉,加油!

    python requests库流程简析

    今天重新梳理网络编程的时候,想到对于部分应用,他们的数据流是按照http协议,中间经过其他协议层,最后通过底层的物理层到达服务器的,这使我想到了Requests库。Reque...