Linux crontab命令定时运行脚本, python程序

简介

配置cron有两种方式,一种是直接编辑 /etc/crontab 文件; 一种是使用 crontab -e命令(推荐使用这种方式)。

1. 配置crontab文件

Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,

查看/etc/crontab文件:

$ cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

配置crontab文件:

$ vi /etc/crontab

添加命令示例:

# 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

2. 使用crontab -e命令

crontab命令:

crontab –e     //修改 crontab 文件,如果文件不存在会自动创建。 
crontab –l      //显示 crontab 文件。 
crontab -r      //删除 crontab 文件。
crontab -ir     //删除 crontab 文件前提醒用户。

service crond status     //查看crontab服务状态
service crond start     //启动服务 
service crond stop     //关闭服务 
service crond restart     //重启服务 
service crond reload     //重新载入配置

基本格式:

*  *  *  *  *  command
分  时  日  月  周   命令

(1)通过 crontab -e 创建用户的crontab文件

$ crontab -e

如果第一次创建,会是空白文件;以后会打开上次创建的文件。

可以在文件头部写入:

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute	hour	mday	month	wday	command

(2)添加运行的命令

比如,定时8点运行/data/schdule.sh 脚本,对文件/etc/crontab进行编辑,添加相应的运行代码:

0 8 * * * /data/schdule.sh

如果希望记录脚本的输出日志:

这个功能/etc/crontab是没有的.

0 8 * * * /data/schdule.sh > /data/schdule.log

如果定时运行python程序,只需要在我们的/data/schdule.sh 脚本里边写上需要运行的python代码:

python send_message_everyday.py

(3)管理crontab文件

查看已有的命令:

% crontab -l
0	14	*	*	*	/usr/home/dru/bin/mycustomscript.sh

删除所有的cron jobs:

% crontab -r
remove crontab for dru? y

2>&1含义

0 1 * * * /data/test.sh > /dev/null 2>&1

> 代表重定向;

/dev/null 代表空设备文件,相当于回收站。

1 表示stdout标准输出,系统默认值是1,所以">/dev/null" 等同于 “1>/dev/null

2 表示stderr标准错误输出;

& 表示等同于的意思,2>&1表示将标准错误输出重定向到标准输出stdout

#整句的意思就是标准输出重定向到空设备文件,也就是不输出任何信息到终端,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

3. /etc/crontab 和crontab -e的区别

(1)/etc/crontab 是系统范围的crontab, 它的格式是:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

(2)crontab -e 是针对每一个用户,但可以用 crontab -e -u <username> 指定某个用户。

对每个用户的crontab, 是没有 user 选项的:

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

4. 查看定时任务状态

如果认为执行不成功,可以查看定时任务状态:

service crond status

(centos7 版本:systemctl status crond.service)

Redirecting to /bin/systemctl status  crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-01 22:42:35 CST; 4 months 29 days ago
 Main PID: 19746 (crond)
   CGroup: /system.slice/crond.service
           └─19746 /usr/sbin/crond -n

Nov 29 23:24:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)
Nov 29 23:27:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)
Nov 30 04:00:01 bk-1.localdomain crond[19746]: (/data/project/run_job.sh) ERROR (getpwnam() failed)
Nov 30 09:59:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)

重启定时任务: (/etc/crontab会一分钟重新读取,一般无需重启)

service crond restart

(centos7 版本systemctl restart crond.service)


参考:

  1. Linux 定时运行脚本、命令;
  2. Linux 定时执行shell脚本命令之crontab;
  3. Difference between /etc/crontab and “crontab -e” Ask Question;
  4. 排查/etc/crontab不执行的过程;
  5. /dev/null 2>&1 详解
