我正在设置一个cron作业来从 MongoDB 数据库分析器收集结果。我想在 24 小时内收集结果。我打算用javascript运行mongo命令。
问题是,在Mongo shell 中,如何编写查询以查找 24 小时前的日期范围?如:
db.system.profile.find({
"timestamp" : {
$lte : <current date & time>,
$gt : <date & time 24 hrs ago>
}
})
Run Code Online (Sandbox Code Playgroud) 我们正在尝试在 PostgreSQL 中配置定期作业。为此,我们在运行 Postgres 9.6 的 Linux 机器上安装了citusdata pg_cron项目。
系统信息:
按照pg_cron存储库中的说明,我们在postgresql.conf以下配置中进行设置:
shared_preload_libraries = 'pg_cron'
cron.database_name = 'our db_name'
Run Code Online (Sandbox Code Playgroud)
然后,db_name我们创建了 EXTENSION pg_cron
CREATE EXTENSION pg_cron;
Run Code Online (Sandbox Code Playgroud)
我们安排了我们的第一个 Postgres 工作:
SELECT cron.schedule('45 12 * * *', $$CREATE TABLE testCron AS Select 'Test Cron' as Cron$$);
Run Code Online (Sandbox Code Playgroud)
因此,jobid 1 被创建并列在表中cron.job。
我们预计在 12:45 将启动计划作业的命令。但什么也没有发生。
该testCron表未创建,我们在任何日志中都没有踪迹。
我们还定义了 LOG_FILE/usr/src/pg_cron/include/pathnames.h …
我知道有很多与此类似的问题,但似乎没有一个对我的问题有明确的答案,所以这就是我发布此内容的原因......我希望在正确的地方。
问题:
我有一个脚本,/etc/cron.daily其中执行每日数据库备份等。只要将密码硬编码到mysqldump命令的脚本中,它就可以正常工作。
#!/bin/sh
$ mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)
但是,不想在脚本中使用密码,我设置了~/.my.cnf文件 (chmod 600),其中存储了我的用户密码,因此mysqldump脚本中的命令将是无密码的。
~/.my.cnf
[mysqldump]
password="pass"
Run Code Online (Sandbox Code Playgroud)
#!/bin/sh
$ mysqldump -u [uname] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)
当我以 root 身份从命令行手动运行这个新脚本时,它就像一个魅力。
sudo sh /etc/cron.daily/daily-backup-script
Run Code Online (Sandbox Code Playgroud)
但是当cron想要运行它时,它无法转储数据库,并出现以下错误:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: NO) when trying to connect.
Run Code Online (Sandbox Code Playgroud)
所以,我认为cron没有相应的权限才能执行密码的mysqldymp脚本命令中,用密码放在~/.my.cnf,但是脚本和密码的mysqldump命令它是从完美用命令行工作sudo。
迄今为止的努力:
sudo中的mysqldump命令前面尝试过。sudo -u …