python os.system、os.popen、subprocess.Popen的区别

2020-01-31 01:23栏目:龙竞技官网
TAG:

homebrew 是 mac os 下常用的包管理工具,在使用brew命令时可能会遇到如下问题:

个人博客地址:Mac本地推流直播服务器(nginx、rtmp服务器+ffmpeg推流) 在2016过去的一年里移动端直播的火爆程度,不亚于去年楼盘的疯涨。作为一个合格的开发者,也要跟进时代的潮流。下面介绍一下基于Mac os系统搭建一个本地的直播服务器。主要是基于nginx+rtmp环境搭建的。 nginx、rtmp是在Mac上的终端安装Homebrow后,执行命令行来安装的。(提示安装最好开vpn翻墙,不然会很慢甚至有可能会安装失败)</br>

1、使用os.system("cmd")

图片 1error_info.png

安装命令行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

这是最简单的一种方法,其执行过程中会输出显示cmd命令执行的信息。

该问题可能是由于/usr/local的权限造成的,可能跟 os x 升级到 ei capitan 有关系。可以通过下面的一组命令进行解决:

卸载命令行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

相关操作截图:

图片 2Snip20170222_1.png

例如:print os.system("mkdir test") >>>输出:0

chown -R $:admin /usr/localcd $(brew --prefix)git fetch origin
clone nginx项目到本地的命令行:
brew tap homebrew/nginx

相关操作截图:

图片 3Snip20170222_3.png

可以看到结果打印出0,表示命令执行成功;否则表示失败(再次执行该命令,输出:子目录或文件 test 已经存在。1)。

执行过程如下图:

下载成功后,执行安装命令行(注意执行是输入命令是nginx-full,中间不能有空格):
brew install nginx-full --with-rtmp-module

这个过程会比较长,请耐心等待

相关操作截图:

图片 4Snip20170222_4.png图片 5Snip20170222_5.png图片 6Snip20170222_6.png

打开finder,复制对应的路径,找到对应的文件夹或者文件,右键显示简介。修改共享与权限一栏中,用户对该文件夹或者文件的权限为读与写。修改完后可以在执行命令:

brew link nginx

如果仍然又问题,可以执行诊断的命令,对相应的错误进行排查:

brew doctor

相关操作截图:

图片 7Snip20170222_9.png

按照以上的操作后nginx、rtmp已经在Mac上安装完成了,但是还需要配置nginx、rtmp。</br>

终端打印出nginx的相关信息:

brew info nginx-full

可以看到到nginx的安装位置(1.10.3是安装后的nginx的版本号,可以通过nginx -v命令查看):

/usr/local/Cellar/nginx-full/1.10.3/bin/nginx

nginx配置文件的位置:

/usr/local/etc/nginx/nginx.conf

2、使用os.popen("cmd")

图片 8change_access.png图片 9git_fetch_origin.png

nginx服务操作

服务启动:

nginx或者sudo nginx

其他操作:

nginx -s 重新加载配置|重启|停止|退出nginx -s reload|reopen|stop|quitnginx -V 查看版本,以及配置文件地址nginx -v 查看版本nginx -c filename 指定配置文件nginx -h 帮助nginx -t 测试配置是否有语法错误

nginx启动后,在浏览器里输入下面的地址:

Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to nginx.org.Commercial support is available at nginx.com.Thank you for using nginx.

通过os.popen()返回的是file read的对象,对其进行读取read()操作可以看到执行的输出

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:python os.system、os.popen、subprocess.Popen的区别