我想设置一个将在指定时间运行的 cron 任务。我知道 01 * * * * root run-parts /etc/cron.hourly
要运行这些工作。但是有什么方法可以直接使用unix时间戳运行任务吗?
答案1
我想at
会完成这项工作。它在特定时间运行一次
欲了解更多信息:http://www.computerhope.com/unix/uat.htm
at
不支持秒,所以你必须通过date
命令使用它:
at `date -d @<timestamp> +"%I:%M %p %b %d"`
答案2
就我而言,这是在使用节点时在特定时间戳安排作业的特定目的。我使用的方法非常幼稚。我希望它对你有帮助。
应用程序.js
const moment = require('moment');
const shelljs = require('shelljs');
const time = moment();
const getCrontTime = (time) => {
time = `${time.minutes()+1} ${time.hour()} ${time.date()} ${time.month()+1} *`;
shelljs.exec(`sh excutioner.sh "${time}"`);
}
getCrontTime(time);
executioner.sh(我还必须删除此 cron 作业的先前迭代,因此第 4 行)
#!/bin/bash
time=$1
crontab -l | grep -v '/usr/bin/node /home/awpshun/POCs/crontab/download.js > /home/awpshun/POCs/crontab/down.log' | crontab -
crontab -l > cron_bkp
echo $time /usr/bin/node $PWD/download.js
whoami
echo "$time node $PWD/download.js > $PWD/down.log" >> cron_bkp
crontab cron_bkp
download.js(检查其中 $PWD 的值)
const shelljs = require('shelljs');
shelljs.exec('echo $PWD $whoami')
shelljs.exec(`curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png --output /home/awpshun/POCs/crontab/file.png`)