首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python:为什么subprocess()在Ubuntu中启动2个进程,在OpenSUSE中启动1个?

subprocess是Python中用于创建和控制子进程的模块。它提供了一种在Python程序中启动其他程序的方式,并与其进行交互。

在Ubuntu和OpenSUSE这两个不同的Linux发行版中,subprocess()启动进程的行为差异可能是由于操作系统的差异导致的。不同的Linux发行版可能有不同的默认设置和行为,包括进程管理、资源分配等方面。

具体到为什么在Ubuntu中启动2个进程,在OpenSUSE中启动1个进程,可能涉及到以下几个方面:

  1. 默认shell的差异:subprocess()函数在启动子进程时,默认使用操作系统的默认shell来执行命令。不同的Linux发行版可能使用不同的默认shell,而不同的shell对命令的解析和执行方式可能有所不同,从而导致启动的进程数量不同。
  2. 系统配置的差异:不同的Linux发行版可能有不同的系统配置,包括进程管理、资源限制等方面。这些配置可能会影响到subprocess()函数启动进程的行为。
  3. 版本差异:Ubuntu和OpenSUSE可能使用不同版本的操作系统,不同版本的操作系统可能在进程管理和调度方面有所差异,从而导致启动的进程数量不同。

针对这个问题,可以尝试以下解决方案:

  1. 检查默认shell:可以通过在Python中使用subprocess.getoutput("echo $SHELL")来获取默认shell的路径,并比较Ubuntu和OpenSUSE中的默认shell是否一致。如果不一致,可以尝试在启动子进程时指定使用相同的shell。
  2. 检查系统配置:可以比较Ubuntu和OpenSUSE中的系统配置文件,如/etc/sysctl.conf、/etc/security/limits.conf等,查看是否有差异。如果有差异,可以尝试在启动子进程前修改相应的配置。
  3. 更新操作系统:如果是因为版本差异导致的问题,可以尝试更新操作系统到最新版本,以获取更一致的行为。

需要注意的是,以上解决方案仅供参考,具体解决方法可能需要根据实际情况进行调整。另外,腾讯云提供了一系列与云计算相关的产品和服务,可以根据具体需求选择适合的产品。具体产品介绍和链接地址可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【错误记录】Ubuntu ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐普通用户下使用 VSCode 开发环境 )

文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 【开发环境】Ubuntu 安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器...| Ubuntu 安装 deb 包 ) 博客 , Ubuntu 安装了 Visual Studio Code 开发环境 , 发现出现如下问题 : ROOT 用户下无法打开 " Visual...Studio Code 开发环境 " ; 下面是点击了很多次 VSCode 图标 , 都无法启动软件 ; 二、解决方案 ---- 官方不推荐 root 用户下打开 VSCode ; 网上搜索了下解决方案...: 方案一 : 使用 sudo code --user-data-dir ="/home/master/.vscode/" 命令 , 指定用户数据目录 ; 方案二 : ~/.bashrc 文件添加...--no-sandbox --unity-launch' 配置 , 然后执行 source ~/.bashrc 命令刷新配置 ; 切换到非 root 用户后 , 成功启动 VSCode ; 命令行

3.6K40

Python自动重新加载模块详解(autoreload module)

看了一下Python开源的Web框架(Django、Flask等)都有自己的自动加载模块功能(autoreload.py),都是通过subprocess模式创建子进程,主进程作为守护进程,子进程中一个线程负责检测文件是否发生变化...,如果发生变化则退出,主进程检查子进程的退出码(exist code)如果与约定的退出码一致,则重新启动一个子进程继续工作。...:python-autoreload$ python runner.py [11743]enter… 主程序已经运行,只不过是一致循环,可以查看此时有两个进程: promissing@ubuntu...守护进程模式-退出问题 为了解决由于守护进程退出,而导致子进程没有退出的问题,一种比较简单的解决方法就是守护进程退出的时候也把子进程结束: # autoreload.py ... import signal...等等,控制台上运行工程总是能很好的工作,如果是IDE呢?由于IDE输入输出是重定向处理的,比如,Sublime中就没有办法获取到输出信息。 因此还需要进一步完善输出的问题。

2.7K20

记录一次ubuntu 云服务器 ssh无法连接、断网排查

