6 个 Linux Crontab 命令行选项示例

举报
Tiamo_T 发表于 2021/09/10 08:45:57 2021/09/10
【摘要】 Crontab 命令管理 cron 守护程序用来执行 cron 作业的 cron 表。本文解释了 crontab 命令的各种命令行选项。1. 使用选项 -u 调整其他用户 Crontab-u 代表用户。这后面应该是系统中的有效用户名。-u 选项本身没有任何作用。它应该与其他选项结合使用。实际上,它可以与任何其他 crontab 命令行选项结合使用。如果不指定 -u username,则将在当...

Crontab 命令管理 cron 守护程序用来执行 cron 作业的 cron 表。本文解释了 crontab 命令的各种命令行选项。


1. 使用选项 -u 调整其他用户 Crontab

-u 代表用户。这后面应该是系统中的有效用户名。-u 选项本身没有任何作用。它应该与其他选项结合使用。实际上,它可以与任何其他 crontab 命令行选项结合使用。

如果不指定 -u username,则将在当前用户上执行 crontab 命令。例如,以下所有 crontab 命令都将在当前登录的用户上执行。

crontab -l
crontab -e
crontab -r
..

如果您指定 -u username,crontab 命令将在给定的用户名上执行。例如,以下所有 crontab 命令都将在 oracle 用户上执行。

crontab -u oracle -l
crontab -u oracle -e
crontab -u oracle -r
..

2. 使用选项 -l 显示 Cron 表

-l 代表列表。这将显示当前用户的 crontab。由于我以 root 身份登录,这将显示 root 用户的 cron 作业。

# crontab -l
53 00 * * 7 /bin/sh /home/root/bin/server-backup

要显示其他用户的 cron 作业,请将 -l 与 -u 选项结合使用。


# crontab -u oracle -l
01 00 * * * /bin/sh /home/oracle/bin/rman-backup

15个crontab的例子介绍如何使用cron作业条目的实用方法。

3. 使用选项 -e 编辑 Cron 表

-e 代表编辑。这允许您编辑当前用户的 crontab。由于我以 root 身份登录,这将在 Vim 编辑器中自动打开 root 的 cron 作业,并允许我对其进行编辑。

# crontab -e
53 00 * * 7 /bin/sh /home/root/bin/server-backup
~
~
/tmp/crontab.7dgqju

正如您从上面注意到的,/tmp/crontab.7dgqju 是由 crontab 自动创建的临时文件,您可以在其中编辑您的 cron 作业。

当您保存编辑并退出 Vim 编辑器时,它将显示以下消息之一,具体取决于您是否进行了任何更改。

# crontab -e
crontab: no changes made to crontab

# crontab -e
crontab: installing new crontab

注意:crontab 用于打开 cron 作业进行编辑的编辑器取决于 VISUAL 或 EDITOR 环境变量。默认情况下,它将在 Linux 环境中使用 Vim 编辑器。但是您可以使用 VISUAL/EDITOR 环境变量更改它。

要编辑其他用户的 cron 作业,请将 -e 与 -u 选项结合使用。

# crontab -u oracle -e
crontab: installing new crontab

要了解 crontab 条目本身的含义,请参阅如何每 5 分钟(或几小时、几天或几个月)运行一次 Cron

4. 从文件加载 crontab

除了手动编辑 crontab 以添加新作业,您还可以从文件上传所有 cron 作业。当您必须维护许多具有相同 cron 作业条目的服务器时,这很有用。

在以下示例中,所有 cron 作业都在 /home/root/mycronjobs.txt 文件中。

# cat /home/root/mycronjobs.txt
53 00 * * 7 /bin/sh /home/root/bin/server-backup
01 00 * * * /bin/sh /home/root/bin/check-user-quota

要将 mycronjobs.txt 作业上传到当前用户 crontab,请执行以下操作:

# crontab /home/root/mycronjobs.txt

验证以确保 cron 作业已成功上传。

# crontab -l
53 00 * * 7 /bin/sh /home/root/bin/server-backup
01 00 * * * /bin/sh /home/root/bin/check-user-quota

注意:使用此上传方法时要小心,因为这会在上传新的 cron 作业条目之前清除所有当前的 cron 作业条目。

要将 cron 作业从文件上传到另一个用户,请将其与 -u 选项结合使用。

# crontab -u oracle /home/oracle/mycronjobs.txt

5. 使用选项 -s 添加 SELinux Security

-s 代表 SELinux。这会将 MLS_LEVEL 变量添加到包含当前 SELinux 安全上下文的 crontab。

要使用 -s 选项,您应该从文件上传 cron 作业。

# cat /home/root/mycronjobs.txt
53 00 * * 7 /bin/sh /home/root/bin/server-backup
01 00 * * * /bin/sh /home/root/bin/check-user-quota

# crontab -s /home/root/mycronjobs/my.txt
SELINUX_ROLE_TYPE=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
53 00 * * 7 /bin/sh /home/root/bin/server-backup
01 00 * * * /bin/sh /home/root/bin/check-user-quota

根据您的系统,上面将添加 SELUNUX_ROLE_TYPE 变量或包含 SELinux 安全上下文字符串的 MLS_LEVEL 变量。如果您的环境中没有使用 SELinux,请不要担心此选项的作用。SELinux 是一个单独的讨论主题,我们可能会在以后的文章中详细介绍。

6. 使用选项 -r 删除所有 Cron 作业

-r 代表删除。这将删除当前用户的所有 cron 作业条目,如下所示。

# crontab -l
53 00 * * 7 /bin/sh /home/root/bin/server-backup
01 00 * * * /bin/sh /home/root/bin/check-user-quota

# crontab -r

# crontab -l
no crontab for root

-i 代表交互模式。将 -i 与 -r 结合使用会在删除所有 crontab 条目之前要求您确认。

# crontab -ir
crontab: really delete root's crontab? n

要删除其他用户的 cron 作业,请将 -r 与 -u 选项结合使用。

# crontab -u oracle -l
01 00 * * * /bin/sh /home/oracle/bin/rman-backup

# crontab -u oracle -r

# crontab -u oracle -l
no crontab for oracle
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。