지정된 시간에 실행되는 크론 작업을 설정하고 싶습니다. 나는 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
내 경우에는 node.js를 사용할 때 특정 타임스탬프에서 작업을 예약하려는 특정 목적을 위한 것입니다. 내가 사용한 접근 방식은 매우 순진했습니다. 나는 그것이 당신에게 도움이되기를 바랍니다.
application.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(이 크론 작업의 이전 반복도 삭제해야 했기 때문에 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`)