sudo systemctl status ssh 服务正常启动,ssh配置文件应该不会有改动。云服务器的防火墙,是控制台控制的,机器本身的防火墙默认是关闭的。...问题解决 尝试: sudo dhclient eth0 自动获取ipv4地址,一切正常了,但是为什么会没有ipv4地址呢? 之前也没有啥问题。。。...netplan 依赖python 环境, 我之前用homebrew安装了python,后面因为homebrew安装llvm等有许多依赖问题,又把homebrew 卸掉了(以后再也不用了,linux上问题挺多...我还是更喜欢和更了解opensuse 的,但轻量云服务器不提供 opensuse 的镜像,我之前考虑过把云服务器装上opensuse,后来想想还是用ubuntu 算了,就不折腾了。...目前来看,这个问题要重新考虑了,后续有时间把ubuntu 换成 opensuse 吧。

47210

Python Subprocess库详解

简介 Subprocess库是Python中用于创建和管理子进程的标准库。它提供了一个强大而灵活的接口,使得你可以Python启动新的进程、连接它们的输入和输出,并与它们进行交互。...子进程信号处理 Subprocess库还允许你进程处理子进程的信号,例如在父进程捕获子进程的Ctrl+C信号。...在这个例子,pre_exec_function函数进程启动之前被调用,将子进程设置为新的进程组。...使用subprocess.Popen的preexec_fn参数设置子进程启动前操作 subprocess.Popen的preexec_fn参数允许你进程启动之前执行一个函数。...在这个例子,pre_exec_function函数进程启动之前被调用,将子进程设置为新的进程组。

1.3K21

Python】:自动化部署??Python 也是可以的!!

本文提供了一种思路,在你手边没有那些专业工具或者你暂时还不想接触那些专业工具的时候,也能帮你从繁琐的打包、部署工作解放出来。 Python 就是个很好的选择。 二、为什么打包、部署很繁琐?...tar 包; sftp:上传 tar 包到远程服务器; ssh:远程服务器上,停止运行的旧应用;启动新应用; browser:打开浏览器,看升级是否成功; 场景2:打包、部署基于 Maven、SpringBoot...的后端应用; 每完成一个后新功能或每修正一个bug,就需要: mvn clean package:本地对项目就行构建; sftp:上传构建结果(jar)到远程服务器; ssh:远程服务器上,停止运行的旧应用...三、本地 CMD 执行:subprocess subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。...API: 只需要很简单的封装: 参考: subprocessSubprocess management: https://docs.python.org/3/library/subprocess.html

32330

Python 运维中使用并发

今天从大哥手里接了一个需求: 验证一下新的 Docker 镜像仓库(Docker Registry)是否迁移成功了 简单粗暴的方法就是拿到老仓库的镜像列表(Image List),新仓库模拟用户重新拉取...这里我们用到了一个 Python 标准库(standard module) : import subprocess 我们都知道,命令执行过程中会有标准输出(stdout)和标准错误(stderror):...stderr=subprocess.PIPE).communicate() 上面代码封装了一个方法,它会启动一个子进程执行命令,并将标准输出和标准错误通过管道(进程间通信最常用的方式)收集 管道其实就是文件描述符对...,子进程会继承父进程的所有文件描述符 最后,通过序列解包: stdout, stderr = run_cmd('uname -a') 获取标准输出和标准错误,这个方法我们后面要用到好多 我拿到镜像列表文件了...的标准库,多进程模块:multiprocessing 不要和我说什么Python 有全局解释器锁(GIL),多进程没有 GIL,多进程没有 GIL,多进程没有 GIL 如何并发呢: 启动和核数相等的进程

1.4K121

Python subprocess与命令行交互

Python subprocess 模块是一个功能强大的库,用于启动和与子流程交互。 它附带了一些高级 api,比如调用、检查输出和运行,这些都集中的程序运行和等待完成的子进程上。...虽然可以使用 subprocess.run一个线程启动一个子进程,并在另一个线程与其交互。 但是,当完成了子进程之后,要完全终止它将变得非常棘手。...启动,交互,实时输出,终止 一个相关的用例是以“实时”方式获取子进程的标准输出,而不是最后将所有内容放在一起。 在这里,必须非常小心缓冲,因为它很容易导致程序崩溃和死锁。...Linux 进程通常在交互模式下进行行缓冲,否则进行全缓冲。 很少有进程是完全不缓冲的。 因此,在看来,不建议小于一行的块读取 stdout。 真的,千万别这么做。...完整的代码示例在下里; 关键的部分是这个插座读取功能,意味着它自己的线程运行: https://github.com/python/cpython/blob/master/Lib/socketserver.py

7.3K22

Docker镜像的原理

系统 包括2部分, linux内核,作用是提供操作系统的基本功能,和机器硬件交互,如何读取磁盘数据,管理网络,使用C编写的,由linus的开发团队,内核只提供操作系统的基本功能和特性,如内存管理、进程调度...下面改为使用ubuntu的发行版 docker run -it ubuntu bash 查看容器内的发行版本 cat /etc/lsb-release 进入到opensuse docker run -...Rootfs(root-file system),bootfs之上,包含的就是典型的Linux系统的/dev、/proc、/bin、/etc等标准目录和文件。...镜像安装mysql5.6软件。...Docker为什么分层镜像 镜像分层一大好处就是共享资源,例如有多个镜像都来自同一个base镜像,那么docker host只需要存储一份base镜像。

58910

Appium 并发测试

