(一)计划任务
1、daemon:后台服务(进程),并且持续不断的运行。
如Apache 服务进程。
2、at命令下达计划任务
1)ps -ef | grep atd
2)在/tmp/work目录下,创建一个test.sh的脚本文件
vi test.sh输入内容如下图
bash test.sh执行脚本
3)echo > time.sh 清除time.sh文件的数据;
at 16:00 按下回车,进入at>提示符,下达相应的指令;
at>bash /tmp/work/test.sh 确认命令输入完毕按ctrl d结束输入;
16:00之后,执行cat time.txt
显示16:00进行了执行
4)at 16:10
atq 查看at任务
4(首个数字) 任务编号表示当天下达的第几个at任务
2013-03-03 日期
16:10 时间
root 执行者
下达的at命令任务保存目录
/var/spool/at/
vi a00009015a735e查看脚本文件
atd会周期性的扫描/var/spool/at/目录的文件及文件里的设定。每分钟扫描一次。
3、at命令删除计划任务
atrm 任务编号
效果等同于删掉/var/spool/at目录下的文件
删除之前用atq命令查看一下
注意:at只能下达单次的计划任务。
4、周期性的计划任务下达
cron 指下达周期性计划任务这一系列的指令。
同at一样,有一个daemon服务在后台持续运行,该服务称为crond
1)定制个人计划任务
crontab -e
2)书写格式
先写五颗星* * * * *,从左到右依次代表
minute 每到多少分钟
hour 每到多少小时
day of month 每到一个月的多少天
month 每到多少个月
day of week 每到一周的某几天
* * * * * 查看cron的计划任务配置文件的时候,时间上要从右往左读。
0-23/2 中的/2不是除以2的意思,
/后表示间隔的步长
*/2 表示每隔两小时
例如:
#* * * * *
02 4 * * * bash /tmp/xxx.sh
注意:为了避免执行失败,比如有重定向等特殊字符时会导致执行失败。建议下达计划任务时统
一的用bash解释一个脚本,然后在脚本中写相应的任务,如果有必要,在脚本中加载某个
用户的环境变量。
3)
crontab -l查看当前指定的周期性计划任务
4)crontab -r 删除全部的周期性计划任务(慎用)。
建议crontab -e编辑删除相应的周期性计划任务
5)查看文件保存目录及内容
注意:crond每分钟扫描一次/var/spool/cron/目录
atd同样也是每分钟扫描一次/var/spool/at目录
6)执行秒一级的周期性计划任务
sleep n 等待n秒时间再循环开始
5、系统级的计划任务
保存在/etc/crontab
1)vi /etc/crontab
SHELL指定用的哪个脚本类型
PATH变量指定 。如果不指定,意味着命令找不到或者必须以绝对路径的方式执行
MAILTO=root这里所做的计划任务完成都会发信给root用户
HOME指定系统级计划任务时家目录的位置
run-parts:
每小时的第一分钟执行小时级的计划任务
每天的4:02执行每日级的计划任务
每个周日的4:22执行周级的计划任务
每个月的第一天的4:42执行月级计划任务
如果错过系统级计划任务的时间(关机或重启),/etc/下的anacron配置文件执行补救工作
vi /etc/anacrontab
1 65 每天开机65分钟之后执行cron.daily
7 70 每7天开机70分钟之后执行cron.weekly
30 75 每30天开机75分钟之后执行cron.monthly
2)时间间隔20分钟设置的原因:
避免由于在特殊时间,计划任务交叉在同一时间造成系统负担过重。建议下达个人计划任务时,
根据需要酌情把时间错开。
3)cat mlocate.cron
renice +19 -p $$ >/dev/null 2>&1
把所有程序的输出内容输出到/dev/null(黑洞),2>&1表示将错误信息(2表示错误信息代号)也
输出到黑洞
6、进程描述符
进入/proc/目录下以数字命名的目录下的/fd/目录
fd目录下至少有3个软链接
其中0代表标准输入;标准输入指输入设备,默认是键盘
1代表标准输出;默认是屏幕
2代表错误输出;默认也是屏幕
7、重定向符号:
1)> 标准输出重定向
2)< 标准输入重定向
3)》 标准输出追加
4)《 标准输入追加
5)2加><》《 表示标准错误重定向
6)| 管道符号
例如:
(1)mysql < backup.sql
表示将这个mysql数据库备份文件内容输入给mysql命令
(2)ll | grep txt
ll的输出当成后面命令的输入;
grep后直接跟正则表达式
转载于:https://blog.51cto.com/wangjifu/1241827