cron工具
乌班图系统中已经预装cron,若没有,直接apt-get安装
sudo apt-get update
sudo apt-get install cron
设置cron运行计划:
crontab -e
编写工具是vi
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
20 0 * * * /home/conda3/envs/count/bin/python /home/more/check.py
每一行都是一个单独的定时运行计划,可以看到以上只有一个运行计划:
20 0 * * * /home/conda3/envs/count/bin/python /home/more/check.py
Crontab是一个基于时间的任务调度程序,在Linux和其他Unix系统中广泛使用。Crontab使用由五个时间字段组成的语法,它们定义了执行任务的时间。以下是Crontab时间设置的详细说明:
- 分钟 (0-59)
- 小时 (0-23)
- 日 (1-31)
- 月 (1-12)
- 星期几 (0-6,其中0是星期天)
对于每个字段,您可以使用以下选项:
- 星号(*):匹配所有值。例如,将星号用于小时字段将意味着任务每小时运行一次。
- 逗号(,):指定多个值。例如,小时字段中使用逗号分隔符将允许您指定多个小时值(例如2,6,8)。
- 连字符(-):指定一定的范围。例如,将月份字段中使用连字符分隔符将允许您指定一个月份范围(例如2-6)。
- 正斜杠(/):指定间隔值。例如,将分钟字段中使用正斜杠分隔符将允许您指定每隔几分钟运行一次(例如*/15表示每隔15分钟运行一次)。
所以上面的计划的意思就算在每天的零点20分运行脚本。
因为用了conda环境,所以这里直接指定环境里的解释器运行脚本,即:
/home/conda3/envs/count/bin/python
后面即脚本的位置。
nohup工具
语法:
nohup python3 my_script.py > output.log 2>&1 &
同上面corn工具,python3直接用路径指定到conda环境里的解释器和脚本位置
上述命令中:
nohup
:表示忽略挂起信号,使程序在后台运行;结尾的&
:表示在后台运行命令。- > output.log 2>&1:简单说就算把你的print出来的信息、log的streamhandler的信息和raise的信息都输出到putput.log。这个命令是用来将标准输出和标准错误输出合并到一个文件中。其中,">" 符号表示将输出重定向到文件中,"output.log" 是文件名,表示输出重定向到名为 "output.log" 的文件中。而 "2>&1" 表示将标准错误输出(2)重定向到标准输出(1)中,也就是将错误信息也输出到 "output.log" 这个文件中。因此,整个命令的含义就是将脚本的标准输出和标准错误输出合并到名为 "output.log" 的文件中。
nohup工具能解决的最大麻烦是关闭连接终端后,程序依然能在后台运行,也就是不用一直开着终端连接,当然也是后台运行的好方法。corn工具则可以解决无人值守自动运行的问题。