转自:http://forum.upsdn.net/index.php?prog=topic::threaded&pid=6022
at的计划任务是放在/var/spool/at
1)如果有/etc/at.allow,则只有在这个列表中的人才可使用at,否则不能使用
(即使存在at.deny,并且你不在at.deny中,如果at.allow中没有你,你也不能使用at)
2)如果没有/etc/at.allow 就寻找 /etc/at.deny ,在这个黑名单中的都不能执行,其他的人能执行
3) 如果前面两个文件都不存在,则只有root能执行
命令使用
at [-m] TIME
-m 命令完成后,发送email通知
TIME 有几种时间格式
HH:MM 比如 08:30 今天早上8点半 执行,如果现在已经是9点了,则在明天的早上8点半 执行
HH:MM YYYY-MM-DD 比如 08:30 2006-11-11 2006年光棍节的早上8点半执行,也就是明天
HH:MM[am|pm] [Month] [Date] 12小时制,英文字母年月 比如: 08am Novermber 11
HH:MM[am|pm] + number [minutes|hours|days|weeks]
比如 now + 5 minutes
或者 04pm + 3 days
实作
我的 sohon 狗屎主机只能在凌晨备份数据库,我想把备份的数据库拖到Dreamhost的主机上
所以,我想要 dreamhost 明天8点的时候 开始用 wget 将备份的数据库下载下来
$ at 08:00 2006-11-11
warning: commands will be executed using /bin/sh
at> cd /home/idc/sohon20061111
at> ../wget --no-passive-ftp -m -c -nH -b -o upsdn_ftp.log ftp://webmaster%40upsdn.net:mypassword@61.152.251.216/
at> < EOT >
job 20497 at 2006-11-11 08:00
注意 at> < EOT > 这里, 出现at>命令提示符号后,按 Ctrl+D 表示结束,并自动出现 字样
命令执行的标准输出和错误输出都会发送到使用者的mailbox 里面
atd命令执行 独立于使用这的bash 环境,dreamhost默认是sh, 瞧,上面都有警告
===================================
要是发现刚才输入的at命令不对, 还有改悔的机会,这就是使用atq 和atrm
(at -l 相当于 atq, 实际上atq, atrm都是一个到at的符号连接, 这种情况很普遍)
atq (at query) 查询当前有什么计划任务
$ atq
20497 2006-11-11 08:00 a idcenter
2006年光棍节的上午8点有一个idcenter用户 的计划任务要执行,其任务编号是 20497
查询这个任务到底怎么执行的
$ at -c 20497
#!/bin/sh
# atrun uid=956391 gid=239569
# mail idc 0
umask 2
SSH_CLIENT=208.197.137.208/ 46609/ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/7; export SSH_TTY
USER=idc; export USER
MAIL=/home/idcenter/Maildir/; export MAIL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games; export PATH
LC_COLLATE=C; export LC_COLLATE
PWD=/home/idcenter/sohon20061111; export PWD
LANG=en_US; export LANG
PS1=[//h]/$/ ; export PS1
SHLVL=1; export SHLVL
HOME=/home/idcenter; export HOME
LANGUAGE=en_US:en_GB:en; export LANGUAGE
LOGNAME=idcenter; export LOGNAME
SSH_CONNECTION=208.197.137.208/ 46609/ 208.97.168.116/ 22; export SSH_CONNECTION
OLDPWD=/home/idc; export OLDPWD
cd /home//.furstenberg/idcenter/sohon20061111 || {
echo 'Execution directory inaccessible' >&2
exit 1
}
cd /home/idcenter/sohon20061111
../wget --no-passive-ftp -m -c -nH -b -o upsdn_ftp.log ftp://webmaster%40upsdn.net:mypassword@61.152.251.216/
如果我要删除这个工作,只需要键入
$atrm 20497
就可以了
at的计划任务是放在/var/spool/at
1)如果有/etc/at.allow,则只有在这个列表中的人才可使用at,否则不能使用
(即使存在at.deny,并且你不在at.deny中,如果at.allow中没有你,你也不能使用at)
2)如果没有/etc/at.allow 就寻找 /etc/at.deny ,在这个黑名单中的都不能执行,其他的人能执行
3) 如果前面两个文件都不存在,则只有root能执行
命令使用
at [-m] TIME
-m 命令完成后,发送email通知
TIME 有几种时间格式
HH:MM 比如 08:30 今天早上8点半 执行,如果现在已经是9点了,则在明天的早上8点半 执行
HH:MM YYYY-MM-DD 比如 08:30 2006-11-11 2006年光棍节的早上8点半执行,也就是明天
HH:MM[am|pm] [Month] [Date] 12小时制,英文字母年月 比如: 08am Novermber 11
HH:MM[am|pm] + number [minutes|hours|days|weeks]
比如 now + 5 minutes
或者 04pm + 3 days
实作
我的 sohon 狗屎主机只能在凌晨备份数据库,我想把备份的数据库拖到Dreamhost的主机上
所以,我想要 dreamhost 明天8点的时候 开始用 wget 将备份的数据库下载下来
$ at 08:00 2006-11-11
warning: commands will be executed using /bin/sh
at> cd /home/idc/sohon20061111
at> ../wget --no-passive-ftp -m -c -nH -b -o upsdn_ftp.log ftp://webmaster%40upsdn.net:mypassword@61.152.251.216/
at> < EOT >
job 20497 at 2006-11-11 08:00
注意 at> < EOT > 这里, 出现at>命令提示符号后,按 Ctrl+D 表示结束,并自动出现 字样
命令执行的标准输出和错误输出都会发送到使用者的mailbox 里面
atd命令执行 独立于使用这的bash 环境,dreamhost默认是sh, 瞧,上面都有警告
===================================
要是发现刚才输入的at命令不对, 还有改悔的机会,这就是使用atq 和atrm
(at -l 相当于 atq, 实际上atq, atrm都是一个到at的符号连接, 这种情况很普遍)
atq (at query) 查询当前有什么计划任务
$ atq
20497 2006-11-11 08:00 a idcenter
2006年光棍节的上午8点有一个idcenter用户 的计划任务要执行,其任务编号是 20497
查询这个任务到底怎么执行的
$ at -c 20497
#!/bin/sh
# atrun uid=956391 gid=239569
# mail idc 0
umask 2
SSH_CLIENT=208.197.137.208/ 46609/ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/7; export SSH_TTY
USER=idc; export USER
MAIL=/home/idcenter/Maildir/; export MAIL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games; export PATH
LC_COLLATE=C; export LC_COLLATE
PWD=/home/idcenter/sohon20061111; export PWD
LANG=en_US; export LANG
PS1=[//h]/$/ ; export PS1
SHLVL=1; export SHLVL
HOME=/home/idcenter; export HOME
LANGUAGE=en_US:en_GB:en; export LANGUAGE
LOGNAME=idcenter; export LOGNAME
SSH_CONNECTION=208.197.137.208/ 46609/ 208.97.168.116/ 22; export SSH_CONNECTION
OLDPWD=/home/idc; export OLDPWD
cd /home//.furstenberg/idcenter/sohon20061111 || {
echo 'Execution directory inaccessible' >&2
exit 1
}
cd /home/idcenter/sohon20061111
../wget --no-passive-ftp -m -c -nH -b -o upsdn_ftp.log ftp://webmaster%40upsdn.net:mypassword@61.152.251.216/
如果我要删除这个工作,只需要键入
$atrm 20497
就可以了
本文详细介绍了Linux系统中的at命令使用方法,包括如何设置定时任务、查看已设置的任务及取消任务等操作。文章还提供了实例,演示了如何利用at命令在特定时间执行备份数据库的任务。
1471

被折叠的 条评论
为什么被折叠?



