Cron作业文件创建 - 创建文件权限

时间:2015-11-01 20:04:39

标签: python cron file-permissions

我正在运行一个每小时的cron工作进行测试。这个作业运行一个名为“rotateLogs”的python文件。 Cron不能使用扩展,因此文件的第一行是#!/ usr / bin / python。然后,此python文件(fileA)调用计算机中其他位置的另一个python文件(fileB)。 fileB使用时间戳等注销日志文件。但是,当fileB作为cron作业通过fileA运行时,它会将其日志文件创建为rw-r - r-- files。

问题是,如果我然后尝试从fileB登录文件,除非您使用sudo权限运行它们,否则它们无法写入文件。所以我正在寻找一些方法来解决这个问题。理想情况下,简单地将文件设置为rw-rw-r--文件会很好,但我不知道如何使用cron执行此操作。谢谢你的帮助。

编辑:rotateLogs(故意不是.py):

#!/usr/bin/python
#rotateLogs
#Calls the rotateLog function in the Communote scripts folder
#Designed to be run as a daily log rotation cron job
import sys,logging
sys.path.append('/home/graeme/Communote/scripts')
import localLogging
localLogging.localLog("Hourly log",logging.error)
print "Hello"

crontab中没有命令,但它在每小时的cron上运行正常(在一小时后的17分钟)。

FileB的相关功能:

def localLog(strToLog,severityLevel):
    #Allows other scripts to log easily
    #Takes their log request and appends it to the log file
    logging.basicConfig(filename=logDirPath+getFileName(currDate),format="%(asctime)s %(message)s")
    #Logs strToLog, such as logging.warning(strToLog)
    severityLevel(strToLog)
    return

我不确定如何找到cronjob的用户/组,但它只是在/etc/cron.hourly中,我认为是root用户?

1 个答案:

答案 0 :(得分:2)

事实证明cron没有提供任何shell配置文件(/etc/profile~/.bashrc),因此必须在cron调用的脚本中设置umask。 / p>

使用用户级crontabs(crontab -e)时,可以按如下方式设置umask:

0 * * * * umask 002; /path/to/script

即使它是一个python脚本,这也会起作用,因为os.umask的默认值继承自shell的umask。

但是,在/etc/cron.hourly等中放置python脚本,除了在python脚本本身之外,没有办法设置umask:

import os
os.umask(002)