我有一个cron需要每30秒运行一次。
以下是我所拥有的:
*/30 * * * * /bin/bash -l -c 'cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\'''
它能运行,但它是每30分钟或30秒运行一次吗?
此外,我一直在阅读,如果我经常运行cron,它可能不是最好的工具。有没有其他更好的工具,我可以使用或安装在Ubuntu 11.04上,这将是一个更好的选择?有没有办法修复上面的cron?
Linux Cron基于时间的调度器默认情况下不会执行间隔小于1分钟的作业。这个配置将向您展示一个简单的技巧,如何使用Cron基于时间的调度器以秒为间隔执行作业。让我们从基础开始。以下cron作业每分钟执行一次:
* * * * * date >> /tmp/cron_test
上述作业将每分钟执行一次,并将当前时间插入到/tmp/cron_test文件中。这很简单!但是,如果我们想每30秒执行一次相同的作业呢?为此,我们使用cron来安排两个完全相同的作业,但是使用sleep命令将第二个作业的执行推迟30秒。例如:
* * * * * date >> /tmp/cron_test
* * * * * sleep 30; date >> /tmp/cron_test
你可以将脚本作为服务运行,每30秒重新启动一次
注册服务
sudo vim /etc/systemd/system/YOUR_SERVICE_NAME.service
粘贴下面的命令
Description=GIVE_YOUR_SERVICE_A_DESCRIPTION
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
ExecStart=YOUR_COMMAND_HERE
Restart=always
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
重新加载服务
sudo systemctl daemon-reload
启用服务
sudo systemctl enable YOUR_SERVICE_NAME
启动服务
sudo systemctl start YOUR_SERVICE_NAME
检查您的服务状态
systemctl status YOUR_SERVICE_NAME