鍚嶈瘝瑙i噴錛?/strong>man epoll涔嬪悗錛屽緱鍒板涓嬬粨鏋滐細
NAME
epoll - I/O event notification facility
SYNOPSIS
#include <sys/epoll.h>
DESCRIPTION
epoll is a variant of poll(2) that can be used either as Edge or Level
Triggered interface and scales well to large numbers of watched fds.
Three system calls are provided to set up and control an epoll set:
epoll_create(2), epoll_ctl(2), epoll_wait(2).
An epoll set is connected to a file descriptor created by epoll_cre-
ate(2). Interest for certain file descriptors is then registered via
epoll_ctl(2). Finally, the actual wait is started by epoll_wait(2).
鍏跺疄錛屼竴鍒囩殑瑙i噴閮芥槸澶氫綑鐨勶紝鎸夌収鎴戠洰鍓嶇殑浜嗚В錛孍POLL妯″瀷浼間箮鍙湁涓€縐嶆牸寮忥紝鎵€浠ュぇ瀹跺彧瑕佸弬鑰冩垜涓嬮潰鐨勪唬鐮侊紝灝辮兘澶熷EPOLL鏈夋墍浜嗚В浜嗭紝浠g爜鐨勮В閲婇兘宸茬粡鍦ㄦ敞閲婁腑錛?/p>
while (TRUE)
{
int nfds = epoll_wait (m_epoll_fd, m_events, MAX_EVENTS, EPOLL_TIME_OUT);//絳夊緟EPOLL鏃墮棿鐨勫彂鐢燂紝鐩稿綋浜庣洃鍚紝鑷充簬鐩稿叧鐨勭鍙o紝闇€瑕佸湪鍒濆鍖朎POLL鐨勬椂鍊欑粦瀹氥€?br /> if (nfds <= 0)
continue;
m_bOnTimeChecking = FALSE;
G_CurTime = time(NULL);
for (int i=0; i<nfds; i++)
{
try
{
if (m_events[i].data.fd == m_listen_http_fd)//濡傛灉鏂扮洃嫻嬪埌涓€涓狧TTP鐢ㄦ埛榪炴帴鍒扮粦瀹氱殑HTTP绔彛錛屽緩绔嬫柊鐨勮繛鎺ャ€傜敱浜庢垜浠柊閲囩敤浜哠OCKET榪炴帴錛屾墍浠ュ熀鏈病鐢ㄣ€?br /> {
OnAcceptHttpEpoll ();
}
else if (m_events[i].data.fd == m_listen_sock_fd)//濡傛灉鏂扮洃嫻嬪埌涓€涓猄OCKET鐢ㄦ埛榪炴帴鍒頒簡緇戝畾鐨凷OCKET绔彛錛屽緩绔嬫柊鐨勮繛鎺ャ€?br /> {
OnAcceptSockEpoll ();
}
else if (m_events[i].events & EPOLLIN)//濡傛灉鏄凡緇忚繛鎺ョ殑鐢ㄦ埛錛屽茍涓旀敹鍒版暟鎹紝閭d箞榪涜璇誨叆銆?br /> {
OnReadEpoll (i);
}
OnWriteEpoll (i);//鏌ョ湅褰撳墠鐨勬椿鍔ㄨ繛鎺ユ槸鍚︽湁闇€瑕佸啓鍑虹殑鏁版嵁銆?br /> }
catch (int)
{
PRINTF ("CATCH鎹曡幏閿欒/n");
continue;
}
}
m_bOnTimeChecking = TRUE;
OnTimer ();//榪涜涓€浜涘畾鏃剁殑鎿嶄綔錛屼富瑕佸氨鏄垹闄や竴浜涚煭綰跨敤鎴風瓑銆?br /> }
銆€鍏跺疄EPOLL鐨勭簿鍗庯紝鎸夌収鎴戠洰鍓嶇殑鐞嗚В錛屼篃灝辨槸涓婅堪鐨勫嚑孌電煭鐭殑浠g爜錛岀湅鏉ユ椂浠g湡鐨勪笉鍚屼簡錛屼互鍓嶅浣曟帴鍙楀ぇ閲忕敤鎴瘋繛鎺ョ殑闂錛岀幇鍦ㄥ嵈琚姝よ交鏉劇殑鎼炲畾錛岀湡鏄浜轟笉寰椾笉鎰熷徆銆?/p>
浠婂ぉ鎼炰簡涓€澶╃殑epoll錛屾兂鍋氫竴涓珮騫跺彂鐨勪唬鐞嗙▼搴忋€傚垰寮€濮嬬湡鏄儊闂?涓€鐩存悶涓嶉€氾紝緗戜笂涔熸湁鍑犵瘒浠嬬粛epoll鐨勬枃绔犮€備絾閮戒笉娣卞叆錛屾病鏈夊皢涓€浜涙敞鎰忕殑鍦版柟璁叉槑銆備互鑷充簬璧頒簡寰堝寮礬錛岀幇灝嗚嚜宸辯殑涓€浜涚悊瑙e叡浜粰澶у,浠ュ皯璧板集璺€?
epoll鐢ㄥ埌鐨勬墍鏈夊嚱鏁伴兘鏄湪澶存枃浠秙ys/epoll.h涓0鏄庯紝鏈変粈涔堝湴鏂逛笉鏄庣櫧鎴栧嚱鏁板繕璁頒簡鍙互鍘葷湅涓€涓嬨€?
epoll鍜宻elect鐩告瘮錛屾渶澶т笉鍚屽湪浜?
1epoll榪斿洖鏃跺凡緇忔槑紜殑鐭ラ亾鍝釜sokcet fd鍙戠敓浜嗕簨浠訛紝涓嶇敤鍐嶄竴涓釜姣斿銆傝繖鏍峰氨鎻愰珮浜嗘晥鐜囥€?
2select鐨凢D_SETSIZE鏄湁闄愭鐨勶紝鑰宔poll鏄病鏈夐檺姝㈢殑鍙笌緋葷粺璧勬簮鏈夊叧銆?
1銆乪poll_create鍑芥暟
鍑芥暟澹版槑錛歩nt epoll_create(int size)
璇?鍑芥暟鐢熸垚涓€涓猠poll涓撶敤鐨勬枃浠舵弿榪扮銆傚畠鍏跺疄鏄湪鍐呮牳鐢寵涓€絀洪棿錛岀敤鏉ュ瓨鏀句綘鎯沖叧娉ㄧ殑socket fd涓婃槸鍚﹀彂鐢熶互鍙婂彂鐢熶簡浠€涔堜簨浠躲€俿ize灝辨槸浣犲湪榪欎釜epoll fd涓婅兘鍏蟲敞鐨勬渶澶ocket fd鏁般€傞殢浣犲畾濂戒簡銆傚彧瑕佷綘鏈夌┖闂淬€傚彲鍙傝涓婇潰涓巗elect涔嬩笉鍚?.
22銆乪poll_ctl鍑芥暟
鍑芥暟澹版槑錛歩nt epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
璇ュ嚱鏁扮敤浜庢帶鍒舵煇涓猠poll鏂囦歡鎻忚堪絎︿笂鐨勪簨浠訛紝鍙互娉ㄥ唽浜嬩歡錛屼慨鏀逛簨浠訛紝鍒犻櫎浜嬩歡銆?
鍙傛暟錛?
epfd錛氱敱 epoll_create 鐢熸垚鐨別poll涓撶敤鐨勬枃浠舵弿榪扮錛?
op錛氳榪涜鐨勬搷浣滀緥濡傛敞鍐屼簨浠訛紝鍙兘鐨勫彇鍊糆POLL_CTL_ADD 娉ㄥ唽銆丒POLL_CTL_MOD 淇?鏀廣€丒POLL_CTL_DEL 鍒犻櫎
fd錛氬叧鑱旂殑鏂囦歡鎻忚堪絎︼紱
event錛氭寚鍚慹poll_event鐨勬寚閽堬紱
濡傛灉璋冪敤鎴愬姛榪斿洖0,涓嶆垚鍔熻繑鍥?1
鐢ㄥ埌鐨勬暟鎹粨鏋?
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
struct epoll_event {
__uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
};
濡傦細
struct epoll_event ev;
//璁劇疆涓庤澶勭悊鐨勪簨浠剁浉鍏崇殑鏂囦歡鎻忚堪絎?br />ev.data.fd=listenfd;
//璁劇疆瑕佸鐞嗙殑浜嬩歡綾誨瀷
ev.events=EPOLLIN|EPOLLET;
//娉ㄥ唽epoll浜嬩歡
epoll_ctl(epfd,EPOLL_CTL_ADD,listenfd,&ev);
甯哥敤鐨勪簨浠剁被鍨?
EPOLLIN 錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎﹀彲浠ヨ錛?br />EPOLLOUT錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎﹀彲浠ュ啓錛?br />EPOLLPRI錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎︽湁绱ф€ョ殑鏁版嵁鍙
EPOLLERR錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎﹀彂鐢熼敊璇紱
EPOLLHUP錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎﹁鎸傛柇錛?br />EPOLLET錛氳〃紺哄搴旂殑鏂囦歡鎻忚堪絎︽湁浜嬩歡鍙戠敓錛?br />
3銆乪poll_wait鍑芥暟
鍑芥暟澹版槑:int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout)
璇ュ嚱鏁扮敤浜庤疆璇/O浜嬩歡鐨勫彂鐢燂紱
鍙傛暟錛?br />epfd:鐢眅poll_create 鐢熸垚鐨別poll涓撶敤鐨勬枃浠舵弿榪扮錛?br />epoll_event:鐢ㄤ簬鍥炰紶浠e鐞嗕簨浠剁殑鏁扮粍錛?br />maxevents:姣忔鑳藉鐞嗙殑浜嬩歡鏁幫紱
timeout:絳夊緟I/O浜嬩歡鍙戠敓鐨勮秴鏃跺€?鍗曚綅鎴戜篃涓嶅お娓呮)錛?1鐩稿綋浜庨樆濉烇紝0鐩稿綋浜庨潪闃誨銆備竴鑸敤-1鍗沖彲
榪斿洖鍙戠敓浜嬩歡鏁般€?br />
epoll_wait 榪愯鐨勫師鐞嗘槸 絳変緧娉ㄥ唽鍦╡pfd涓婄殑socket fd鐨勪簨浠剁殑鍙戠敓錛屽鏋滃彂鐢熷垯灝嗗彂鐢熺殑sokct fd鍜屼簨浠剁被鍨嬫斁鍏ュ埌events鏁扮粍涓€? 騫朵笖灝嗘敞鍐屽湪epfd涓婄殑socket fd鐨勪簨浠剁被鍨嬬粰娓呯┖錛屾墍浠ュ鏋滀笅涓€涓驚鐜綘榪樿鍏蟲敞榪欎釜socket fd鐨勮瘽錛屽垯闇€瑕佺敤epoll_ctl(epfd,EPOLL_CTL_MOD,listenfd,&ev)鏉ラ噸鏂拌緗畇ocket fd鐨勪簨浠剁被鍨嬨€傝繖鏃朵笉鐢‥POLL_CTL_ADD,鍥犱負socket fd騫舵湭娓呯┖錛屽彧鏄簨浠剁被鍨嬫竻絀恒€傝繖涓€姝ラ潪甯擱噸瑕併€?nbsp;
杞細
浠婂ぉ琚湅鍙嬮棶鍙?#8220;Linux涓嬪彲浠ユ浛鎹㈣繍琛屼腑鐨勭▼搴忎箞錛?#8221;錛屼互鍓嶄緷紼€璁板緱Linux涓嬫槸鍙互鐨勶紙鑰學indows灝變笉璁╋級錛屼簬鏄殢鍙g瓟閬?#8220;OK”銆傜粨鏋滄湅鍙嬪彂鏉ヤ竴涓墽琛岀粨鏋滐細錛坱est姝e湪榪愯涓級
# cp test2 test
cp: cannot create regular file `test': Text file busy
鐪嬭搗鏉ユ槸紼嬪簭琚崰鐢紝鏃犳硶瑕嗙洊銆備簬鏄嚜宸卞張鍐嶅仛浜嗗嚑涓疄楠岋細
錛?錛夊厛rm鍒犻櫎姝e湪榪愯鐨則est錛岀劧鍚巆p test2 test灝辨病鏈夐敊璇簡銆?br />錛?錛夊厛mv鏀瑰悕姝e湪榪愯鐨則est錛岀劧鍚巆p test2 test涔熸病鏈夐棶棰樸€?/p>
鏌ヤ簡鏌ヨ祫鏂欏茍鍔ㄦ墜鍒嗘瀽浜嗕竴涓嬶紝鎵懼埌浜嗘瘮杈冩弧鎰忕殑瑙i噴銆俢p騫朵笉鏀瑰彉鐩爣鏂囦歡鐨刬node錛屼簨瀹炰笂瀹冪殑瀹炵幇鏄繖鏍風殑錛?/p>
# strace cp test2 test 2>&1 | grep open.*test
open("test2", O_RDONLY|O_LARGEFILE) = 3
open("test", O_WRONLY|O_TRUNC|O_LARGEFILE) = 4
鎴戝師浠ヤ負cp鐨勫疄鐜版槸“rm + open(O_CREAT)”錛屼笉榪囩幇鍦ㄦ兂鎯充笂闈㈢殑瀹炵幇鏂瑰紡鎵嶆槸鏈€鍙潬鐨勶紙淇濊瘉浜嗘椂搴忓畨鍏ㄥ拰鐩爣鏂囦歡鐨勫睘鎬э級銆傝繖涔熷彲浠ヨВ閲婁負浠€涔坈p鐨勭洰鏍囨枃浠朵細緇ф壙琚鐩栨枃浠剁殑灞炴€ц€岄潪婧愭枃浠躲€?/p>
Linux 鐢變簬Demand Paging鏈哄埗鐨勫叧緋伙紝蹇呴』紜繚姝e湪榪愯涓殑紼嬪簭闀滃儚錛堟敞鎰忥紝騫墮潪鏂囦歡鏈韓錛変笉琚剰澶栦慨鏀癸紝鍥犳鍐呮牳鍦ㄥ惎鍔ㄧ▼搴忓悗浼氶攣瀹氳繖涓▼搴忛暅鍍忕殑inode銆傝繖灝? 鏄負浠€涔坈p鍦ㄧ敤“O_WRONLY|O_TRUNC”妯″紡open鐩爣鏂囦歡鏃朵細澶辮觸銆傝€屽厛rm鍐峜p鐨勮瘽錛屾柊鏂囦歡鐨刬node鍏跺疄宸茬粡鏀瑰彉浜嗭紝鍘? inode騫舵病鏈夎鐪熸鍒犻櫎錛岀洿鍒板唴鏍擱噴鏀懼瀹冪殑寮曠敤銆傚悓鐞嗭紝mv鍙槸鏀瑰彉浜嗘枃浠跺悕錛屽叾inode涓嶅彉錛屾柊鏂囦歡浣跨敤浜嗘柊鐨刬node銆?/span>
闂鍒拌繖閲屽凡緇忔按钀界煶鍑猴紝涓嶈繃鍒ㄦ牴絀跺簳鐨勪釜鎬ч┍浣挎垜鍐嶅仛浜嗕互涓嬩竴緇勫疄楠岋紝娌℃兂鍒扮粨鏋滃畬鍏ㄥ嚭涔庢垜鎰忔枡涔嬪錛?/p>
鍐欎簡涓€涓畝鍗曠殑嫻嬭瘯紼嬪簭錛?/p>
#include <stdio.h>
int main(int argc, char * argv[])
{
foo(); // An export function by libtest.so.
sleep(1000);
return 0;
}
foo()鏄彟涓€涓祴璇曞姩鎬佸簱libtest.so鐨勫鍑烘帴鍙o紝鍙墦鍗頒竴琛屾彁紺哄氨榪斿洖銆傛帴涓嬫潵鎴戞妸涓婇潰瀵規墽琛屾枃浠剁殑嫻嬭瘯鐢ㄤ緥瀵瑰姩鎬佸簱鍙堝仛浜嗕竴閬嶏細
錛?錛塩p libtest2.so libtest.so鍙互鐩存帴瑕嗙洊宸插姞杞界殑鍔ㄦ€佸簱銆?br />錛?錛夊厛rm鍒犻櫎宸插姞杞界殑libtest.so錛岀劧鍚巆p libtest2.so libtest.so鎴愬姛銆?br />錛?錛夊厛mv鏀瑰悕宸插姞杞界殑libtest.so錛岀劧鍚巆p libtest2.so libtest.so鎴愬姛銆?/p>
闄や簡絎竴涓敤渚嬪錛岀粨鏋滅浉鍚屻€傝繖鏍風湅鏉ワ紝鍔ㄦ€佸簱琚姞杞芥椂闅鵑亾ld騫舵病鏈夐攣瀹歩node錛熶笉榪囨兂鎯充篃鍙互瀹芥仌錛屾瘯绔焞d涔熸槸鐢ㄦ埛鎬佺▼搴忥紝娌℃湁鏉冨埄鍘婚攣瀹歩node錛屼篃涓嶅簲涓庡唴鏍哥殑鏂囦歡緋葷粺搴曞眰瀹炵幇鑰﹀悎銆?/p>
鍒拌繖閲岄兘榪樼畻鍦ㄦ儏鐞嗕箣涓紝鐪嬭搗鏉inux涔熼兘澶勭悊鐨勫緢濂姐€備笉榪囪繕鍓╀笅涓€涓棶棰橈細鍔ㄦ€佸簱琚互cp鐨勬柟寮忚鐩栧悗闅鵑亾涓嶄細鍜孌emand Paging鏈哄埗浜х敓鍐茬獊錛?/p>
鍦ㄦ€濊€冭繖涓棶棰樼殑榪囩▼涓紝鎴戞剰璇嗗埌鍓嶉潰榪欎釜嫻嬭瘯紼嬪簭鐨勪竴涓嚧鍛芥紡媧烇紝紼嶄綔淇敼濡備笅錛?/p>
#include <stdio.h>
int main(int argc, char * argv[])
{
loop:
foo(); // An export function by libtest.so.
sleep(1);
goto loop;
return 0;
}
榪?嬈★紝鍐嶆墽琛屼笂闈㈢殑涓変釜鐢ㄤ緥鍚庡彂鐜幫紝“cp libtest2.so libtest.so”铏界劧浠嶅彲鐩存帴瑕嗙洊宸插姞杞界殑鍔ㄦ€佸簱錛屼絾鏄祴璇曠▼搴忛┈涓婂嚭鐜頒簡“Segmentation fault”銆傝€屽悗涓や釜鐢ㄤ緥緇撴灉涓嶅彉銆傜敱姝ゅ彲瑙侊紝鎯寵瀹夊叏鐨勬浛鎹㈠凡鍔犺澆鐨勫姩鎬佸簱錛岃繕鏄敤“絎ㄦ嫏”鐨?#8220;rm + cp”鍚э紝鐪嬩技鎹峰緞鐨?#8220;cp瑕嗙洊”浼氱洿鎺ヨ懍閫佹帀浣犵殑紼嬪簭……
鐪嬫潵錛屾垜鍐嶄竴嬈′綆浼頒簡Linux鐨勫仴澹€э紝鐪嬩技絎﹀悎閫昏緫鐨勬祦紼嬩篃鍙兘浼氬甫鏉ョ伨 闅炬€х殑鍚庢灉錛?#8220;rm & cp”涓?#8220;cp瑕嗙洊”鑳屽悗鎵€闅愯棌鐨勫簳灞傚樊寮傚嵈鍙互鎴愪負浣犵殑鏁戞槦銆侺inux鐢ㄥ緱瓚婁箙瓚婃槸璁╀漢瑙夊緱榪欐槸涓€鍧楀厖婊′簡鑽嗘鍜岄櫡闃辯殑鍘熷涓涙灄錛屽彧鏈夋姝ヤ負钀ュ疄韙忓墠 琛屾墠鑳借蛋鐨勬洿榪溿€?/p>
娉細浠ヤ笂瀹為獙鍩轟簬SuSE Linux Enterprise Server 9 SP1錛圠inux 2.6.5 & glibc 2.3.3錛夈€?/p>
緇熻鏂囦歡澶逛笅鏂囦歡涓暟
ls | wc -l
鍒犻櫎鐩綍
rm -rf /opt/tomcat5028 鍒犻櫎鐩綍
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
淇敼鏃ユ湡
璁蹭竴涓婰inux 鎴朥nix涓嬫€庢牱淇敼緋葷粺鏃墮棿
鎴戜滑涓€鑸嬌鐢?#8220;date -s”鍛戒護鏉ヤ慨鏀圭郴緇熸椂闂淬€傛瘮濡傚皢緋葷粺鏃墮棿璁懼畾鎴?996騫?鏈?0鏃ョ殑鍛戒護濡備笅銆?
#date -s 06/10/96
灝嗙郴緇熸椂闂磋瀹氭垚涓嬪崍1鐐?2鍒?縐掔殑鍛戒護濡備笅銆?br />
#date -s 13:12:00
---- 娉ㄦ剰錛岃繖閲岃鐨勬槸緋葷粺鏃墮棿錛屾槸linux鐢辨搷浣滅郴緇熺淮鎶ょ殑銆?
----
鍦ㄧ郴緇熷惎鍔ㄦ椂錛孡inux鎿嶄綔緋葷粺灝嗘椂闂翠粠CMOS涓鍒扮郴緇熸椂闂村彉閲忎腑錛屼互鍚庝慨鏀規椂闂撮€氳繃淇敼緋葷粺鏃墮棿瀹炵幇銆備負浜嗕繚鎸佺郴緇熸椂闂翠笌CMOS鏃墮棿鐨勪竴鑷存€э紝
Linux姣忛殧涓€孌墊椂闂翠細灝嗙郴緇熸椂闂村啓鍏MOS銆傜敱浜庤鍚屾鏄瘡闅斾竴孌墊椂闂達紙澶х害鏄?1鍒嗛挓錛夎繘琛岀殑錛屽湪鎴戜滑鎵цdate
-s鍚庯紝濡傛灉椹笂閲嶈搗鏈哄櫒錛屼慨鏀規椂闂村氨鏈夊彲鑳芥病鏈夎鍐欏叆CMOS,榪欏氨鏄棶棰樼殑鍘熷洜銆傚鏋滆紜繚淇敼鐢熸晥鍙互鎵ц濡備笅鍛戒護銆?
---- #clock -w
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
娣誨姞ftp鐢ㄦ埛
//娣誨姞sfupload/123abc
useradd -G ftp -d /home/sfupload –M sfupload
mkdir /home/sfupload
chown sfupload.sfupload /home/sfupload
chmod 777 /home/sfupload //7琛ㄧずwrx 5琛ㄧずrx 0琛ㄧず浠€涔堟潈闄愰兘娌℃湁
passwd sfupload
#123abc
#123abc
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛?/p>
oracle 鍚姩
svrmgrl
connect internal
shutdown abort
startup
lsnrctl stop
lsnrctl start
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
9鐗堟湰
sqlplus /nolog
connect / as sysdba;
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛?br />
linux鐩綍涓嬫枃浠舵€繪暟
ls -l | grep "^-" | wc -l
銆€銆€/sbin/service crond stop //鍏抽棴鏈嶅姟
銆€銆€/sbin/service crond restart //閲嶅惎鏈嶅姟
銆€銆€/sbin/service crond reload //閲嶆柊杞藉叆閰嶇疆
銆€銆€浣犱篃鍙互灝嗚繖涓湇鍔″湪緋葷粺鍚姩鐨勬椂鍊欒嚜鍔ㄥ惎鍔?
銆€銆€鍦?etc/rc.d/rc.local榪欎釜鑴氭湰鐨勬湯灝懼姞涓?
銆€銆€/sbin/service crond start
銆€銆€鐜板湪Cron榪欎釜鏈嶅姟宸茬粡鍦ㄨ繘紼嬮噷闈簡錛屾垜浠氨鍙互鐢ㄨ繖涓湇鍔′簡錛孋ron鏈嶅姟鎻愪緵浠ヤ笅鍑犵鎺ュ彛渚涘ぇ瀹朵嬌鐢?
銆€銆€1.鐩存帴鐢╟rontab鍛戒護緙栬緫
銆€銆€cron鏈嶅姟鎻愪緵crontab鍛戒護鏉ヨ瀹歝ron鏈嶅姟鐨勶紝浠ヤ笅鏄繖涓懡浠ょ殑涓€浜涘弬鏁頒笌璇存槑:
銆€銆€crontab -u //璁懼畾鏌愪釜鐢ㄦ埛鐨刢ron鏈嶅姟錛屼竴鑸瑀oot鐢ㄦ埛鍦ㄦ墽琛岃繖涓懡浠ょ殑鏃跺€欓渶瑕佹鍙傛暟
銆€銆€crontab -l //鍒楀嚭鏌愪釜鐢ㄦ埛cron鏈嶅姟鐨勮緇嗗唴瀹?/p>
銆€銆€crontab -r //鍒犻櫎娌′釜鐢ㄦ埛鐨刢ron鏈嶅姟
銆€銆€crontab -e //緙栬緫鏌愪釜鐢ㄦ埛鐨刢ron鏈嶅姟
銆€銆€姣斿璇磖oot鏌ョ湅鑷繁鐨刢ron璁劇疆:crontab -u root -l
銆€銆€鍐嶄緥濡傦紝root鎯沖垹闄red鐨刢ron璁劇疆:crontab -u fred -r
銆€銆€鍦ㄧ紪杈慶ron鏈嶅姟鏃訛紝緙栬緫鐨勫唴瀹規湁涓€浜涙牸寮忓拰綰﹀畾錛岃緭鍏?crontab -u root -e
銆€銆€榪涘叆vi緙栬緫妯″紡錛岀紪杈戠殑鍐呭涓€瀹氳絎﹀悎涓嬮潰鐨勬牸寮?*/1 * * * * ls >> /tmp/ls.txt
榪欎釜鏍煎紡鐨勫墠涓€閮ㄥ垎鏄鏃墮棿鐨勮瀹氾紝鍚庨潰涓€閮ㄥ垎鏄鎵ц鐨勫懡浠わ紝濡傛灉瑕佹墽琛岀殑鍛戒護澶錛屽彲浠ユ妸榪欎簺鍛戒護鍐欏埌涓€涓剼鏈噷闈紝鐒跺悗鍦ㄨ繖閲岀洿鎺ヨ皟鐢ㄨ繖涓剼鏈氨 鍙互浜嗭紝璋冪敤鐨勬椂鍊欒寰楀啓鍑哄懡浠ょ殑瀹屾暣璺緞銆傛椂闂寸殑璁懼畾鎴戜滑鏈変竴瀹氱殑綰﹀畾錛屽墠闈簲涓?鍙蜂唬琛ㄤ簲涓暟瀛楋紝鏁板瓧鐨勫彇鍊艱寖鍥村拰鍚箟濡備笅:
銆€銆€鍒嗛挓銆€(0-59)
銆€銆€灝忔檪銆€(0-23)
銆€銆€鏃ユ湡銆€(1-31)
銆€銆€鏈堜喚銆€(1-12)
銆€銆€鏄熸湡銆€(0-6)//0浠h〃鏄熸湡澶?/p>
銆€銆€闄や簡鏁板瓧榪樻湁鍑犱釜涓壒孌婄殑絎﹀彿灝辨槸"*"銆?/"鍜?-"銆?,"錛?浠h〃鎵€鏈夌殑鍙栧€艱寖鍥村唴鐨勬暟瀛楋紝"/"浠h〃姣忕殑鎰忔€?"*/5"琛ㄧず姣?涓崟浣嶏紝"-"浠h〃浠庢煇涓暟瀛楀埌鏌愪釜鏁板瓧,","鍒嗗紑鍑犱釜紱繪暎鐨勬暟瀛椼€備互涓嬩婦鍑犱釜渚嬪瓙璇存槑闂:
銆€銆€姣忓ぉ鏃╀笂6鐐?/p>
銆€銆€0 6 * * * echo "Good morning." >> /tmp/test.txt //娉ㄦ剰鍗曠函echo錛屼粠灞忓箷涓婄湅涓嶅埌浠諱綍杈撳嚭錛屽洜涓篶ron鎶婁換浣曡緭鍑洪兘email鍒皉oot鐨勪俊綆變簡銆?/p>
銆€銆€姣忎袱涓皬鏃?/p>
銆€銆€0 */2 * * * echo "Have a break now." >> /tmp/test.txt
銆€銆€鏅氫笂11鐐瑰埌鏃╀笂8鐐逛箣闂存瘡涓や釜灝忔椂錛屾棭涓婂叓鐐?/p>
銆€銆€0 23-7/2錛? * * * echo "Have a good dream:)" >> /tmp/test.txt
銆€銆€姣忎釜鏈堢殑4鍙峰拰姣忎釜紺兼嫓鐨勭ぜ鎷滀竴鍒扮ぜ鎷滀笁鐨勬棭涓?1鐐?/p>
銆€銆€0 11 4 * 1-3 command line
銆€銆€1鏈?鏃ユ棭涓?鐐?/p>
銆€銆€0 4 1 1 * command line
姣忔緙栬緫瀹屾煇涓敤鎴風殑cron璁劇疆鍚庯紝cron鑷姩鍦?var/spool/cron涓嬬敓鎴愪竴涓笌姝ょ敤鎴峰悓鍚嶇殑鏂囦歡錛屾鐢ㄦ埛鐨刢ron淇℃伅閮借褰曞湪榪欎釜 鏂囦歡涓紝榪欎釜鏂囦歡鏄笉鍙互鐩存帴緙栬緫鐨勶紝鍙彲浠ョ敤crontab -e 鏉ョ紪杈戙€俢ron鍚姩鍚庢瘡榪囦竴浠介挓璇諱竴嬈¤繖涓枃浠訛紝媯€鏌ユ槸鍚﹁鎵ц閲岄潰鐨勫懡浠ゃ€傚洜姝ゆ鏂囦歡淇敼鍚庝笉闇€瑕侀噸鏂板惎鍔╟ron鏈嶅姟銆?/p>
銆€銆€2.緙栬緫/etc/crontab 鏂囦歡閰嶇疆cron
cron鏈嶅姟姣忓垎閽熶笉浠呰璇諱竴嬈?var/spool/cron鍐呯殑鎵€鏈夋枃浠訛紝榪橀渶瑕佽涓€嬈?etc/crontab,鍥犳鎴戜滑閰嶇疆榪欎釜鏂囦歡涔熻兘榪愮敤 cron鏈嶅姟鍋氫竴浜涗簨鎯呫€傜敤crontab閰嶇疆鏄拡瀵規煇涓敤鎴風殑錛岃€岀紪杈?etc/crontab鏄拡瀵圭郴緇熺殑浠誨姟銆傛鏂囦歡鐨勬枃浠舵牸寮忔槸:
銆€銆€SHELL=/bin/bash
銆€銆€PATH=/sbin:/bin:/usr/sbin:/usr/bin
銆€銆€MAILTO=root //濡傛灉鍑虹幇閿欒錛屾垨鑰呮湁鏁版嵁杈撳嚭錛屾暟鎹綔涓洪偖浠跺彂緇欒繖涓笎鍙?/p>
銆€銆€HOME=/ //浣跨敤鑰呰繍琛岀殑璺緞,榪欓噷鏄牴鐩綍
銆€銆€# run-parts
銆€銆€01 * * * * root run-parts /etc/cron.hourly //姣忓皬鏃舵墽琛?etc/cron.hourly鍐呯殑鑴氭湰
銆€銆€02 4 * * * root run-parts /etc/cron.daily //姣忓ぉ鎵ц/etc/cron.daily鍐呯殑鑴氭湰
銆€銆€22 4 * * 0 root run-parts /etc/cron.weekly //姣忔槦鏈熸墽琛?etc/cron.weekly鍐呯殑鑴氭湰
銆€銆€42 4 1 * * root run-parts /etc/cron.monthly //姣忔湀鍘繪墽琛?etc/cron.monthly鍐呯殑鑴氭湰
銆€銆€澶у娉ㄦ剰"run-parts"榪欎釜鍙傛暟浜嗭紝濡傛灉鍘繪帀榪欎釜鍙傛暟鐨勮瘽錛屽悗闈㈠氨鍙互鍐欒榪愯鐨勬煇涓剼鏈悕錛岃€屼笉鏄枃浠跺す鍚嶄簡銆?/p>