crontab用法高手请进!在使用crontab的时候,怎么设置脚本程序的环境变量

crontab用法  时间:2020-12-25  阅读:()

如何使用crontab命令让当前用户设定每分钟记录当前的时间到/tmp/ab??

展开全部 针对用户来说 使用 crontab -e 去编辑 cron表达式 设定每分钟记录当前的时间到/tmp/ab 则使用 表达式 * * * * * echo `date` > /tmp/ab 你也可以追加 * * * * * echo `date` >> /tmp/ab 编辑好后 可以用 crontab -l 查看 比如以上结果 [root@liangdi ~]# crontab -l * * * * * echo `date` > /tmp/ab [root@liangdi ~]#

linux使用cron怎么设置定时任务

确定设置crontab的用户,举例用root执行: crontab -e 进入编辑模式: 00 00 * * * 执行命令 表示每天00点00分执行命令一次 其他时间设置: 每五分钟执行 */5 * * * * 每小时执行 0 * * * * 每天执行 0 0 * * * 每周执行 0 0 * * 0 每月执行 0 0 1 * * 每年执行 0 0 1 1 * crontab详解: 1.作用 使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。 2.格式 crontab [-u user] {-l | -r | -e} 3.主要参数 -e:执行文字编辑器来设定时程表,内空的文字编辑器是vi -r:删除目前的时程表 -l列出目前的时程表。 Crontab文件的格式为”M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。Cmd表示要运行的程序,它被送入sh执行,这个shell只有USER、HOME、SHELL三个环境变量。 使用cron服务,用server crond status查看cron服务状态,如果没有启动则service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab命令添加或编辑需要定时执行的任务: crontab –u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab –l //列出某个用户cron服务的详细内容 crontab –r //删除某个用户的cron服务 crontab –e //编辑某个用户的cron服务 crontab filename //以filename作为crontab的任务列表文件并载入 比如说root查看自己的cron设置:crontab –u root –l 再例如,root想删除fred的cron设置:crontab –u fred –r 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab –u root –e 进入vi编辑模式,编辑的内容一定要符合下面的格式: */1 * * * * ls >>/tmp/ls.txt 编辑/etc/crontab文件,在末尾加上一行:30 5 * * * root init 6这样就将系统配置为每天早上5点30分自动重新启动。 crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间 分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期几(0-6,其中0代表星期日,好像7也代表星期日) 第6个字段是一个要在适当时间执行的字符串。 例子: #MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜一到礼拜三的早上11点 0 11 4 * 1-3 date #1月1日早上4点 0 4 1 1 * date 补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export) (1) 先建一个文件crond.txt如下,每天早上5点36分重新启动 36 5 * * * reboot (2)上传到/opt目录 (3)运行命令 crontab /opt/crond.txt crontab –l 让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后,也要重新启动cron服务器。 在Fedora和Redhat中,我们应该用: /etc/rc.d/crond restart 如果让crond在开机时运行,应该改变其运行级别: chkconfig –level 35 crond on service crond status查看cron服务状态,如果没有启动则service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab命令添加或者编辑需要定时执行的任务

如何在 Linux 中使用 cron 计划任务?

