从 crontab 中的 python 脚本启动 node.js 脚本

问题描述 投票:0回答:1

Ubuntu 22.04.2 LTS

Python3.11

节点v22.2.0

我试图通过 从 crontab 运行 Python 脚本来从 Python 脚本运行 Node.js 脚本,但是在 Node.js 脚本运行的部分没有任何反应,Python 脚本被正确执行

node.js 脚本(1.js):

const fs = require('fs');
const path = require('path');

const filePath = path.join(__dirname, '3.txt');
const currentDate = new Date().toLocaleString();

fs.appendFileSync(filePath, `${currentDate}\nTest\n`, 'utf8', (err) => {
    if (err) {
        console.error('error:', err);
        return;
    }
    console.log('all done');
});

python脚本:

#!/usr/bin/python3.11
import subprocess      
  
print("start script")
   
result = subprocess.run(['node', '1.js'], capture_output=True, text=True)

if result.returncode == 0:
    print("end script")
else:
    print("Script execution failed.")

我尝试指定完整路径:

/usr/bin/node
subprocess.run(['/usr/bin/node', '1.js'], capture_output=True, text=True)

我尝试连接操作系统并设置 os.environ:

import os
os.environ['PATH'] += ':/usr/bin/node'

没有任何帮助,总是“脚本执行失败”。 - 当它从 crontab 启动时,尽管只是从用户的终端启动时 - 一切正常

所有文件都是“775”和“+x”

python node.js cron
1个回答
0
投票
result = subprocess.run(['/usr/bin/node', '/home/ubuntu/node_script/test/1.js'], check=True, capture_output=True, text=True)

即使两个脚本位于同一目录中,也必须指定 Node.js 脚本的绝对路径

© www.soinside.com 2019 - 2024. All rights reserved.