首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用child_process (节点js)在后台运行python脚本

使用child_process (节点js)在后台运行python脚本
EN

Stack Overflow用户
提问于 2016-06-30 07:40:40
回答 2查看 2.2K关注 0票数 1

我在raspberry pi上有一个python脚本test.py,需要在后台运行。使用CLI,我这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python test.py &

但是,如何使用节点js中的child_process进行同样的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var spawn = require("child_process").spawn;
var process = spawn("python",["/path/to/test.py", "&"]);

我有这段代码,这似乎不起作用。请提出实现这一目标的可能方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 07:47:09

不要在命令行参数中使用& (符号)。它由shell使用,而不是python使用。

使用{detached: true}选项,这样它就能够在节点进程退出时存活:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var spawn = require("child_process").spawn;
var p = spawn("python", ["/path/to/test.py"], {detached: true});

如果您还想要存储其输出,请使用{stdio: 'ignore'}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var spawn = require("child_process").spawn;
var p = spawn("python", ["/path/to/test.py"], {detached: true, stdio: 'ignore'});

另外,我不会命名变量process,因为它是由节点使用的:

process对象是一个全局对象,它提供有关当前Node.js进程的信息并对其进行控制。作为一个全局工具,Node.js应用程序总是可以使用它,而不需要使用require()。

请参阅:流程

更新

如果它仍然没有退出,尝试添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p.unref();

到您的程序,其中pspawn返回的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var spawn = require("child_process").spawn;
var p = spawn("python", ["/path/to/test.py"], {detached: true, stdio: 'ignore'});
p.unref();

更新2

下面是一个shell会话示例--如何运行它,测试它是否工作并杀死它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat parent.js 
var spawn = require("child_process").spawn;
var fs = require("fs");
var p = spawn("sh", ["child.sh"], {detached: true, stdio: 'ignore'});
p.unref();
$ cat child.sh 
#!/bin/sh
sleep 60
$ node parent.js 
$ ps x | grep child.sh
11065 ?        Ss     0:00 sh child.sh
11068 pts/28   S+     0:00 grep child.sh
$ kill 11065
$ ps x | grep child.sh
11070 pts/28   S+     0:00 grep child.sh
$ 
票数 1
EN

Stack Overflow用户

发布于 2016-06-30 07:49:16

你不应该这么做的。流程应该由真正的流程管理器来处理。

如果要运行后台进程,应该研究如何在Raspberry Pi中运行服务。这取决于运行在Raspberry Pi (新贵 (类似于Debian)或系统d (如CentOS))上的Linux发行版。

但是无论如何,引用文档的一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38127766

