1. 程式人生 > >crontab任務不生效

crontab任務不生效

新建php指令碼ctTest.php,程式碼如下:

<?php
/***************************************************************************
 * 
 * Copyright (c) 2018 Baidu.com, Inc. All Rights Reserved
 * 
 **************************************************************************/
 
 
 
/**
 * @file ctTest.php
 * @author sunlihua(
[email protected]
) * @date 2018/11/07 11:15:27 * @brief * *
*/ $file = fopen("abc.txt", "a+"); $txt = "test\n"; fwrite($file, $txt); fclose($file); /* vim: set expandtab ts=4 sw=4 sts=4 tw=100: */ ?>
View Code

 

cron中新增如下定時任務:(crontab -e)

* * * * * /home/users/***/odphb/php/bin/php /home/users/***/odphb/test/ctTest.php

 

 

但是,在/***/odphb/test/目錄下始終沒有看到abc.txt檔案

 

1)懷疑是定時指令碼沒有執行。

通過sudo tailf /var/log/cron 檢視執行日誌,有指令碼執行日誌,如下:

Nov  7 12:06:01 *** crond[41958]: (***) CMD (/home/users/sunlihua/odphb/php/bin/php /home/users/***/odphb/test/ctTest.php)

排除指令碼未執行的可能

 

2)懷疑是許可權不對造成的,通過sudo crontab -e 新增root角色的定時任務,檢視日誌,如下:

Nov  7 12:06:01 *** crond[41957]: (root) CMD (/home/users/***/odphb/php/bin/php /home/users/***/odphb/test/ctTest.php)

 

3)在網上看到需要在指令碼前加./etc/profile; 檢視日誌如下:

Nov  7 12:06:01 *** crond[41957]: (root) CMD (./etc/profile;/home/users/***/odphb/php/bin/php /home/users/***/odphb/test/ctTest.php)

 

上面問題都排查了,在/***/odphb/test/目錄下還是沒有看到abc.txt檔案

 

最終原因:cron裡面命令用的是絕對路徑,腳本里面開啟的檔案用的也是絕對路徑,故檔案分別被寫到了***和root的根目錄下。修改腳本里面abc.txt檔案的路徑,即修復問題。