如何在华硕Merlin Wifi路由器上添加cron作业

时间:2020-01-09 10:38:55  来源:igfitidea点击:

如何在由Asuswrt Merlin固件提供支持的wifi路由器上添加或删除cron作业?
如何使用命令行在Asuswrt Merlin Wifi路由器上添加cron作业?

说明:Asuswrt-Merlin是Asuswrt的增强版本,它是Asuss现代wifi路由器使用的固件。
它是华硕路由器的第三方替代固件,特别着重于调整和修复,而不是进行重大更改或收集尽可能多的功能。

如何在华硕Merlin Wifi路由器上添加cron作业

解决方法:您需要使用cru命令列出,删除或添加新的cron作业。

Linux上的cron是什么?

Cron允许Linux和Unix用户在给定的日期和时间运行命令或脚本。
您可以安排脚本定期执行。

Cron是Linux或UNIX等操作系统中最有用的工具之一。

cron服务(守护程序)在后台运行,并不断检查/etc/crontab文件和/etc/cron.*/目录。
它还会检查/var/spool/cron /目录。

使用cru命令添加,列出和删除cron作业的语法

语法非常简单:

添加新的Cron作业

cru a {id} min hour day month week command

其中:

  • id每个cron作业的唯一ID
  • min分钟(0-59)
  • hour小时(0-23)
  • day天(0-31)
  • month月(0-12 [12是12月])
  • week星期几(0-7 [7或0是星期日])
  • command 计划的脚本或命令名称。

列出cron计划任务

cru l

删除Cron作业

cru d {id}

例子

让我们每隔1小时将Asuswrt Merlin Wifi路由器上的cron作业添加到ping网关,运行:

cru a pinggw "0 * * * * /bin/ping -c 10 -q 192.168.2.254"

上面的cron作业将运行/bin/ping命令,该命令仅发送10次ping并且仅在启动时显示输出。
要列出当前作业,请执行以下操作:

cru l

要删除当前作业,请运行:

cru d pinggw

验证一下:

cru l

重新启动路由器后如何安排任务/cron作业

由于路由器上的存储空间较小,因此需要使用cru命令将cron作业存储为脚本。

创建一个名为services-start的脚本

执行以下cd命令:

# cd /jffs/scripts

编辑/更新名为服务启动文件的文件,即/jffs/scripts/services-start

#!/bin/sh
# This cript get called after all other system services 
# have been started at boot on router
# --------------------------------------------------------
# Sample cron job to install after reboot
cru a pinggw "0 * * * * /bin/ping -c 10 -q 192.168.2.254"
 
# Run my usb backup script every day at midnight 
cru a backup "0 0 * * * /jffs/scripts/usb-backup-script.sh

使用cat命令显示的示例/jffs/scripts/usb-backup-script.sh文件:

cat /jffs/scripts/usb-backup-script.sh

输出示例:

#!/bin/sh
# Purpose: Backup data to connected external USB 3.x hard disk
# Author:  under GPL version 2.x or above
# ------------------------------------------------------------
DEST="/tmp/mnt/sda1"
nUSER="Hyman"
nSERVER="192.168.1.200"
SRC="/backups"
# GRAB files from my NFS server to external USB connected to this router
rsync -az -Hh --delete --numeric-ids ${nUSER}@${nSERVER}:${SRC} ${DEST}

确保使用chmod命令设置可执行权限:

chmod a+rx /jffs/scripts/services-start
chmod a+rx /jffs/scripts/usb-backup-script.sh

为/jffs/scripts /启用启动时间支持

必须在webui上"管理"->"系统"下启用对存储在/jffs/scripts /下的这些脚本的支持: