crontab 容许最少自动执行间隔为 1 分钟, 即在 crontab 的格为是:
|
1 |
* * * * * /root/my-script.sh > /dev/null 2>&1 |
如果需要将自动执行时间设定为少于 1 分钟, 或者以秒数为单位, 可以透过 crontab 配合 sleep 指令完成, 或者建立一个 shell script 再配合 sleep 实现。
以下会示范在 crontab 或 shell script, 设定每 30 秒自动执行, 如果需要设定其他秒数, 只要修改 sleep 后的秒数即可。
crontab:
如果用 crontab 设定, 例如自动执行的 shells script 是 /root/my-script.sh, 设定成每 30 自动执行一次, 在 crontab 加上两行:
|
1 2 |
* * * * * /root/my-script.sh > /dev/null 2>&1 * * * * * sleep 30; /root/my-script.sh > /dev/null 2>&1 |
上面第一行是正常每份钟执行 /root/my-script.sh, 而第二行加入了 “sleep 30;” 一段, 即先执行 “sleep 30”, 先等待 30 秒再执行 /root/my-script.sh, 那便可以达到每 30 秒执行的效果。
Shell Script:
另一个方法是透过 Shell Script 实现, 如果要设定自动执行的间隔很频密, 例如每 5 秒执行一次, 我较建议这个方法, 因为不用 crontab 看起来很凌乱。
首先建立一支简单的 shell script, 以下叫 auto_run.sh:
|
1 2 3 4 5 6 7 |
#!/bin/sh while true do /root/my-script.sh sleep 30 done |
以上 shell script 会自动每 30 秒执行 /root/my-script.sh, 现在设定 auto_run.sh 可执行权限:
|
1 |
# chmod +x auto_run.sh |
为了该每次开机自动执行, 将 auto_run.sh 加入 /etc/rc.local:
|
1 |
# vi /etc/rc.local |
在档案最后加入 auto_run.sh 的位置:
|
1 |
# /root/auto_run.sh |
储存盘案后离开编辑器, 重新开机时便会自动执行 /root/auto_run.sh, 而 /root/auto_run.sh 会每 30 秒自动执行 /root/my-script.sh, 如果不想重新开机, 可以用 nohup 指令手动在背景执行 /root/auto_run.sh:
|
1 |
# nohup /root/auto_run.sh & |