server {
        listen 80;

        server_name jenkins.yueqiumao.com;

        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header X-Forwarded-Host $host:$server_port;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

child = subprocess.Popen(args, shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
child.wait() # 等待进程结束
child.stderr.read() # 获得 stderr 的输出内容

args 可以传入 字符串 或者 字符串数组
shell False 直接执行 args 数组第一个元素指定的可执行文件,True 先执行 shell 进程,然后把 args 字符串传递给它执行 (linux 类似 ['/bin/sh', '-c'] windows ['cmd.exe', '/c'])

subprocess 常用的方法:

  • poll 检查进程是否结束,并设置返回值,None表示还没结束
  • wait 等待进程结束,并设置返回值
  • communicate // TODO
  • terminate 终止进程
  • kill 杀死进程(发送 SIGKILL 信号)

echo '{"name": "hello", "age": 18}' | python3 -m json.tool
echo '{"name": "hello", "age": 18}' | python2 -m json.tool

cat file.json | python3 -m json.tool
cat file.json | python2 -m json.tool

{
    "age": 18,
    "name": "hello"
}

xargs 把通过管道传输的命令转换成命令行参数

echo hello | xargs echo

echo 只支持从命令获取参数