### 回答1: 可以使用Linux系统自带的crontab命令定时运行Python脚本。具体步骤如下: 1. 编写Python脚本,并保存在指定的目录下。 2. 打开终端,输入以下命令进入crontab编辑模式: crontab -e 3. 在编辑模式下,输入以下命令来设置定时任务: * * * * * python /path/to/your/python/script.py 其,* * * * * 表示定时任务的时间设置,依次为分、时、日、月、周几,每个字段的取值范围为-59、-23、1-31、1-12、-7(和7都表示周日),*表示任意值。 /path/to/your/python/script.py 表示要运行Python脚本的路径。 4. 保存并退出编辑模式,定时任务即可生效。 需要注意的是,crontab命令设置的定时任务会在后台自动运行,不会有任何提示或输出。如果需要查看定时任务的运行情况,可以使用以下命令: tail -f /var/log/syslog 在日志搜索关键字“CRON”,即可查看定时任务的运行情况。 ### 回答2: 在Linux操作系统,我们可以通过使用crontab命令来实现定时运行python脚本的功能。 Crontab是一种命令行工具,它可以帮助我们在指定的时间间隔内执行预定的任务。在Linux系统,每个用户都可以使用crontab命令自定义cron(CRON表)。cron表是一个文本文件,由多个部分组成,每个部分代表一个特定的细节,例如分钟、小时、日期、月份和星期几等。通过编辑cron表,我们可以指定Linux计划在何时运行脚本。 如何使用crontab运行Python脚本? 第一步:打开Cron表 在终端运行以下命令来打开cron表: crontab -e 如果是第一次运行,则需要选择编辑器。建议选择nano或vim。 第二步:编辑Cron表 编辑cron表既可以指定频率又可以指定要运行命令。例如定期每天运行Python脚本,可以在打开的Cron表文件添加以下行: 0 0 * * * python /home/user/myscript.py 这行代码表示在每天的午夜0点运行/myscript.py脚本。您可以根据自己的需要、频率和时间间隔来编辑cron表。 第三步:保存并退出Cron表 完成编辑操作后,按Ctrl + X,然后按Y将做出的更改保存。 现在Python脚本已经配置好了并将在指定的时间间隔内自动运行。 总结: Linux操作系统,我们可以通过使用crontab命令来实现定时运行python脚本的功能。首先我们需要打开cron表,然后编辑cron表以指定运行周期和要运行命令。最后,将脚本保存并退出Cron表,即可启动定时任务,让Linux在指定的时间间隔内自动运行Python脚本。 ### 回答3: Linux操作系统可以通过crontab命令来实现定时运行Python脚本的功能。Crontab是一种在Unix和Linux操作系统用于定期运行程序的工具。Crontab使用cron daemon作为后台进程,根据用户的设置自动执行任务。 下面是具体的步骤: 1. 首先需要创建自己的Python脚本,并保存到一个指定的目录下。比如我们将脚本命名为test.py,存放在/home/user1目录下。 2. 打开终端,输入命令crontab -e来编辑用户的crontab文件。如果是第一次使用,系统会提示选择编辑器,可以选择nano或者vim等。这里以nano为例。 3. 在打开的文件,添加一行命令: `* * * * * cd /home/user1 && /usr/local/bin/python3 test.py >/dev/null 2>&1` 这行命令的含义是每分钟执行一次test.py脚本。星号表示每分钟都执行。cd /home/user1表示切换到用户目录下,/usr/local/bin/python3 test.py是执行Python脚本命令。>/dev/null 2>&1是重定向命令,用于将所有输出信息重定向到空设备,防止邮件通知。 4. 保存并退出文件,系统会自动保存该crontab命令会提示“crontab: installing new crontab”。 5. 接下来,可以使用命令crontab -l列出用户的所有crontab。如果看到刚才添加的命令,就说明设置成功了。 6. 如需修改、删除、增加任务,可再次进入编辑模式进行操作。 通过以上步骤,就可以实现定时运行Python脚本的功能。除了上述的每分钟执行一次,还可以按需设置其他定时执行方式,例如每小时、每天、每周等等。需要注意的是,Crontab命令“*”为通配符,表示任意值,可以使用10进制的数值代替,“0 * * * *”表示每小时0分执行一次,而“*/10 * * * *”表示每隔10分钟执行一次。在使用时需要根据自己的需求设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rosefunR

你的赞赏是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值