个人习惯比较散漫,以前积累的资料都很凌乱,而且大部分是野路子,慢慢的放到博客上吧,也算是
一个鉴证。
linux实现任务自动化大体可以分两类,系统初始化时运行和定时运行。对于定时运行linux自带了两种工具, crontab和 at。
关于 crontab的介绍,有两篇比较靠谱的文章: 计划任务工具 cron 的配置和说明、 linux下实行计划任务。
at的介绍相对较少,稍微说下:
linux实现任务自动化大体可以分两类,系统初始化时运行和定时运行。对于定时运行linux自带了两种工具, crontab和 at。
关于 crontab的介绍,有两篇比较靠谱的文章: 计划任务工具 cron 的配置和说明、 linux下实行计划任务。
at的介绍相对较少,稍微说下:
- 使用at.allow和at.deny进行访问控制,/etc/at.allow包括被授权访问的用户,/etc/at.deny包括不可使用at的用户。如果两个文件都不存在,只有超级用户可以使用。默认的at.deny是空白状态,也就是允许所有用户。
- 如何指定运行时间,很灵活,举几个简单的例子。
at now 立即运行
at now + 2 minutes 2分钟后运行
at 16:00 当天下午4点运行
at 16:00 明天下午4点 - 提交任务的方式两种。
// 指定文件提交
$ at -f /root/bin/runme now + 5 hours
// 标准输入提交
$ at 23:40
at> cd /tmp/perl
at> make
at> ls -al > tmp.log
at> <Ctrl-d> - 查看任务atq和at -l等效,删除任务at -d 任务序号。
- 可以在/etc/profile中设置JAVA_HOME等变量,这个脚本是全局的,在系统启动时会完全加载,/etc/bashrc优先级较低,JAVA_HOME设置在这对计划任务不起作用,因为crontab的运行是不需要console的。
- 可以在任务脚本中重新设置,前提你在/etc/bashrc中设置了环境变量。
$ source /etc/bashrc - 计划任务需要界面支持的话,需要配置DISPLAY变量,附带一句废话,注意大小写。
$ export DISPLAY=:1.0
两种方式得到当前DISPLAY
$ echo $DISPLAY
$ printenv | fgrep DISPLAY - 以上的环境变量应该都可在/etc/crontab中设置,能不能生效就需要自己尝试了。