nginx日志按天切割!binbashLOGDIRusrlocalnginxlogsYESTERDAYTIME(datedyesterdayF)LOGMONTHDIRLOGDIR(dateYm)LOGFILELISTdefault。access。logforLOGFILEinLOGFILELIST;do〔!dLOGMONTHDIR〕mkdirpLOGMONTHDIRmvLOGDIRLOGFILELOGMONTHDIR{LOGFILE}{YESTERDAYTIME}donekillUSR1(catusrlocalnginxnginx。pid)nginxacc日志分析!binbash日志格式:remoteaddrremoteuser〔timelocal〕requeststatusbodybytessenthttprefererhttpuseragenthttpxforwardedforLOGFILE1echo统计访问最多的10个IPawk{a〔1〕}END{printUV:,length(a);for(vina)printv,a〔v〕}LOGFILEsortk2nrhead10echoecho统计时间段访问最多的IPawk4〔01Dec2018:13:20:254〔27Nov2018:16:20:49{a〔1〕}END{for(vina)printv,a〔v〕}LOGFILEsortk2nrhead10echoecho统计访问最多的10个页面awk{a〔7〕}END{printPV:,length(a);for(vina){if(a〔v〕10)printv,a〔v〕}}LOGFILEsortk2nrechoecho统计访问页面状态码数量awk{a〔79〕}END{for(vina){if(a〔v〕5)printv,a〔v〕}}服务器初始化binbash设置时区并同步时间lnsusrsharezoneinfoAsiaShanghaietclocaltimeif!then(echo1ntpdatetime。windows。comdevnull21;crontabl)crontabfi禁用selinuxsediSELINUX{spermissivedisabled}etcselinuxconfig关闭防火墙ifegrep7。〔09〕thensystemctlstopfirewalldsystemctldisablefirewalldelifegrep6。〔09〕thenserviceiptablesstopchkconfigiptablesofffi历史命令显示操作时间if!grepHISTTIMEFORMATthenechoexportHISTTIMEFORMATFTwhoamietcbashrcfiSSH超时时间if!grepTMOUT600thenechoexportTMOUT600etcprofilefi禁止root远程登录sedisPermitRootLoginyesPermitRootLoginnoetcsshsshdconfig禁止定时任务向发送邮件sedisMAILTOrootMAILTOetccrontab设置最大打开文件数if!grepsoftnofile65535etcsecuritylimits。thencatetcsecuritylimits。confEOFsoftnofile65535hardnofile65535EOFfi系统内核优化catetcsysctl。confEOFnet。ipv4。tcpsyncookies1net。ipv4。tcpmaxtwbuckets20480net。ipv4。tcpmaxsynbacklog20480net。core。netdevmaxbacklog262144net。ipv4。tcpfintimeout20EOF减少SWAP使用echo0procsysvmswappiness安装系统性能分析工具及其他yuminstallgccmakeautoconfvimsysstatnettoolsiostatif查看网卡实时流量!binbashNIC1echoeInOdoOLDIN(awk0NIC{print2}procnetdev)OLDOUT(awk0NIC{print10}procnetdev)sleep1NEWIN(awk0NIC{print2}procnetdev)NEWOUT(awk0NIC{print10}procnetdev)IN(printf。1fs(((NEWINOLDIN)1024))KBs)OUT(printf。1fs(((NEWOUTOLDOUT)1024))KBs)echoINOUTsleep1donemysql备份!binbashDATE(dateFHMS)HOSTlocalhostUSERbackupPASSpasswdBACKUPDIRdatadbbackupDBLIST(mysqlhHOSTuUSERpPASS2devnullegrepvDatabaseinformationschemamysqlperformanceschemasys)forDBinDBLIST;doBACKUPDBDIRBACKUPDIR{DB}{DATE}〔!dBACKUPDBDIR〕mkdirpBACKUPDBDIRdevnullTABLELIST(mysqlhHOSTuUSERpPASSseuseDB;2devnull)forTABLEinTABLELIST;doBACKUPNAMEBACKUPDBDIR{TABLE}。sqlif!mysqldumphHOSTuUSERpPASSDBTABLEBACKUPNAME2thenechoBACKUPNAME备份失败!fidonedone监控服务器磁盘利用率!binbashHOSTINFOhost。info主机列表,实现采集多台主机信息,需要能够ssh到目标主机forIPin(awk〔〕{print1}HOSTINFO);doUSER(awkvipIPip1{print2}HOSTINFO)PORT(awkvipIPip1{print3}HOSTINFO)TMPFILEtmpdisk。tmpsshpPORTUSERIPdfhTMPFILEUSERATELIST(awkBEGIN{OFS}dev{printNF,int(5)}TMPFILE)forUSERATEinUSERATELIST;doPARTNAME{USERATE}USERATE{USERATE}if〔USERATEge80〕;thenechoWarning:PARTNAMEPartitionusageUSERATE!fidonedone封禁大量恶意访问的IP!binbashDATE(datedbY:H:M)LOGFILEusrlocalnginxlogsaccess。logABNORMALIP(tailn10000LOGFILEgrepDATEawk{a〔1〕}END{for(iina)if(a〔i〕10)printi})forIPinABNORMALIP;doif〔(iptablesvnLgrepcIP)eq0〕;theniptablesIINPUTsIPjDROPecho(dateFT)IPtmpdropip。logfidone统计进程数,找出并kill僵尸进程!binbashALLPROCESS(1sproclegrep〔09〕)runningcount0stopedcount0s1eepingcount0zombiecountOforpidin{ALLPROCESS〔〕}dotestfprocpidstatusstate(egrepstateprocpidstatusawk{print2})casestateinR)runningcount((runningcount1));T)stopedcount((stopedcount1));;s)sleepingcount((sleepingcount1));z)zombiecount((zombiecount1))echopidzombie。txtkill9;esacdoneechoetotal:((runningcountstopedcountsleepingcountzombiecount))running:runningcountstoped:stopedcountsleeping:sleepingcountzombie:zombiecount