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”
result = subprocess.run(['/usr/bin/node', '/home/ubuntu/node_script/test/1.js'], check=True, capture_output=True, text=True)
即使两个脚本位于同一目录中,也必须指定 Node.js 脚本的绝对路径