复制
相关文章
后台运行python脚本
在Linux系统中,可以使用nohup命令将一个进程放到后台运行,并将该进程的输出重定向到一个文件中。以下是在后台运行Python脚本的步骤:
用户8658949
2023/03/04
3.8K0
shell脚本后台运行
1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2. 使用nohup在后台执行命令 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉。要避免这种情况,你可以使用nohup命令,如下所示: $ nohup ./my-shell-script.sh & 3. 使用screen执行命令 通过nohup和&符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。但是,你
一灰灰blog
2018/02/06
4.3K0
在Hadoop上运行Python脚本
之前已经配置好了Hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。
py3study
2020/01/06
4.2K0
在linux后台运行脚本的方法和命令
后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:./test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid) 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number 以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。
大数据流动
2020/06/19
3.6K0
4、shell脚本后台运行知识
在实际工作中,一般会通过ssh连接服务器,隐藏可能就会有脚本或命令在执行期间不能中断的需求,若中断,则不仅前功尽弃,还可能破坏系统数据,下面是防止脚本执行终端的3种方法:
jackxiao
2021/11/16
2.6K0
在云主机后台进行python程序运行
nohup python main.py & nohup liunx自带的命令 注意:后面(&)!
py3study
2020/01/20
1.8K0
python selenium后台运行
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') driver = webdriver.Chrome(chrome_options=chrome_options) driver.get('http://baidu.com')#打开百度首页,可以更换引号内的网址实现打开任一网址 print driver.title#在编辑器的终端可以看到网站的标题打印出来 driver.quit()#关闭Chrome浏览器,如果不写这句话浏览器就会停留在百度首页在后台运行不会关闭浏览器
用户5760343
2019/07/27
2.3K0
如何让 Python 脚本在工作日运行?
你好,我是征哥,最近用 Python 写了个每日签到答题的脚本,想让它在工作日每天运行,于是我找到了这个三方库-chinesecalendar。
somenzz
2022/05/24
3.2K0
如何让 Python 脚本在工作日运行?
Centos后台挂机Python脚本
注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。
SingYi
2022/07/14
1.8K0
Centos后台挂机Python脚本
Centos后台运行python程序
nohup python -u test.py > test.log 2>&1 &
JQ实验室
2022/02/10
1.4K0
Windows后台运行python程序
启动的方法就是直接在cmd下,脚本名.py install ,然后去windows 的服务下就可以看到The smallest possible Python Service 这个服务,你可以启动,停止,还可以设置成开机自动启动。
py3study
2020/01/09
3.6K0
Windows 下后台运行 Python
【code】 #encoding: utf-8 #author: walker #date: 2019-05-24 #summary: 简单的 http server,用于测试后台运行 import http.server import socketserver PORT = 5678 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd:   
py3study
2020/01/10
3K0
在Windows下配置定时运行的Python脚本
目前我们写出的Python代码,无论是jupyter notebook里还是变成.py格式的脚本,都是需要手动点按钮运行,但是在有些需要自动化定期运行脚本的情况怎么办呢?《Python数据分析基础》这本书用一个简短的章节介绍了实现方法。思路就是利用 Windows 系统或 macOS 系统中可定期运行脚本和其他可执行文件的程序。微软称这个程序为 Task Scheduler(任务计划程序) ;在 Unix 系统和 macOS 系统中,这样的程序称为 cron(定时任务) 。本笔记只实现Windows 10系统的自动化。
蛰虫始航
2019/09/29
3.7K0
在Windows下配置定时运行的Python脚本
如何使程序在Linux后台运行
这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:
阿凡亮
2020/04/14
8.8K0
使程序在Linux下后台运行
我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:
SingYi
2022/07/14
4.3K0
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.3K0
在 Linux or windows 上后台运行服务
在Windows上如何后台运行JuiceFS
JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。
用户1260683
2022/03/30
2.9K0
在Windows上如何后台运行JuiceFS
pycharm写脚本_pycharm运行python脚本
$ {MONTH_NAME_SHORT} – 月份名称的前3个字母。 示例:1月,2月等
全栈程序员站长
2022/11/17
2.1K0
pycharm写脚本_pycharm运行python脚本
使用命令行界面运行Python脚本
本文将讲解如何使用带有argparse库的命令行界面运行Python脚本。命令行界面(CLI)允许我们通过在Shell(如果使用的是Windows,则为命令提示符)中键入命令来执行程序。我们可以在命令行上键入不同的参数并将这些参数传递到脚本中,而不是每次运行脚本时都更改.py文件中的代码。因此,使用CLI是非常灵活和方便的,而且,从黑屏启动程序会让你更酷,更像一个真正的程序员。
fanjy
2022/04/13
2.9K0
使用命令行界面运行Python脚本
使用Zolom内存解析运行python脚本(不落地)
好多工具都是python写的,如果目标机器是linux的话自带python环境可以很方便的运行这些工具,但是windows下是不自带python环境的,所以一种办法是直接在目标环境安装一个python,另外一种就是直接在内存加载python脚本。
CN_Simo
2020/08/20
1K0
使用Zolom内存解析运行python脚本(不落地)

相似问题

使用node.js child_process调用python脚本

44

使用命名参数从Node.js (child_process)运行python脚本

269

如何从节点js运行python脚本

13

等待python脚本从节点js运行。

12

让python脚本在unix后台运行

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文