摘要:最近用写了一些数据统计的脚本,并使用自动执行,但是配置总是要过几个坑才行的,这里总结一下这次遇到的坑。路径我们在写脚本时往往会使用相对路径,但是在执行脚本时,由于工作目录不同,就会出现找不到文件或者目录不存在的问题。
最近用Python写了一些数据统计的脚本,并使用crontab自动执行,但是配置crontab总是要过几个坑才行的,这里总结一下这次遇到的坑。
输出要将crontab命令的输出记录到日志文件中,可以使用重定向,不仅要重定向stdout也要重定向stderr,因为Python解释器会将异常输出到stderr。示例:
$HOME/path/to/script > $HOME/log/file 2>&1环境变量
crontab会以用户的身份执行配置的命令,但是不会加载用户的环境变量,crontab会设置几个默认的环境变量,例如SHELL、PATH和HOME等,一定要注意PATH可不是用户自定义的PATH。
我们往往会在.bash_profile文件中定义一些全局的环境变量,但是crontab执行时并不会加载这个文件,所以你在shell中正常执行的程序,放到crontab里就不行了,很可能就是因为找不到环境变量了。要解决这个问题只能是自己加载环境变量了,可以在shell脚本中添加source $HOME/.bash_profile,或者直接添加到crontab中。
0 12 * * * source $HOME/.bash_profile && $HOME/path/to/script > $HOME/log/file 2>&1路径
我们在写脚本时往往会使用相对路径,但是在crontab执行脚本时,由于工作目录不同,就会出现找不到文件或者目录不存在的问题。
解决方法是脚本中使用绝对路径或者在执行程序前切换工作目录,例如直接在crontab命令中切换工作目录:
0 12 * * * source $HOME/.bash_profile && cd $HOME/path/to/workdir && ./script > /HOME/log/file 2>&1编码
我写的Python程序中输出了一些中文(编码是utf-8),在shell中直接执行没有问题,但是crontab执行时出现了UnicodeEncodeError的错误,Google了一下发现这个问题不仅仅是在crontab中会出现,在使用管道或者重定向的时候都会出现这个问题,原因是编码不同。
在终端中直接执行Python程序时,Python会将输出内容自动编码为终端所使用的编码,我使用的终端编码是utf-8,所以不会出错,输出的内容也是正常的。但是在使用管道或者重定向时,编码格式为ascii,Python会用ascii编码格式去encode输出的字符串,但是字符串的编码使用的时utf-8,所以会出现UnicodeEncodeError的错误。
解决方法:
方法一:在程序中输出的字符串都加上encode("utf-8");
方法二:在crontab中加上PYTHONIOENCODING=utf-8,将Python的stdout/stderr/stdin编码设置为utf-8。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37531.html
摘要:首先是添加群自定义机器人在钉钉上选择需要发送消息的群,选择群机器人添加机器人自定义机器人添加,如下图如需要,可以为机器人设置头像。 由于公司用的通讯工具是钉钉,而群机器人可以实现自动化的信息同步,因此这里总结了自己使用钉钉自定义机器人一些方法,供参考抛砖引玉。 首先是添加群自定义机器人 在钉钉上选择需要发送消息的群,选择群机器人-添加机器人-自定义机器人-添加,如下图: showImg...
摘要:为系统增加的第一行代码不会影响该脚本在下的运行,因此您也可以用该方法编写跨平台的脚本程序。指定会话页面在客户端中的有限期分钟缺省下为分钟。最原始的博主没有找到,只能在此声明,特为转载。 这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, 发现OSchina的 一个问题的解答很精彩(值得一看,谢谢大牛们的精彩回答O(∩_∩)O~), 提出几种解决办法.现总结如下...
摘要:在轮循任务完成后,已轮循的归档将使用进行压缩。在日志轮循期间,任何错误将被忽略,例如文件无法找到之类的错误。在这种情况下,进程将立即再次读取其配置并继续运行。表示,每隔分钟,执行打印一次命令第二步添加定时任务。 1、关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,...
阅读 767·2021-10-09 09:58
阅读 634·2021-08-27 16:24
阅读 1719·2019-08-30 14:15
阅读 2376·2019-08-30 11:04
阅读 2061·2019-08-29 18:43
阅读 2166·2019-08-29 15:20
阅读 2712·2019-08-26 12:20
阅读 1612·2019-08-26 11:44