后台执行命令,就是把shell命令放到系统后台去执行,不会在终端显示,不会影响用户在终端继续工作;就算终端关闭了命令也一样在执行。
名词解释:
1)、cron 系统调度进程;
2)、at at命令,在特定的时间运行特殊的作业;
3)、& 在后台运行一个占用时间不长的进程;
4)、Nohup 在后台运行一个命令,即使用户退出也不受影响。
1、crontab命令:
crontab命令,用于定期执行shell作业。crontab是以crontab文件的形式向cron进程提交作业的。
crontab命令是周期性执行作业。
root用户可以通过/etc目录下的cron.deny和cron.allow来禁用和启用用户拥有自己的crontab文件。
2、crontab的域说明:
第1列 分钟1~59
第2列 小时1~23(0表示子夜)
第3列 日1~31
第4列 月1~12
第5列 星期0~6(0表示星期天)
第6列 要运行的命令(可以是shell命令,也可以是shell脚本文件)
3、crontab的格式:
分<>时<>日<>月<>星期<>要运行的命令 #<>表示空格
说明:
1)、如果一个时间域,用*代替,说明是任意数;
2)、如果一个时间域,要填写多个数,可以通过逗号分隔;
3)、如果一个时间域,要填写一段持续的时间,可以通过-分隔;
实例:
30 21 * * * /apps/bin/cleanup.sh #每天晚上21:30执行/apps/bin目录下的cleanup.sh这个shell脚本;
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \; #每周六、周日的1:10执行find命令查找文件并删除文件;
0,30 18-23 * * * /apps/bin/dbcheck.sh #每天18:00~23:00,每30分钟执行一下shell脚本;
注意事项:
1)、向cron提交作业,执行shell脚本文件时,需要使用绝对目录来指定shell脚本文件;
2)、shell脚本中,使用的环境都需要在shell中定义清楚;
3)、向cron提交作业之前,要配置EDITOR环境变量,目的是让cron进程知道,使用什么编辑器来执行crontab文件。
编辑用户$HOME目录下的.profile文件(
gedit ~/.profile
),添加以下内容:
EDITOR=vi; export EDITOR
4、创建新crontab文件:
1)touch cbcron
2)gedit cbcron #加入以下内容
# echo something to file every 10 minutes between 14 and 18
5,10,15,20,25,30,35,40,45,50,55 14-18 * * * /bin/echo 'hell cb!' >> /home/cb/Documents/cbhello
3)提交crontab: crontab cbcron
4)列出crontab: crontab -l
6)备份crontab: crontab -l > $HOME/mycron #把crontab备份到用户根目录的mycron文件;
5、编辑crontab文件:
crontab -e #系统会用设置好的EDITOR环境变量指定的编辑器打开crontab;
6、删除crontab文件:
crontab -r