我有一个预定的cron作业(实际上是一个shell脚本).我想限制脚本执行时间,因为它可以工作不可接受的长时间.出于某种原因,我无法限制脚本内部的脚本执行时间.实际上,如果运行时间超过N小时,我希望我的系统强制终止任务.请指教.
我已经阅读了多篇帖子和许多文章,详细说明了cron作业中的scipts需要保持在脚本本身内部运行所必需的环境变量,因为在cron中打开了shell.我的情况是独特的,因为我的路径变量都是按照讨论的方式设置的,这反过来会使用subprocess.call ()成功调用pysaunter python egg ,但它似乎从那里分解.这导致整个过程在cron作业中中断.
为清楚起见,以下是我所指的步骤:
1) cronjob calls run_test.py -n foo
2) run_test.py sets the environment variables correctly
(cur_shell_path=sys.path (converted to proper path string, not shown here)
my_env= os.environ.copy()
my_env["PATH"] = my_env["PATH"] + cur_shell_path)
3) run_test.py calls subprocess.call("pysaunter -m foo -v", env=my_env, shell=True)
Run Code Online (Sandbox Code Playgroud)
步骤3的输出显示它正在找到egg并成功开始从pysaunter加载必要的模块,但是当它试图找到用于修改pysaunter的目录时它会中断.错误如下:
ImportError: no module named helpers
Run Code Online (Sandbox Code Playgroud)
我曾多次尝试将此路径添加到环境中,但它似乎永远不会找到包含helpers.py的目录.pysaunter -m foo -v从交互式shell调用时,该命令正常工作.
我在pysaunter上找不到多少帮助,所以我认为这里过多的pysaunter细节是不必要的.如果您了解更多有关pysaunter的信息,请告知我们您是否需要更多信息.我不知道该分享什么.
我还阅读了很多帖子,讨论了通过编辑.profile/.bash_profile来改变shell默认行为的能力.我试图找到一个可以使我的路径变量全局可访问的地方,但我找不到任何东西.我不确定这是怎么做的,它可以解决我的问题,所以如果你对此有所了解,请告诉我.
最后说明,这是在Mac 10.7.5上运行的.
是否有可能确定Linux shell脚本是由用户还是cronjob执行的?
如果是,如果shell脚本由cronjob执行,我如何识别/检查?
我想在我的脚本中实现一个功能,它返回一些其他消息,就像它是由用户执行一样.像这样例如:
if [[ "$type" == "cron" ]]; then
echo "This was executed by a cronjob. It's an automated task.";
else
USERNAME="$(whoami)"
echo "This was executed by a user. Hi ${USERNAME}, how are you?";
fi
Run Code Online (Sandbox Code Playgroud) 我必须运行 laravel 命令php artisan queue:work --daemon来运行存储在 Beanstalkd 队列上的作业。
我遇到了两种可能的解决方案:
Register a command in the config files of Supervisord and start it.*/1 * * * * /usr/bin/php /var/www/laravelProj/artisan queue:work --daemon --tries=3有人可以解释一下我应该走什么路以及最能提高性能的方法吗?
我下面有一个 Kotlin 调度配置文件。它有一项重要任务计划在每周一上午 11 点运行。
如果服务在上午 11 点停止,我需要做什么来建立弹性或重试?
这些 Spring Boot 和 Kotlin@Scheduled作业是否可以配置为企业级弹性,或者我是否需要使用 Kubernetes CronJobs 之类的东西来实现这一目标?
我还在研究带有 JobStore 作为选项的 Spring Boot Quartz 调度程序。欢迎任何替代设置建议。
@Component
class CronConfig {
private val logger = LoggerFactory.getLogger(CronConfig::class.java)
// Run Monday morning @ 11am
@Scheduled(cron = "0 0 11 * * MON")
fun doSomething(){
logger.info("Doing something")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我正在编写的 WordPress 插件触发 cron 作业(它将每天获取所有新产品并将它们导出为 CSV),所以问题是,当我将此代码放入functions.php 时,一切都工作得很好代码是有效的,但从插件文件夹中它已安排,我可以看到它(使用 Cron View 插件)但未执行。.我发现了另一个相同的问题,但没有答案..似乎它并没有真正被触发或者有什么东西阻止了它..看看我的代码..
function csv_init(){
add_action('my_hourly_event', 'Download_CSV_with_args');
}
function starthere(){
// some code here
$file = $_SERVER['DOCUMENT_ROOT'].'/wp-content/csv_settings.php';
$content = serialize($args);
file_put_contents($file, $content);
wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'my_hourly_event');
$schedule = wp_get_schedule( 'my_hourly_event' );
echo wp_next_scheduled( 'my_hourly_event' ).'<br>';
if ($schedule){
echo '<h3>The "'.$schedule.'" Cron Job is running..</h3>';
}else {
echo '<h3>There are no Cron Jobs that running..</h3>';
}
}
function Download_CSV_with_args() {
//execution of my code
}
Run Code Online (Sandbox Code Playgroud) 我需要在我的 nodejs 应用程序中定期执行一些任务。如果它是固定期限,那么它工作正常。但在我的情况下,周期应该动态变化。下面是我的代码,它没有按我的预期工作。这里 cronjob 没有更新我更改期间的期间。
var period = 1;
var CronJob = require('cron').CronJob;
new CronJob('*/' + period + ' * * * * *', function () {
console.log("some task");
}, null, true, "Indian/Mauritius");
new CronJob('*/5 * * * * *', function () {
period = period * 2;
console.log("updating cronjob period");
}, null, true, "Indian/Mauritius");
Run Code Online (Sandbox Code Playgroud) 我希望能够生成 Google Charts 图像,这将通过 cron 作业完成。
首先,我了解 Google Charts 是一个在浏览器中运行的客户端库,因此您只能在浏览器中生成图表。而且,我正在使用 PHP 框架。
这就是我现在所处的位置:
首先,我完成了 PDF 的创建。使用 MPDF,我能够通过 cron 成功制作 PDF 格式的每日报告。
其次,我已经通过浏览器生成了服务器端 Google 图表作为图像 ,并将这些图像保存到文件夹中。我能够插入我想要添加的图表的图像。 https://developers.google.com/chart/interactive/docs/printing
但我想要的是生成图表图像的 cron 作业。设置 CRON,我想生成某个 Google 图表的图像。
这是我能找到的与我的问题相关的最接近的主题,但该线程没有答案:Using Google Charts API generated Graphic in FPDF
初学者在这里。我有一些关于 mac / osx 上的 crontabs 的问题(如果有影响的话)。我想了解我的 crontab 在什么情况下会运行,什么时候不会运行。
我确实知道这是真的:
这是最容易的部分。但这些情况又如何呢:
什么时候有效,什么时候无效?
我想每天 17:00 运行一个 cron 作业。哪一种是正确的格式?
0 17 * * * 或者 0 */17 * * *
或者它们都是一样的?请说出区别。