【问题标题】:Where are these Node generated CronJobs stored?这些 Node 生成的 Cron Jobs 存储在哪里?
【发布时间】:2020-08-11 11:25:44
【问题描述】:

我已经使用cron 使用以下代码创建了 CronJobs,但是我找不到它们来销毁它们。在 Debian BullsEye 上,我检查了 /etc/crontab、/etc/cron.d、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly 并没有任何内容。

这个进程在 www-data 下运行

        new cronjob('* ' + sMarr[i] + ' ' + sHarr[i] + ' * * *', function(x) {
      
          shell.exec('ffmpeg -hide_banner -loglevel warning -i '+iUarr[x]+' -c:a aac -t 00:'+dMarr[x]+':'+dSarr[x]+' -f hls /mnt/streamlinks/'+outputName+'.m3u8&', {async:true});
        }.bind(null, i), null,  true, 'Europe/London').start();
        console.log("made cron job");
      }catch{
        console.log("Error creating cronjob");  
      }

提前致谢。

【问题讨论】:

    标签: node.js cron


    【解决方案1】:

    这些 cron 作业是在内存中创建的,它们不是在系统级别创建的。这允许模块在不同的操作系统(例如 Windows)上工作。

    当您创建一个作业时,您可以持有对它的引用,然后使用 job.stop() 随时停止它。

    const CronJob = require('cron').CronJob;
    const job = new CronJob('* * * * * *', function() {
        console.log('Sample cron job...');
    }, null, false);
    
    // Start the cron job...
    job.start();
    
    setTimeout(() => {
        console.log("Stopping cron job..");
        // Kill the cron job
        job.stop();
    }, 10000)
    

    【讨论】:

    • 谢谢,这解释了很多。我正在使用匿名实例化,而不是停止工作,因为我认为它是系统级别的。在实时系统上销毁以前生成的 CronJobs 最有效的方法是什么?
    • 嗯,如果您没有对 cron 作业的引用,我不知道您将如何阻止它。您可能能够枚举活动的作业,但我不知道执行此操作的 api 函数。如果您希望停止运行 cron 作业,您可能需要找到正在运行的节点脚本并停止它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2018-10-02
    • 2017-02-06
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多