没有时间运行命令?使用 cron 的计划任务意味着你不用熬夜程序也可以运行。 系统管理员(在许多好处中)的挑战之一是在你该睡觉的时候去运行一些任务。例如,一些任务(包括定期循环运行的任务)需要在没有人使用计算机资源的时候去运行,如午夜或周末。在下班后,我没有时间去运行命令或脚本。而且,我也不想在晚上去启动备份或重大更新。 取而代之的是,我使用两个服务功能在我预定的时间去运行命令、程序和任务。cron 和 at 服务允许系统管理员去安排任务运行在未来的某个特定时间。at 服务指定在某个时间去运行一次任务。cron 服务可以安排任务在一个周期上重复,比如天、周、或月。 在这篇文章中,我将介绍 cron 服务和怎么去使用它。 常见(和非常见)的 cron 用途 我使用 cron 服务去安排一些常见的事情,比如,每天凌晨 2:00 发生的定期备份,我也使用它去做一些不常见的事情。
  • 许多电脑上的系统时钟(比如,操作系统时间)都设置为使用网络时间协议(NTP)。 NTP 设置系统时间后,它不会去设置硬件时钟,它可能会“漂移”。我使用 cron 基于系统时间去设置硬件时钟。
  • 我还有一个 Bash 程序,我在每天早晨运行它,去在每台电脑上创建一个新的 “每日信息” (MOTD)。它包含的信息有当前的磁盘使用情况等有用的信息。
  • 许多系统进程和服务,像 Logwatch、logrotate、和 Rootkit Hunter,使用 cron 服务去安排任务和每天运行程序。 crond 守护进程是一个完成 cron 功能的后台服务。 cron 服务检查在 /var/spool/cron 和 /etc/cron.d 目录中的文件,以及 /etc/anacrontab 文件。这些文件的内容定义了以不同的时间间隔运行的 cron 作业。个体用户的 cron 文件是位于 /var/spool/cron,而系统服务和应用生成的 cron 作业文件放在 /etc/cron.d 目录中。/etc/anacrontab 是一个特殊的情况,它将在本文中稍后部分介绍。 使用 crontab cron 实用程序运行基于一个 cron 表(crontab)中指定的命令。每个用户,包括 root,都有一个 cron 文件。这些文件缺省是不存在的。但可以使用 crontab -e 命令创建在 /var/spool/cron 目录中,也可以使用该命令去编辑一个 cron 文件(看下面的脚本)。我强烈建议你,不要使用标准的编辑器(比如,Vi、Vim、Emacs、Nano、或者任何其它可用的编辑器)。使用 crontab 命令不仅允许你去编辑命令,也可以在你保存并退出编辑器时,重启动 crond 守护进程。crontab 命令使用 Vi 作为它的底层编辑器,因为 Vi 是预装的(至少在大多数的基本安装中是预装的)。 现在,cron 文件是空的,所以必须从头添加命令。 我增加下面示例中定义的作业到我的 cron 文件中,这是一个快速指南,以便我知道命令中的各个部分的意思是什么,你可以自由拷贝它,供你自己使用。 ? 12345678910111213141516171819
  • ? ?# crontab -eSHELL=/bin/bashMAILTO=root@PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * mand to be executed# backup using the rsbu program to the internal 4TB HDD and then 4TB external01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2# Set the hardware clock to keep it in sync with the more urate system clock03 05 * * * /sbin/hwclock --systohc# Perform monthly updates on the first of the month# 25 04 1 * * /usr/bin/dnf -y update
  • ? ? crontab 命令用于查看或编辑 cron 文件。 上面代码中的前三行设置了一个缺省环境。对于给定用户,环境变量必须是设置的,因为,cron 不提供任何方式的环境。SHELL 变量指定命令运行使用的 shell。这个示例中,指定为 Bash shell。MAILTO 变量设置发送 cron 作业结果的电子邮件地址。这些电子邮件提供了 cron 作业(备份、更新、等等)的状态,和你从命令行中手动运行程序时看到的结果是一样的。第三行为环境设置了 PATH 变量。但即使在这里设置了路径,我总是使用每个程序的完全限定路径。 在上面的示例中有几个注释行,它详细说明了定义一个 cron 作业所要求的语法。我将在下面分别讲解这些命令,然后,增加更多的 crontab 文件的高级特性。 ? 1
  • ? ?01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2
  • ? ? 在我的 /etc/crontab 中的这一行运行一个脚本,用于为我的系统执行备份。 这一行运行我自己编写的 Bash shell 脚本 rsbu,它对我的系统做完全备份。这个作业每天的凌晨 1:01 (01 01) 运行。在这三、四、五位置上的星号(*),像文件通配符一样代表一个特定的时间,它们代表 “一个月中的每天”、“每个月” 和 “一周中的每天”,这一行会运行我的备份两次,一次备份内部专用的硬盘驱动器,另外一次运行是备份外部的 USB 驱动器,使用它这样我可以很保险。 接下来的行我设置了一个硬件时钟,它使用当前系统时钟作为源去设置硬件时钟。这一行设置为每天凌晨 5:03 分运行。 ? 1
  • ? ?03 05 * * * /sbin/hwclock --systohc
  • ? ? 这一行使用系统时间作为源来设置硬件时钟。 我使用的第三个也是最后一个的 cron 作业是去执行一个 dnf 或 yum 更新,它在每个月的第一天的凌晨 04:25 运行,但是,我注释掉了它,以后不再运行。 ? 1
  • ? ?# 25 04 1 * * /usr/bin/dnf -y update
  • ? ? 这一行用于执行一个每月更新,但是,我也把它注释掉了。 其它的定时任务技巧 现在,让我们去做一些比基本知识更有趣的事情。假设你希望在每周四下午 3:00 去运行一个特别的作业: ? 1
  • ? ?00 15 * * Thu /usr/local/bin/mycronjob.sh
  • ? ? 上面这一行会在每周四下午 3:00 运行 mycronjob.sh 这个脚本。 或者,或许你需要在每个季度末去运行一个季度报告。cron 服务没有为 “每个月的最后一天” 设置选项,因此,替代方式是使用下一个月的第一天,像如下所示(这里假设当作业准备运行时,报告所需要的数据已经准备好了)。 ? 1
  • ? ?02 03 1 1,4,7,10 * /usr/local/bin/reports.sh
  • ? ? 在季度末的下一个月的第一天运行这个 cron 作业。 下面展示的这个作业,在每天的上午 9:01 到下午 5:01 之间,每小时运行一次。 ? 1
  • ? ?01 09-17 * * * /usr/local/bin/hourlyreminder.sh
  • ? ? 有时,你希望作业在业务期间定时运行。 我遇到一个情况,需要作业在每二、三或四小时去运行。它需要用期望的间隔去划分小时,比如, */3 为每三个小时,或者 6-18/3 为上午 6 点到下午 6 点每三个小时运行一次。其它的时间间隔的划分也是类似的。例如,在分钟位置的表达式 */15 意思是 “每 15 分钟运行一次作业”。 ? 1
  • ? ?*/5 08-18/2 * * * /usr/local/bin/mycronjob.sh
  • ? ? 这个 cron 作业在上午 8:00 到下午 18:59 之间,每五分钟运行一次作业。 需要注意的一件事情是:除法表达式的结果必须是余数为 0(即整除)。换句话说,在这个例子中,这个作业被设置为在上午 8 点到下午 6 点之间的偶数小时每 5 分钟运行一次(08:00、08:05、 08:10、 08:15……18:55 等等),而不运行在奇数小时。另外,这个作业不能运行在下午 7:00 到上午 7:59 之间。(LCTT 译注:此处本文表述有误,根据正确情况修改) 我相信,你可以根据这些例子想到许多其它的可能性。 限制访问 cron 普通用户使用 cron 访问可能会犯错误,例如,可能导致系统资源(比如内存和 CPU 时间)被耗尽。为避免这种可能的问题, 系统管理员可以通过创建一个 /etc/cron.allow 文件去限制用户访问,它包含了一个允许去创建 cron 作业的用户列表。(不管是否列在这个列表中,)不能阻止 root 用户使用 cron。 通过阻止非 root 用户创建他们自己的 cron 作业,那也许需要将非 root 用户的 cron 作业添加到 root 的 crontab 中, “但是,等等!” 你说,“不是以 root 去运行这些作业?” 不一定。在这篇文章中的第一个示例中,出现在注释中的用户名字段可以用于去指定一个运行作业的用户 ID。这可以防止特定的非 root 用户的作业以 root 身份去运行。下面的示例展示了一个作业定义,它以 “student” 用户去运行这个作业: ? 1
  • ? ?04 07 * * * student /usr/local/bin/mycronjob.sh
  • ? ? 如果没有指定用户,这个作业将以 contab 文件的所有者用户去运行,在这个情况中是 root。 cron.d 目录 /etc/cron.d 中是一些应用程序,比如 SpamAssassin 和 sysstat 安装的 cron 文件。因为,这里没有 spamassassin 或者 sysstat 用户,这些程序需要一个位置去放置 cron 文件,因此,它们被放在 /etc/cron.d 中。 下面的 /etc/cron.d/sysstat 文件包含系统活动报告(SAR)相关的 cron 作业。这些 cron 文件和用户 cron 文件格式相同。 ? 1234
  • ? ?# Run system activity ounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 1 1# Generate a daily summary of process ounting at 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
  • ? ? sysstat 包安装了 /etc/cron.d/sysstat cron 文件来运行程序生成 SAR。 该 sysstat cron 文件有两行执行任务。第一行每十分钟去运行 sa1 程序去收集数据,存储在 /var/log/sa 目录中的一个指定的二进制文件中。然后,在每天晚上的 23:53, sa2 程序运行来创建一个每日汇总。 计划小贴士 我在 crontab 文件中设置的有些时间看上起似乎是随机的,在某种程度上说,确实是这样的。尝试去安排 cron 作业可能是件很具有挑战性的事, 尤其是作业的数量越来越多时。我通常在我的每个电脑上仅有一些任务,它比起我工作用的那些生产和实验环境中的电脑简单多了。 我管理的一个系统有 12 个每天晚上都运行 cron 作业,另外 3、4 个在周末或月初运行。那真是个挑战,因为,如果有太多作业在同一时间运行,尤其是备份和编译系统,会耗尽内存并且几乎填满交换文件空间,这会导致系统性能下降甚至是超负荷,最终什么事情都完不成。我增加了一些内存并改进了如何计划任务。我还删除了一些写的很糟糕、使用大量内存的任务。 crond 服务假设主机计算机 24 小时运行。那意味着如果在一个计划运行的期间关闭计算机,这些计划的任务将不再运行,直到它们计划的下一次运行时间。如果这里有关键的 cron 作业,这可能导致出现问题。 幸运的是,在定期运行的作业上,还有一个其它的选择: anacron。 anacron anacron 程序执行和 cron 一样的功能,但是它增加了运行被跳过的作业的能力,比如,如果计算机已经关闭或者其它的原因导致无法在一个或多个周期中运行作业。它对笔记本电脑或其它被关闭或进行睡眠模式的电脑来说是非常有用的。 只要电脑一打开并引导成功,anacron 会检查过去是否有计划的作业被错过。如果有,这些作业将立即运行,但是,仅运行一次(而不管它错过了多少次循环运行)。例如,如果一个每周运行的作业在最近三周因为休假而系统关闭都没有运行,它将在你的电脑一启动就立即运行,但是,它仅运行一次,而不是三次。 anacron 程序提供了一些对周期性计划任务很好用的选项。它是安装在你的 /etc/cron.[hourly|daily|weekly|monthly] 目录下的脚本。 根据它们需要的频率去运行。 它是怎么工作的呢?接下来的这些要比前面的简单一些。 1、 crond 服务运行在 /etc/cron.d/0hourly 中指定的 cron 作业。 ? 12345
  • ? ?# Run the hourly jobsSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root01 * * * * root run-parts /etc/cron.hourly
  • ? ? /etc/cron.d/0hourly 中的内容使位于 /etc/cron.hourly 中的 shell 脚本运行。 2、 在 /etc/cron.d/0hourly 中指定的 cron 作业每小时运行一次 run-parts 程序。 3、 run-parts 程序运行所有的在 /etc/cron.hourly 目录中的脚本。 4、 /etc/cron.hourly 目录包含的 0anacron 脚本,它使用如下的 /etdc/anacrontab 配置文件去运行 anacron 程序。 ? 12345678910111213
  • ? ?# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# the maximal random delay added to the base delay of the jobsRANDOM_DELAY=45# the jobs will be started during the following hours onlySTART_HOURS_RANGE=3-22#period in days? delay in minutes? job-identifier?mand1??? 5??? cron.daily?????? nice run-parts /etc/cron.daily7??? 25?? cron.weekly?????? nice run-parts /etc/cron.weekly@monthly 45?? cron.monthly????? nice run-parts /etc/cron.monthly
  • ? ? /etc/anacrontab 文件中的内容在合适的时间运行在 cron.[daily|weekly|monthly] 目录中的可执行文件。 5、 anacron 程序每日运行一次位于 /etc/cron.daily 中的作业。它每周运行一次位于 /etc/cron.weekly 中的作业。以及每月运行一次 cron.monthly 中的作业。注意,在每一行指定的延迟时间,它可以帮助避免这些作业与其它 cron 作业重叠。 我在 /usr/local/bin 目录中放置它们,而不是在 cron.X 目录中放置完整的 Bash 程序,这会使我从命令行中运行它们更容易。然后,我在 cron 目录中增加一个符号连接,比如,/etc/cron.daily。 anacron 程序不是设计用于在指定时间运行程序的。而是,用于在一个指定的时间开始,以一定的时间间隔去运行程序,比如,从每天的凌晨 3:00(看上面脚本中的 START_HOURS_RANGE 行)、从周日(每周第一天)和这个月的第一天。如果任何一个或多个循环错过,anacron 将立即运行这个错过的作业。 更多的关于设置限制 我在我的计算机上使用了很多运行计划任务的方法。所有的这些任务都需要一个 root 权限去运行。在我的经验中,很少有普通用户去需要运行 cron 任务,一种情况是开发人员需要一个 cron 作业去启动一个开发实验室的每日编译。 限制非 root 用户去访问 cron 功能是非常重要的。然而,在一些特殊情况下,用户需要去设置一个任务在预先指定时间运行,而 cron 可以允许他们去那样做。许多用户不理解如何正确地配置 cron 去完成任务,并且他们会出错。这些错误可能是无害的,但是,往往不是这样的,它们可能导致问题。通过设置功能策略,使用户与管理员互相配合,可以使个别的 cron 作业尽可能地不干扰其它的用户和系统功能。 你可以看看,其中有好多方法,希望能够帮到你,多看看《linux就该这么学》对你的帮助会更大的

    高手请进!在使用crontab的时候,怎么设置脚本程序的环境变量

    为了确保运行脚本中的环境变量和测试环境中的一致,可以在运行脚本前增加以下语句: source $HOME/.bash_profile 注意:因为$HOME也是环境变量,所以这里要把$HOME替换为绝对路径
  • WebHorizon($10.56/年)256MB/5G SSD/200GB/日本VPS

    WebHorizon是一家去年成立的国外VPS主机商,印度注册,提供虚拟主机和VPS产品,其中VPS包括OpenVZ和KVM架构,有独立IP也有共享IP,数据中心包括美国、波兰、日本、新加坡等(共享IP主机可选机房更多)。目前商家对日本VPS提供一个8折优惠码,优惠后最低款OpenVZ套餐年付10.56美元起。OpenVZCPU:1core内存:256MB硬盘:5G NVMe流量:200GB/1G...

    ZJI:韩国BGP+CN2线路服务器,国内三网访问速度优秀,8折优惠码每月实付440元起

    zji怎么样?zji最近新上韩国BGP+CN2线路服务器,国内三网访问速度优秀,适用8折优惠码zji,优惠后韩国服务器最低每月440元起。zji主机支持安装Linux或者Windows操作系统,会员中心集成电源管理功能,8折优惠码为终身折扣,续费同价,全场适用。ZJI是原Wordpress圈知名主机商:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服...

    亚洲云-浙江高防BGP,至强铂金8270,提供自助防火墙管理,超大内存满足你各种需求

    官方网站:点击访问亚洲云官网618活动方案:618特价活动(6.18-6.30)全站首月活动月底结束!地区:浙江高防BGPCPU:至强铂金8270主频7 默频3.61 睿频4.0核心:8核(最高支持64核)内存:8G(最高支持128G)DDR4 3200硬盘:40G系统盘+80G数据盘带宽:上行:20Mbps/下行:1000Mbps防御:100G(可加至300G)防火墙:提供自助 天机盾+金盾 管...

    crontab用法为你推荐
    域名注册公司一般公司注册的都是什么域名?linux虚拟主机基于linux操作系统的虚拟主机控制面板有哪些?中文域名注册查询中文.com域名是什么,怎么注册域名注册服务万网域名注册服务怎么样?虚拟空间哪个好国内哪个空间商(虚拟主机)最好美国网站空间论坛选择空间可以选美国网站空间吗?免费网站空间申请需要一个免费的网站空间申请地址。便宜虚拟主机麻烦各位给我推荐一个比较便宜的虚拟主机,要质量好的。谢谢大家了虚拟主机服务商哪个虚拟主机的服务商比较好?虚拟主机提供商哪个虚拟主机的服务商比较好?
    fc2最新域名 已备案域名注册 vps是什么 俄罗斯vps 已备案域名出售 vir 80vps 电影服务器 英语简历模板word 512m内存 圣诞节促销 亚洲小于500m 全站静态化 大容量存储器 ftp教程 什么是刀片服务器 服务器维护方案 个人免费主页 google台湾 独享主机 更多