我想将node.js进程作为cron作业运行,但是进程运行不正常。
我的javascript代码只是文档(https://pptr.dev/)中提供的第一个木偶示例:
const puppeteer = require('puppeteer'),
process = require('process')
;
(async () => {
console.log( 'process owner: ' + process.env.USER );
console.log('browser launch');
const browser = await puppeteer.launch();
console.log('browser launched, open new page');
const page = await browser.newPage();
console.log('Go to example.com');
await page.goto('https://example.com');
await page.screenshot({path: process.env.USER + '_example.png'});
await browser.close();
})();
我添加了用户名以验证正在运行脚本的用户,并且cron作业是这样的:
01 * * * * /usr/local/nvm/versions/node/v10.16.0/bin/node /var/node/pupp_test/init.js > /var/node/pupp_test/output.txt
因此,如果我手动运行该脚本:
process owner: franco
browser launch
browser launched, open new page
Go to example.com
但是,当脚本与cronjob一起运行时,输出文件就是:
process owner: franco
browser launch
如果进程所有者与bash和cron相同,我不理解为什么Puppeteer会出现此问题
我在NVM上安装了node.js,并用setup setuid sandbox配置了Puppeteer,因此我可以与计算机中的所有用户一起运行node和puppeteer。
在搜索我的问题时,我找到了一个谈论executing Puppeteer from PHP的话题,并且我已经在setfacl
和node_modules/puppeter/.local-chromium/
中尝试使用/usr/local/sbin/chrome-devel-sandbox
,但是没有解决我的问题