我正在運行測試的每小時cron作業。這項工作運行一個名爲「rotateLogs」的Python文件。 Cron不能使用擴展名,所以文件的第一行是#!/ usr/bin/python。這個python文件(fileA)然後在計算機的其他地方調用另一個python文件(fileB)。 fileB使用時間戳等登錄到日誌文件。但是,當fileB作爲cron作業通過fileA運行時,它會將其日誌文件創建爲rw-r-r--文件。Cron作業文件創建 - 創建的文件權限
問題是,如果我然後嘗試登錄到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,我認爲這是根?
嘗試'的umask 002' – Kenney
我很欣賞的評論,但這個沒」工作。我在/ etc/profile和〜/ .bashrc中將它設置爲002,但它仍然將該文件設置爲644. – WarSame
我認爲如果您可以對問題進行如下處理,則可能會更容易回答:1) crontab行; 2)'rotateLogs'(.py)中的代碼調用'fileB',3)'fileB'中的代碼創建/附加日誌文件;可能還有4)cronjob的用戶/組/ shell(以及用戶/日誌文件組,如果不同)。它可能很簡單,比如使用'#!/ usr/bin/env python',或者在某處添加'chmod g + w logfile'或者''os.umask(002)'](http://stackoverflow.com /問題/ 10291131 /如何使用的-OS-的umask式的Python)。 – Kenney