跳过导航链接 | |
退出打印视图 | |
系统管理指南:高级管理 Oracle Solaris 10 8/11 Information Library (简体中文) |
调度作业(命令和脚本)以供以后执行
如何显示和删除这些作业
如何控制对 at 命令的访问
缺省情况下,用户可以创建、显示和删除自己的 at 作业文件。要访问属于 root 或其他用户的 at 文件,您必须具有超级用户特权。
提交 at 作业时,会为该作业指定作业标识号和 .a 扩展名。此指定将成为该作业的文件名,以及其队列编号。
调用 at 实用程序并指定命令执行时间。
键入以后要执行的命令或脚本。
注 - 如果此命令或脚本的输出很重要,请确保将输出定向到一个文件中,以便以后检查。
例如,以下 at 作业将在 7 月的最后一天接近午夜时删除用户帐户 smith 的 core 文件。
$ at 11:45pm July 31 at> rm /home/smith/*core* at> Press Control-d commands will be executed using /bin/csh job 933486300.a at Tue Jul 31 23:45:00 2004
您可以设置一个文件来控制对 at 命令的访问,只允许指定的用户创建、删除或显示有关 at 作业的队列信息。控制对 at 命令的访问的文件 /etc/cron.d/at.deny 由用户名列表构成,每个用户名占据一行。此文件中列出的用户不能访问 at 命令。
在 SunOS 软件安装期间创建的 at.deny 文件包含以下用户名:
daemon bin smtp nuucp listen nobody noaccess
使用超级用户特权,您可以编辑 at.deny 文件,以添加要限制其对 at 命令访问的其他用户名。
$ at [-m] time [date]
在作业完成后发送邮件。
指定要调度作业的小时。如果不按 24 小时制指定小时,请添加 am 或 pm。可接受的关键字包括 midnight、noon 和 now。分钟是可选的选项。
指定月份的前三个或更多字母、一周中的某日或关键字 today 或 tomorrow。
通过在每行结尾处按回车键,可以键入多个命令。
at 作业将被指定一个队列编号,它也是该作业的文件名。退出 at 实用程序时将显示该编号。
示例 8-7 创建 at 作业
以下示例显示了用户 jones 创建的 at 作业,该作业用于在下午 7:30 删除其备份文件。由于她使用了 -m 选项,因此她会在该作业完成后收到电子邮件。
$ at -m 1930 at> rm /home/jones/*.backup at> Press Control-D job 897355800.a at Thu Jul 12 19:30:00 2004
她收到一封确认已执行 at 作业的电子邮件。
Your “at” job “rm /home/jones/*.backup” completed.
以下示例说明 jones 如何调度在星期六凌晨 4:00 执行的大型 at 作业。该作业输出被定向到名为 big.file 的文件中。
$ at 4 am Saturday at> sort -r /usr/dict/words > /export/home/jones/big.file
$ atq
此命令可以显示您已创建的 at 作业的状态信息。
$ atq Rank Execution Date Owner Job Queue Job Name 1st Jul 12, 2004 19:30 jones 897355800.a a stdin 2nd Jul 14, 2004 23:45 jones 897543900.a a stdin 3rd Jul 17, 2004 04:00 jones 897732000.a a stdin
$ at -l [job-id]
其中,-l job-id 选项表示要显示其状态的作业的标识号。
示例 8-8 显示 at 作业
以下示例显示 at -l 命令的输出,该输出提供有关用户已提交的所有作业的状态信息。
$ at -l 897543900.a Sat Jul 14 23:45:00 2004 897355800.a Thu Jul 12 19:30:00 2004 897732000.a Tue Jul 17 04:00:00 2004
以下示例显示使用 at -l 命令指定单个作业时所显示的输出。
$ at -l 897732000.a 897732000.a Tue Jul 17 04:00:00 2004
开始之前
成为超级用户或同等角色,以删除属于 root 或其他用户的 at 作业。角色包含授权和具有特权的命令。
无需成为超级用户或同等角色,便可删除自己的 at 作业。
$ at -r [job-id]
其中,-r job-id 选项指定要删除的作业的标识号。
at -l 命令显示 at 队列中剩余的作业。不应显示已指定标识号的作业。
$ at -l [job-id]
示例 8-9 删除 at 作业
在以下示例中,用户要删除计划在 7 月 17 日凌晨 4 点执行的 at 作业。首先,该用户显示 at 队列,以找到作业标识号。然后,用户从 at 队列中删除此作业。最后,该用户验证是否已从队列中删除此作业。
$ at -l 897543900.a Sat Jul 14 23:45:00 2003 897355800.a Thu Jul 12 19:30:00 2003 897732000.a Tue Jul 17 04:00:00 2003 $ at -r 897732000.a $ at -l 897732000.a at: 858142000.a: No such file or directory
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
daemon bin smtp nuucp listen nobody noaccess username1 username2 username3 . . .
示例 8-10 拒绝 at 访问
以下示例显示了一个 at.deny 文件,该文件已被编辑过,因此用户 smith 和 jones 无法访问 at 命令。
$ cat at.deny daemon bin smtp nuucp listen nobody noaccess jones smith
# su smith Password: $ at -l at: you are not authorized to use at. Sorry.
类似地,如果该用户尝试提交 at 作业,则将显示以下消息:
$ at 2:30pm at: you are not authorized to use at. Sorry.
此消息确认该用户已列在 at.deny 文件中。
如果允许访问 at 命令,则 at -l 命令不会返回任何内容。