我需要unix cron命令每12小時運行一次。cron命令每12小時運行一次
我在我的服務器中有500多個子博客。
這是我要運行,每12小時
http://*.mysite.com/somedir/index.php
其中*是我的我的博客子域的文件。
我需要所有博客的cron命令。 是否可以使用單個命令運行它們? 或者我必須爲每個博客創建命令?
我需要unix cron命令每12小時運行一次。cron命令每12小時運行一次
我在我的服務器中有500多個子博客。
這是我要運行,每12小時
http://*.mysite.com/somedir/index.php
其中*是我的我的博客子域的文件。
我需要所有博客的cron命令。 是否可以使用單個命令運行它們? 或者我必須爲每個博客創建命令?
crontab文件有五個字段用於指定日期,日期和時間,然後是在該時間間隔運行的命令。上述
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
在值字段*
係指括號該列中的所有合法值。
你可以使用0 1,13 * * *
這意味着每一個凌晨1點和下午1點。
0 1,13 * * * rm /var/www/*/somedir/index.php > /home/someuser/cronlogs/some.log 2>&1
其中*
可以被不同的域名替換。
這是最好的答案,因爲它告訴你如何在任意小時內完成這項工作,而不僅僅是12PM/12AM – corvuszero 2016-07-26 19:35:01
這是一些出色的ASCII圖表,@NEW! – Beejamin 2016-10-31 13:18:15
假設你的網站活在/ var /網絡/網站名稱,你已經安裝了PHP的外殼在/ usr/bin中/ PHP的,你可以很容易地創建一個運行所有這些文件cron作業。
運行
crontab -e命令
,並添加此行
42 */12 * * * /usr/bin/php /var/www/*/somedir/index.php >> ~/cronjob.log 2>&1
的*這裏在/ var/WWW/*/somedir只是一個wildcart。這意味着它會捕獲/ var/ww文件夾中的每個目錄。
f.ex:
[[email protected] ~]$ ls -l temp
total 28
-rw-rw-r--. 1 jens jens 1641 Feb 21 16:12 somefile.py
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test2
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test3
drwxr-xr-x. 8 jens jens 4096 Jan 27 10:21 emptydir
-rw-rw-r--. 1 jens jens 548 Jan 27 16:15 Unsaved Document 1
[[email protected] ~]$ ls temp/*/testfile.php
temp/test2/testfile.php temp/test3/testfile.php temp/test/testfile.php
正如你所看到的,這個返回testfile.php的溫度,即文件夾測試,TEST2和TEST3的每個子文件夾。 012ptEmptydir也是一個文件夾,但由於它沒有testfile.php文件,所以沒有什麼會發生。
嗨,我不確定什麼'*'是什麼意思在這行'/ var/www/*/somedir/index.php'你想讓我按照原樣使用這個命令,或者我必須用我的子域來替換它嗎? – user1091558 2012-02-22 11:11:27
@ user1091558:那是我在OT下問你的。你有一個網站列表(或一個腳本列表)? – wildplasser 2012-02-22 11:17:24
哦,我很抱歉。我使用的是wordpress多站點。我有一個安裝下的500多個博客。所以我只有網站列表 – user1091558 2012-02-22 11:40:04
您需要某種主腳本(由cron調用),它擴展了站點列表,並調用「/ usr/bin/php /var/www/*/somedir/index.php」,與'*'被列表條目取代。這可以在shell腳本,perl或python腳本,或者甚至是php腳本中完成。對於sh這可能是:(未經測試)
#!/bin/sh
cd /home/subdir/for/cron
LIST="a b c d e f g h i j k l m o p q r s t u v w x y z"
for x in $LIST; do
/usr/bin/php /var/www/${x}/somedir/index.php 2>$1 > /tmp/${x}.log
done
如果不方便有硬編碼這樣的列表,還有其它方法: backticks
,或read < file_with_all_the_names_in_it
使用「*/12」的意思「每12小時。「
使用此每12小時後,將運行 * */12 * * *的PHP /無功/網絡/」 您的域名「/cronfile.php
這應該是0 */12 * * */path/to/php /path/to/somedir/index.php。如果你在第一個位置使用星號,它將每隔12小時每分鐘運行一次。 – davelupt 2015-04-21 11:59:19
我認爲正確的方法是 - >1 */12 * * *
( 實際上,如果你設置任何號碼分鐘的位置就可以了)
- >* */12 * * *
將在24小時後12h每一分鐘,然後再執行
->cron('0 */12 * * *');
該cron將每12小時運行一次調度程序。
你不明白什麼:'crontab'的格式或如何訪問/運行PHP腳本? – 2012-02-22 10:59:25
你有沒有網站列表? ('*'應該擴展到什麼程度?) – wildplasser 2012-02-22 11:00:16
你想在本地運行腳本還是從不同的機器調用腳本?如果你在本地擁有它,你可以輕鬆創建一個命令。在每個頁面上逐個調用curl或wget將證明有點困難。 – 2012-02-22 11:01:08