定時執行crontab使用方法詳解使用方式:crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }說明:crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的定時執行crontab使用方法詳解
使用方式:
crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
說明:
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
參數:
-e:執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r:刪除目前的時程表
-l:列出目前的時程表
時程表的格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分鍾,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 為 * 時表示每分鍾都要執行 program,f2 為 * 時表示每小時都要執行程式,其餘類推
當 f1 為 a-b 時表示從第 a 分鍾到第 b 分鍾這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 為 */n 時表示每 n 分鍾個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鍾要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推
使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
例子:
每月每天每小時的第 0 分鍾執行一次 /bin/ls:
0 7 * * * /bin/ls
在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鍾執行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信給 [email protected]:
0 17 * * 1-5 mail -s \"hi\" [email protected] < /tmp/maildata
每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo \"haha\"
20 0-23/2 * * * echo \"haha\"
注意:
當程式在你所指定的時間執行後,系統會寄一封信給你,顯示該程式執行的內容,若是你不希望收到這樣的信,請在每一行空一格之後加上 > /dev/null 2>&1 即可。
crontab 基本上有兩種建立例行性命令的方式:
一種是針對所有使用者,可以藉由 crontab -e 的指令來下達工作排程;
另一種是針對系統管理員,你可以直接修改 /etc/crontab 這個文件,來直接定時執行。
假如你需要在每天的正午 12:00 發一封信給你自己,
#crontab -e
進入 vi 的編輯畫面來編輯你的例行性命令,輸入如下語句
0 12 * * * mail [email protected] < /home/cheney/test.txt
以上有5個數字,分別代表的意思是:
分(0-59)
小時(0-23)
日期(1-31)
月份(1-12)
周(0-6)
另外,如果是[ * ]的時候,代表所有數字都適用的意思。
所以,以上的語句就是不論何月、何日、星期幾的 12 點 0 分時,執行 mail [email protected] < /home/cheney/test.txt 這個命令。
例1:
給你朋友發郵件,5月1號23:59時發送,使用:
# crontab -e 59 23 1 5 * mail [email protected] < /home/cheney/lover.txt
例2:
每隔6分鍾檢查相關文件,使用:
# crontab -e */6 * * * * /home/cheney/test.sh
刪除例行性命令:
# crontab -r 就刪除了
cron
在 Linux 中,任務可以被配置在指定的時間段、指定的日期、或系統平均載量低於指定的數量時自動運行。紅帽企業 Linux 預配置了對重要系統任務的運行,以便使系統能夠時時被更新。譬如,被 locate 命令使用的 slocate 資料庫每日都被更新。系統管理員可使用自動化的任務來執行定期備份、監控系統、運行定製腳本等等。
紅帽企業 Linux 隨帶幾個自動化任務的工具:cron、at、和 batch。
cron 是一個可以用來根據時間、日期、月份、星期的組合來調度對重復任務的執行的守護進程。
cron 假定系統持續運行。如果當某任務被調度時系統不在運行,該任務就不會被執行。
要使用 cron 服務,你必須安裝了 vixie-cron RPM 軟體包,而且必須在運行 crond 服務。要判定該軟體包是否已安裝,使用 rpm -q vixie-cron 命令。要判定該服務是否在運行,使用 /sbin/service crond status 命令。
配置 cron 任務
cron 的主配置文件是 /etc/crontab,它包括下面幾行:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
前四行是用來配置 cron 任務運行環境的變數。SHELL 變數的值告訴系統要使用哪個 shell 環境(在這個例子里是 bash shell);PATH 變數定義用來執行命令的路徑。cron 任務的輸出被郵寄給 MAILTO 變數定義的用戶名。如果 MAILTO 變數被定義為空白字元串(MAILTO=""),電子郵件就不會被寄出。HOME 變數可以用來設置在執行命令或腳本時使用的主目錄。
/etc/crontab 文件中的每一行都代表一項任務,它的格式是:
minute hour day month dayofweek command
minute — 分鍾,從 0 到 59 之間的任何整數
hour — 小時,從 0 到 23 之間的任何整數
day — 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)
month — 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)
dayofweek — 星期,從 0 到 7 之間的任何整數,這里的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)
command — 要執行的命令(命令可以是 ls /proc >> /tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。)
在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味著在滿足其它制約條件後每月都執行該命令。
整數間的短線(-)指定一個整數范圍。譬如,1-4 意味著整數 1、2、3、4。
用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。
正斜線(/)可以用來指定間隔頻率。在范圍後加上 /<integer> 意味著在范圍內可以跳過 integer。譬如,0-59/2 可以用來在分鍾欄位定義每兩分鍾。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份欄位中表示每三個月運行一次任務。
開頭為井號(#)的行是注釋,不會被處理。
如你在 /etc/crontab 文件中所見,它使用 run-parts 腳本來執行/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目錄中的腳本,這些腳本被相應地每小時、每日、每周、或每月執行。這些目錄中的文件應該是 shell 腳本。
如果某 cron 任務需要根據調度來執行,而不是每小時、每日、每周、或每月地執行,它可以被添加到 /etc/cron.d 目錄中。該目錄中的所有文件使用和 /etc/crontab 中一樣的語法。
# record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh
例 37-1. crontab 的例子
根用戶以外的用戶可以使用 crontab 工具來配置 cron 任務。所有用戶定義的 crontab 都被保存在 /var/spool/cron 目錄中,並使用創建它們的用戶身份來執行。要以某用戶身份創建一個 crontab 項目,登錄為該用戶,然後鍵入 crontab -e命令,使用由 VISUAL 或 EDITOR 環境變數指定的編輯器來編輯該用戶的 crontab。該文件使用的格式和 /etc/crontab 相同。當對 crontab 所做的改變被保存後,該 crontab 文件就會根據該用戶名被保存,並寫入文件 /var/spool/cron/username中。
cron 守護進程每分鍾都檢查 /etc/crontab 文件、etc/cron.d/ 目錄、以及 /var/spool/cron 目錄中的改變。如果發現了改變,它們就會被載入內存。這樣,當某個 crontab 文件改變後就不必重新啟動守護進程了。
控制對 cron 的使用
/etc/cron.allow 和 /etc/cron.deny 文件被用來限制對 cron 的使用。這兩個使用控制文件的格式都是每行一個用戶。兩個文件都不允許空格。如果使用控制文件被修改了,cron 守護進程(crond)不必被重啟。使用控制文件在每次用戶添加或刪除一項 cron 任務時都會被讀取。
無論使用控制文件中的規定如何,根用戶都總是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用戶才被允許使用 cron,並且 cron.deny 文件會被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用戶都被禁止使用 cron。
啟動和停止服務
要啟動 cron 服務,使用 /sbin/service crond start 命令。要停止該服務,使用 /sbin/service crond stop 命令。推薦你在引導時啟動該服務。
本篇文章來源於:開發學院 http://e.codepub.com 原文鏈接: http://e.codepub.com/2010/0723/24498.php
② linux系統下PHP郵件發送成功但沒收到郵件
有可能是被伺服器當成垃圾郵件了,你把測試的郵箱加入白名單,再測一下,如果還不行的話就是程序參數設置的問題
③ linux 系統下php 的mail()函數中參數 headers 的cc
mail 函數不能使用cc,建議使用phpmailer 的stmp功能發送,可以添加多個cc
④ linux php mail問題:我用mail函數來發送郵件(下面是示例代碼),我直接運行 php mail.php可以收到郵件,
可能是用戶許可權問題。
你執行PHP mail.php 的用戶 和 php程序宿主的用戶不一個吧?
用的什麼郵件系統?
⑤ 在PHP在Linux系統下如何發郵件,如果能給出PHP代碼就更好了
PHP發郵件可以使用本身自帶函數mail(),但這需要你設置好伺服器的郵件伺服器。
還可以使用一些已經封裝好的類,我最近一直在使用 PHPMailer 這個類,很好用,發送方式比較多,在Linux下可以使用SMTP,Sendmail等方式發送,你可以下載學習一下。挺簡單的。
⑥ linux php用什麼伺服器
看放什麼網站了。
一、Web伺服器安全
PHP是Web伺服器的一個模塊功能,所以要想使PHP擁有較安全的配置,首先要保證Web
伺服器的安全,當然Web伺服器要安全就必須先保證系統安全。PHP可以和各種Web伺服器結
合,這里只討論Apache。筆者建議以chroot方式安裝啟動Apache,這樣即使Apache和PHP
及其腳本出現漏洞,受影響的也只有這個禁錮的系統,不會危害實際系統。但是我們使用
chroot的Apache後,會給應用帶來一定的麻煩,比如連接mysql時必須用「127.0.0.1」地址,
使用tcp連接而不能用localhost實現socket連接,這在效率上會稍微差一點。mail函數發
送郵件也存在一定的問題,因為php.ini里的:
[mail function];
For Win32 only.
SMTP=localhost,
For Win32 only.
這都是針對Win32平台的,所以我們需要在chroot環境下調整好sendmail。
二、PHP本身問題
1.遠程溢出
PHP-4.1.2以下的所有版本都存在文件上傳遠程緩沖區溢出漏洞,而且攻擊程序已經廣
泛流傳,成功率非常高:
http://packetstormsecurity.org/0204-exploits/7350fun
http://hsj.shadowpenguin.org/misc/php3018_exp.txt
2.遠程拒絕服務
PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST請求處理遠程漏洞,雖然
不能獲得本地用戶許可權,但是也能造成拒絕服務。
3.safe_mode繞過漏洞
PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函數繞過safe_mode限制執行命令漏
洞。從4.0.5版本開始,mail函數增加了第五個參數,設計者可以突破safe_mode的限制執行
命令,其中4.0.5版本突破非常簡單,只需用分號隔開後面加shell命令就可以了。
三、PHP本身的安全配置
PHP的配置非常靈活,我們可以通過php.ini、httpd.conf、.htAccess文件(該目錄必須
設置了AllowOverride All或Options)進行設置,還可以在腳本程序里使用ini_set()和其他
的特定的函數進行設置,通過phpinfo()和get_cfg_var()函數可以得到配置選項的各個值。
如果配置選項是唯一PHP_INI_SYSTEM屬性的,我們必須通過php.ini和httpd.conf來修
改,其修改的是PHP的Master值,但修改之後必須重啟apache才能生效。其中php.ini設置
的選項是對Web伺服器所有腳本生效,httpd.conf里設置的選項是對該定義的目錄下所有腳
本生效。
在討論Linux系統下安全配置PHP伺服器之前,我們應該了解PHP的safe_mode模式。
1.safe_mode
safe_mode是唯一PHP_INI_SYSTEM屬性,它必須通過php.ini或h
⑦ Linux 下無法使用mail命令發送郵件
根據你描述的情況,使用mail發郵件是通過本機的postfix來發送的。如果本機的的postfix配置中啟用了relay,則會將發信請求轉發到relay機器進行投遞。如果此時通過mail發不出郵件,則問題有可能出現在relay的伺服器上。
你說的通過php是可以發郵件的,這個和使用mail是兩回事。如果php程序使用的是自己的發信程序,那與本機的postfix可能就沒有什麼關系。這其中具體的配置還要看程序是怎麼設計的。
⑧ linux系統webmin面板php的mail郵件發不出去
我發的mail,都憋在/var/spool/mqueue裡面了,網上說這是因為/etc/procmail...如果你的系統支持Berkeley db的話,則你還需要給Makefile一些消息。必須指定...
⑨ linux怎麼開啟imap電子郵件系統函數庫
IMAP 的全名是 Internet Message Access Protocol,即網際網路信息存取協議,為美國史丹福大學 (Stanford
University) 在 1986 年開始研發的多重郵箱電子郵件系統。PHP 所提供的功能是 IMAP 4 的系統,這是根據 RFC 1730
所實作的。欲使用 IMAP 的電子郵件功能,要先下載 IMAP 的客戶端程序。在編譯完成之後將 c-client/c-client.a 復制到
/usr/local/lib 之中,並將 c-client/rfc822.h、mail.h 及 linkage.h 三個文件復制到
/usr/local/include 之下。之後編譯 PHP 程序時要加入 --with-imap 的選項。