这里我们推荐使用多进程( multiprocessing) 原因如下: 多进程,同一个变量,各自有一份拷贝存在于每个进程,互不影响。...方案分析 我们可以使用python启动appium服务,这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值。...subprocess模块官方文档 测试场景 使用Python启动2台appium服务,端口配置如下: Appium服务器端口:4723,bp端口为4724 Appium服务器端口:4725,bp端口为4726...代码实现 首先我们使用Python脚本启动单个appium服务: host:127.0.0.1 port:4723 multi_appium.py import subprocess from time...appium进程id 多个appium服务启动 多个appium服务启动非常简单,只需执行环境使用循环调用即可。

2.6K40

7-并发编程

日常的使用,经常会结合多线程和队列一起使用,比如,以爬取simpledestops 网站壁纸为例: import os from datetime import datetime from queue...子进程 python,如果要运行系统命令,会使用 subprocess 来运行,官方建议使用run 方法来运行系统命令,更高级的用法是直接使用其 Popen 接口。...subprocess.run(['ls','-al']) python3.7 之前,默认系统命令执行的结果(输出/错误)不存在stdout/stderr 里面,需要设置 capture_output...如下所示 # python 3.6 >>> a = subprocess.run(['ls','-al'],stdout=subprocess.PIPE) >>> a.stdout # python3.7...() ,子进程可以启动了以后,还可以进行参数的输入 import subprocess print('$ nslookup') p = subprocess.Popen(['nslookup'],

32010

python调用linux执行命令

Linux系统Python可以使用subprocess模块调用操作系统命令,实现与Linux系统的交互。...subprocess模块是Python标准库的一部分,它提供了一组函数,可以启动新的进程,并与它们进行交互。...Linux系统,我们可以使用subprocess模块来执行任何系统命令,包括常见的shell命令、系统管理命令、网络命令等等。...本例,我们分别执行了ls、pwd和ifconfig命令,并将它们的输出打印到控制台上。 使用subprocess模块时,我们可以通过设置一些参数来控制执行的方式。...除了run()函数外,subprocess模块还提供了其他函数,例如Popen()函数和call()函数。Popen()函数可以启动一个新的进程,并返回一个Popen对象,可以用来与进程进行交互。

5K40

ddgr:一个从终端搜索 DuckDuckGo 的命令行工具

Linux ,Bash 技巧非常棒,它使 Linux 的一切成为可能。 对于开发人员或系统管理员来说,它真的很管用,因为他们大部分时间都在使用终端。你知道他们为什么喜欢这种技巧吗?...如果设置了 BROWSER 环境变量,ddgr 可以几个基于文本的浏览器开箱即用。 确保你的系统安装了任何一个基于文本的浏览器。...ddgr 特性 快速且干净(没有广告、多余的 URL 或杂物参数),自定义颜色 旨在以最小的空间提供最高的可读性 指定每页显示的搜索结果数 可以 omniprompt 中导航结果,浏览器打开 URL...$ python3 --version Python 3.6.3 如何在 Linux 安装 ddgr 我们可以根据发行版使用以下命令轻松安装 ddgr。...rpm 如何启动 ddgr 终端上输入 ddgr 命令,不带任何选项来进行 DuckDuckGo 搜索。

70610

Linux 上使用 Lutries 管理你的游戏

你可以使用 Lutries 安装、移除、配置、启动和管理你的游戏。它可以一个单一界面帮你管理你的 Linux 游戏、Windows 游戏、仿真控制台游戏和浏览器游戏。...它目前支持 Arch Linux、Debian、Fedroa、Gentoo、openSUSEUbuntu。...首次启动时,Lutries 的默认界面像下面这样: 登录你的 Lutris.net 账号 为了能同步你个人库的游戏,...请注意,为了同步库的游戏,这里你的 Steam 账号将被公开。你可以同步完成之后将其重新设为私密状态。 手动添加游戏 Lutries 有手动添加游戏的选项。...运行器是指 Linux 上类似 wine、Steam 之类的程序,它们可以帮助你启动这个游戏。你可以从 “Menu -> Manage” 安装运行器。

1.6K00

Python | 常见场景】最佳实践系列 —— 各种场景及运用(适合下饭刷)

希望大佬带带) 该文章收录专栏 [✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨] @toc subprocess 模块 subprocess模块是Python标准库中用于创建和管理子进程的模块...以下是subprocess模块的一些常用功能和用法: 运行外部命令: ``subprocess模块允许您在Python程序执行外部命令。...错误处理: ``subprocess模块还提供了处理子进程的错误和异常的功能。您可以通过检查subprocess.CompletedProcess`对象的属性来获取命令的执行结果、返回码和输出。...步骤 4: 启动 Jupyter Notebook 现在,你可以启动 Jupyter Notebook。...终端运行以下命令: jupyter notebook 这将在浏览器打开 Jupyter Notebook。

16910
领券