威联通NAS实现定时任务
百度搜到的教程本质上都是,“威联通底层就是Linux系统,可以通过ssh直接访问进入,然后利用crontab命令设置定时任务”乍一看没什么问题,但通过ssh访问进入的,是nas的固件,一不小心操作失误删掉了什么不该删的东西(比如我),就只能恢复出厂设置了所以有什么既安全又能经得起我们折腾的地方呢?既然我们需要一个Linux内核的操作系统使用crontab命令,那么在Container Statio
百度搜到的教程本质上都是,“威联通底层就是Linux系统,可以通过ssh直接访问进入,然后利用crontab命令设置定时任务”
乍一看没什么问题,但通过ssh访问进入的,是nas的固件,一不小心操作失误删掉了什么不该删的东西(比如我),就只能恢复出厂设置了
所以有什么既安全又能经得起我们折腾的地方呢?既然我们需要一个Linux内核的操作系统使用crontab命令,那么在Container Station里直接用docker开一个ubuntu就可以了
优点是可以尽情折腾,但缺点是每次重启后,容器也会重启,需要手动输入命令重启一下服务才能正常运行
正文
参考:
ubuntu修改时区,tzselect报错: /usr/share/zoneinfo/iso3166.tab: No such file or directory
Ubuntu修改时区和更新时间
Ubuntu下crontab的安装和使用
Linux crontab 命令
先在Container Station中开一个虚拟机用于执行我们的定时任务,所有的设置默认即可
点击终端机,输入 su 进入管理员模式
因为是定时任务,第一步肯定是需要将时间校准。先输入指令查看当前时间
date -R
刚好与北京时间差了8个小时
先安装tzselect:
apt update
apt install tzdata
安装过程中会让你选择地区和城市,我这里总是会有bug,所以先随便选择,稍后再修改
然后输入指令配置时区
tzselect
根据提示依次输入即可
会发现最下面有一行提示,需要我们手动去配置什么
输入命令复制文件到/etc目录下就好了
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
再次查看时间
date -R
时间修改完了
然后就是调试crontab指令,先安装并启动
apt-get install cron
service cron start
附ubuntu下crontab常用指令
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
安装完毕后,我们用最简单的创建目录指令测试,输入下面的指令打开定时任务的编辑页面:
crontab -e
用 vi 简单的编辑就可以了,具体格式如下
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache
50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
我们在最后面添加一句 “每分钟创建一次hello文件夹” 的命令查看效果
* * * * * mkdir /hello/
等上一分钟,可以看到成功了
写在后面
记一下踩到的一个小坑,在写定时任务的命令时,前后两个参数都必须写绝对路径,不然会识别不出来。比如我要执行python脚本,不能简单的写成
* * * * * python /test.py
而是需要将python的目录写上,比如
* * * * * /usr/bin/python3.6 /test.py
更多推荐
所有评论(0)