在Bash中每秒运行一次命令?

时间:2012-02-15 19:13:00

标签: bash loops

我想写一些图片下载器并在bash上分配它。我拥有什么,我需要什么:

我有:

  1. 命令,工作正常(类似wget http://mywebcam.com/image.jpg -O /var/cam/Image.jpg
  2. Root权利

  3. 我的服务器和网络摄像头之间的快速互联网线路

  4. 我需要什么:

    每秒从相机下载图像*(睡1?)*并将其重写为(我的命令做得好) 立即运行此脚本,不要担心重启(我想我需要使用bash命令创建文件并运行一次+将crontab工作“重启”到此文件,对吗?) < / p>

    也许有人知道我该怎么做?

3 个答案:

答案 0 :(得分:93)

如果你想以一秒的间隔运行一个命令(一个命令的结尾和下一个命令的开头之间的一秒,这与每秒运行不一样),只需执行:

while sleep 1; do cmd; done

如果您希望在重新启动时启动,则该方法将取决于您的系统。

答案 1 :(得分:64)

命令watch将直接为您执行此操作。它还以一种很好的方式显示结果。

$ watch -n 1 date

date代替你的命令。 -n选项指定以秒为单位的时间间隔。

答案 2 :(得分:0)

为此加两分钱...如果cron的一分钟间隔对您来说太长了,您可以利用systemd的功能来反复重启服务。

[Unit]
Description=Poll something each second

[Service]
Type=simple
ExecStart=/opt/poller/poll.sh
Restart=always
RestartSec=1
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

我知道这是一种杂乱无章的“永不这样做”的方法。但这很完美,而且设置起来非常简单。