centos weblogic(centos镜像)

今天给各位分享centos weblogic的知识,其中也会对centos镜像进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

centos tomcat7 jvm 默认值是多少

我的服务器的配置:

# OS specific support.$var _must_ be set to either true or false.

JAVA_OPTS="-Xms1024m-Xmx4096m-Xss1024K-XX:PermSize=512m-XX:MaxPermSize=2048m"

正文:

常见的内存溢出有以下两种:

java.lang.OutOfMemoryError: PermGen space

java.lang.OutOfMemoryError: Java heap space

---------------------------------------------------------

这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。

一、java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,

这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,

它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对

PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,

这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar,其大小

超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:手动设置MaxPermSize大小

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar文档重复占用内存的目的。

二、java.lang.OutOfMemoryError: Java heap space

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,

其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn-Xms-Xmx等选项可

进行设置。Heap size的大小是Young Generation和Tenured Generaion之和。

提示:在JVM中如果98%的时间是用于GC且可用的Heap size不足2%的时候将抛出此异常信息。

提示:Heap Size最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

解决方法:手动设置Heap size

----------------------------------------------------------

Linux下修改JVM内存大小:

要添加在tomcat的bin下catalina.sh里,位置cygwin=false前。注意引号要带上,红色的为新添加的.

# OS specific support.$var _must_ be set to either true or false.

JAVA_OPTS="-Xms256m-Xmx512m-Xss1024K-XX:PermSize=128m-XX:MaxPermSize=256m"

cygwin=false

windows下修改JVM内存大小:

情况一:解压版本的Tomcat,要通过startup.bat启动tomcat才能加载配置

要添加在tomcat的bin下catalina.bat里

rem Guess CATALINA_HOME if not defined

set CURRENT_DIR=%cd%后面添加,红色的为新添加的.

set JAVA_OPTS=-Xms256m-Xmx512m-XX:PermSize=128M-XX:MaxNewSize=256m-XX:MaxPermSize=256m-Djava.awt.headless=true

情况二:安装版的Tomcat下没有catalina.bat

windows服务执行的是bin/tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.

修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Tomcat Service Manager/Tomcat5/Parameters/JavaOptions

原值为

-Dcatalina.home="C:/ApacheGroup/Tomcat 5.0"

-Djava.endorsed.dirs="C:/ApacheGroup/Tomcat 5.0/common/endorsed"

-Xrs

加入-Xms300m-Xmx350m

重起tomcat服务,设置生效

---------------------------------------------------------

各参数的比例:

Xmx与PermSize的和不可超过JVM可获得的总内存

PermSize不可大于Xmx

================

如何设置Tomcat的JVM虚拟机内存大小

可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。

参数

描述

-Xms

JVM初始化堆的大小

-Xmx

JVM堆的最大值

这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置:

JAVA_OPTS='-Xms【初始化内存大小】-Xmx【可以使用的最大内存】'

需要把这个两个参数值调大。例如:

JAVA_OPTS='-Xms256m-Xmx512m'

表示初始化内存为256MB,可以使用的最大内存为512MB。

另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现。

如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80%作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

Tomcat 5常用优化和配置

1、JDK内存优化:

Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

JAVA_OPTS='-Xms[初始化内存大小]-Xmx[可以使用的最大内存]

一般说来,你应该使用物理内存的 80%作为堆大小。

2、连接器优化:

在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:

maxThreads:

Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值150。

acceptCount:

指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。

minSpareThreads:

Tomcat初始化时创建的线程数。默认值25。

maxSpareThreads:

一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值75。

enableLookups:

是否反查域名,默认值为true。为了提高处理能力,应设置为false

connnectionTimeout:

网络连接超时,默认值60000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

maxKeepAliveRequests:

保持请求数量,默认值100。

bufferSize:

输入流缓冲大小,默认值2048 bytes。

compression:

压缩传输,取值on/off/force,默认值off。

其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于*作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

3、tomcat中如何禁止和允许列目录下的文件

在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:

<servlet>

...

< init-param>

< param-name>listings</param-name>

< param-value>false</param-value>

</init-param>

...

</servlet>

4、tomcat中如何禁止和允许主机或IP地址访问

<Host name="localhost"...>

...

< Valve className="org.apache.catalina.valves.RemoteHostValve"

allow="*.mycompany.com,www.yourcompany.com"/>

< Valve className="org.apache.catalina.valves.RemoteAddrValve"

deny="192.168.1.*"/>

...

</Host>

服务器的配置

JAVA_OPTS='-server-Xms512m-Xmx768m-XX:NewSize=128m-XX:MaxNewSize=192m-XX:SurvivorRatio=8'

Tomcat9.0

j2ee服务器有哪些

众所周知,J2EE应用服务器百花齐放,种类众多。那么J2EE应用服务器有哪些?又有哪些功能呢?一起来看看吧!

从功能实现上划分:

有实现完整J2EE规范(fullprofile)的Weblogic,WebSphere,GlassFish

有实现web应用规范(webprofile)的TomEE,JBoss/WildFly

有基本的Servlet及Jsp规范的Web容器(WebContainer)Tomcat,Jetty,Resin

回顾过去的2015年,各应用服务器市场占有率各有千秋。

下图为各个应用服务器使用率饼图

我们看到,在众多J2EE应用服务器中,Tomcat使用率达到58.66%,稳坐第一。

相较2014年,Tomcat使用率大幅增长,增长将近19%。

整体而言,Tomcat做为Servlet和Jsp规范的参考实现(Referenceimplementation,简称RI),一般都会在第一时间实现规范的新特性并通过Oracle的CTS测试认证。目前最新的Tomcat9.0,虽还是alpha版,但已经实现了Servlet4.0草案,感兴趣的朋友,可以下载尝鲜哦!

Tomcat是一个实现了JAVAEE标准的最小的WEB服务器,是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。因为Tomcat技术先进、性能稳定,而且开源免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:

?

Tomcat是一款非常优秀的JavaWeb服务器,以致于很多开源Java应用服务器(如JOnAS)直接集成它作为servlet容器。

Tomcat的总体结构

Tomcat中主要涉及Server,Service,Engine,Connector,Host,Context组件,之前用过Tomcat的.童鞋是不是觉得这些组件的名称有点似曾相识的赶脚,没赶脚?!您再想想。好吧,不用你想了,我来告诉你吧。其实在Tomcat二进制分发包解压后,在conf目录中有一个server.xml文件,你打开它瞄两眼看看,是不是发现server.xml文件中已经包含了上述的几个名称。

Tomcat集群源码的类图

从图中我们可以看出Tomcat集群包括以下几个方面的内容:

Session:Session分为StandardSession与ClusterSession两种,后者用于Session复制。

SessionManager:有用于集群Session管理的ClusterSession,也有用于对Session进行一般日常管理的,如PersistentManager,BackupManager,SimpleTcpReplicationManager。

组通迅框架:SessionManager调用组通讯框架进行Session的传输,Tomcat采用的组通

讯框架是tribe,目前tribe已被独立为开放的apache工程。

Cluster:方便集群管理而派生出的逻辑概念,可将实际物理机划分为一个Cluster,也可将一台物理机上不同端口的实例划分为一个Cluster,它有一个简单的实现类SimpleTcpCluster。

1.1Session

服务器集群通常操纵两种session:

1.Stickysessions:尽量让同一个客户请求由同一台服务器来处理,这样stickysessions就是存在于单机服务器中接受客户端请求的session,它不需要进行Session复制,如果这个单机失败的话,用户必须重新登录网站。

2.Replicatedsessions:在一台服务器中的session状态被复制到集群的其他服务器上,无论何时,只要session改变了,session数据都要重新全部或部分(依据复制策略)被复制到其他服务器上。

Tomcat支持以下三种session持久性类型:

1.内存复制:在JVM内存中复制session状态,使用Tomcat自带的SimpleTcpCluster和SimpleTcpClusterManager类。

2.数据库持久性:在这种类型中,session状态保存在一个关系数据库中,服务器使用org.apache.catalina.session.JDBCManager类从数据库中获取Session信息。

3.基于文件的持久性:这里使用类org.apache.catalina.session.FileManager把session状态保存到一个文件系统。

SessionManager

Tomcat通过org.apache.catalina.Manager来管理Session,Manager接口总是和ContextContainer相关联。它主要负责session的建立、更新和销毁。该接口中一些重要的方法有:

用户在Servlet中通过javax.servlet.http.HttpServletRequest接口的getSession方法获得Session,而该接口的实现位于org.apache.catalina.connector.Request类中的doGetSession方法中,在该方法中通过org.apache.catalina.Manager来获得Session,doGetSession方法的部分代码如下:

组通讯框架--Tribe

组通讯框架Tribe在Tomcat中的位置可如下图

如图所示,Tribe的核心主要是Channel类,由此看出,它采用NIO进行Socket通讯,运用

了组播,事件、心跳检测等技术,下面我们来着重看看代码中Tomcat是如何与Tribe衍接首先在SimpleTcpReplication类中的实现Manager接口的start方法中:

Cluster

Cluster用于管理集群中的Session复制,它有一个简单的实现类SimpleTcpCluster。

在CentOS7上安装Tomcat9的方法教程

CentOS是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。接下来是我为大家收集的在CentOS7上安装Tomcat9的方法教程,希望能帮到大家。

在CentOS7上安装Tomcat9的方法教程

1通过SecureCRT连接到阿里云CentOS7服务器;

2进入到目录/usr/local/中:

cd/usr/local/

3创建目录/usr/local/tools,如果有则忽略:

mkdir-ptools

4创建/usr/local/tomcat目录,如果已存在则忽略:

mkdir-ptomcat

5进入到目录/usr/local/tools中:

cdtools/

6下载apache-tomcat-9.0.0.M4.tar.gz文件:

wget

7解压缩apache-tomcat-9.0.0.M4.tar.gz:

tar-zxvfapache-tomcat-9.0.0.M4.tar.gz

8将通过解压得到的apache-tomcat-9.0.0.M4文件复制到/usr/local/tomcat目录中:

mvapache-tomcat-9.0.0.M4../tomcat/

9打开文件/etc目录下的profile文件:

vim/etc/profile

将如下代码追加到profile文件末尾:

#idea-tomcat9configstart-2016-05-01

CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4

CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.0.M4

PATH=$PATH:$CATALINA_BASE/bin

exportPATHCATALINA_BASE

#idea-tomcat9configend-2016-05-01

保持并推出:wq!

10修改tomcat的端口号和字符编码:

进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/conf目录中:

cd../tomcat/apache-tomcat-9.0.0.M4/conf

打开tomcat服务的配置文件server.xml:

viserver.xml

找到如下代码:

将其中的8080改成HTTP协议的默认端口80,改后的代码如下:

11增加manager-gui图形化管理界面的访问权限(不需要的话,此步骤可忽略):

打开tomcat的用户配置文件tomcat-users.xml:

vitomcat-users.xml

在标签前加入如下代码:

这里设置的username和password都是password,角色为manager-gui;

键入Esc并输入“:wq!”保持并退出;

12进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin目录中:

cd../bin/

13打开vicatalina.sh文件:

在#OSspecificsupport.前面加入如下代码:

JAVA_HOME=/usr/local/jdk/jdk1.8.0_91

JRE_HOME=$JAVA_HOME/jre

键入Esc并输入“:wq!”保持并退出;

14启动tomcat服务:

./startup.sh

打印如下信息则表明启动Tomcat服务成功:

UsingCATALINA_BASE:/usr/local/tomcat/apache-tomcat-9.0.0.M4

UsingCATALINA_HOME:/usr/local/tomcat/apache-tomcat-9.0.0.M4

UsingCATALINA_TMPDIR:/usr/local/tomcat/apache-tomcat-9.0.0.M4/temp

UsingJRE_HOME:/usr/local/jdk/jdk1.8.0_91/jre

UsingCLASSPATH:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/tomcat-juli.jar

Tomcatstarted.

打开浏览器输入IP地址看看吧!如果出现了我们的可爱的“小黄猫”则表明我们的Tomcat已提供服务啦!

15关闭tomcat服务:

./shutdown.sh

打印如下信息则表明关闭Tomcat服务成功:

UsingCATALINA_BASE:/usr/local/tomcat/apache-tomcat-9.0.0.M4

UsingCATALINA_HOME:/usr/local/tomcat/apache-tomcat-9.0.0.M4

UsingCATALINA_TMPDIR:/usr/local/tomcat/apache-tomcat-9.0.0.M4/temp

UsingJRE_HOME:/usr/local/jdk/jdk1.8.0_91/jre

UsingCLASSPATH:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/tomcat-juli.jar

注意:不可连续执行多次./shutdown.sh命令,多次后报如下错误:

SEVERE:Catalina.stop:

java.net.ConnectException:Connectionrefused

atjava.net.PlainSocketImpl.socketConnect(NativeMethod)

atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

atjava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

atjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

atjava.net.Socket.connect(Socket.java:589)

atjava.net.Socket.connect(Socket.java:538)

atjava.net.Socket.(Socket.java:434)

atjava.net.Socket.(Socket.java:211)

atorg.apache.catalina.startup.Catalina.stopServer(Catalina.java:476)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:498)

atorg.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:408)

atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497)

16将tomcat9加入到系统服务列表中:

进入到/etc/init.d目录中:

cd/etc/init.d

创建tomcat9服务配置文件:

vitomcat9

将如下代码加入写入到tomcat9配置文件中:

#idea-tomcatconfigstart-2016-05-01

#!/bin/bash

#description:TomcatStartStopRestart

#processname:tomcat

#chkconfig:23452080

JAVA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4/

exportJAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

exportPATH

CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4/

case$1in

start)

sh$CATALINA_HOME/bin/startup.sh

;;

stop)

sh$CATALINA_HOME/bin/shutdown.sh

;;

restart)

sh$CATALINA_HOME/bin/shutdown.sh

sh$CATALINA_HOME/bin/startup.sh

;;

esac

exit0

#chmod755tomcat

#chkconfig--addtomcat

#chkconfig--level2345tomcaton

#chkconfig--listtomcat

#idea-tomcatconfigend-2016-05-01

键入Esc并输入“:wq!”保持并退出;

其中的注意点是将JAVA_HOME和CATALINA_HOME变量设置成与我们当前配置相一致的路径;

17为tomcat9分配可执行权限:

chmod+xtomcat9

18将tomcat9纳入到系统的服务列表中,即添加tomcat9为系统服务:

chkconfig--addtomcat9

19查看当前系统服务都有哪些:

chkconfig--list

也可以查看指定的系统服务,如这里我们指定tomcat9这个服务:

chkconfig--listtomcat9

打印如下信息:

tomcat90:off1:off2:on3:on4:on5:on6:off

则表明已将tomcat9设置为系统服务,2、3、4、5都为on表示可随系统自动启动;

20我们可以在任意目录下执行关闭、启动、重启Tomcat9服务啦:

20.1关闭tomcat9服务:

servicetomcat9stop

20.2启动tomcat9服务:

servicetomcat9start

20.3重启tomcat9服务:

servicetomcat9restart

后记:

linux系统中的/etc目录表示“设备”,意为与硬件设备相关的信息;

/etc/init.d目录下的文件表示当前设备的初始化配置信息;

命令chkconfig表示添加(--add)、删除(--del)、查看(--list)系统服务;

看了“在CentOS7上安装Tomcat9的方法教程”还想看:

1.CentOS7安装配置图文教程

2.在CentOS7中配置NIC绑定教程

3.CentOS7设置网络自动启动教程

4.Tomcat7.0的安装与配置

5.centos7快速启动应用程序教程

如何在CentOS7上安装Tomcat9

1通过SecureCRT连接到阿里云CentOS7服务器;

2进入到目录/usr/local/中:

cd/usr/local/

3创建目录/usr/local/tools,如果有则忽略:

mkdir-ptools

4创建/usr/local/tomcat目录,如果已存在则忽略:

mkdir-ptomcat

5进入到目录/usr/local/tools中:

cdtools/

6下载apache-tomcat-9.0.0.M4.tar.gz文件:

wget

7解压缩apache-tomcat-9.0.0.M4.tar.gz:

tar-zxvfapache-tomcat-9.0.0.M4.tar.gz

8将通过解压得到的apache-tomcat-9.0.0.M4文件复制到/usr/local/tomcat目录中:

mvapache-tomcat-9.0.0.M4../tomcat/

9打开文件/etc目录下的profile文件:

vim/etc/profile

将如下代码追加到profile文件末尾:

#idea-tomcat9configstart-2016-05-01

CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4

CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.0.M4

PATH=$PATH:$CATALINA_BASE/bin

exportPATHCATALINA_BASE

#idea-tomcat9configend-2016-05-01

保持并推出:wq!

10修改tomcat的端口号和字符编码:

进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/conf目录中:

cd../tomcat/apache-tomcat-9.0.0.M4/conf

打开tomcat服务的配置文件server.xml:

viserver.xml

找到如下代码:

将其中的8080改成HTTP协议的默认端口80,改后的代码如下:

11增加manager-gui图形化管理界面的访问权限(不需要的话,此步骤可忽略):

打开tomcat的用户配置文件tomcat-users.xml:

vitomcat-users.xml

在标签前加入如下代码:

这里设置的username和password都是password,角色为manager-gui;

键入Esc并输入“:wq!”保持并退出;

12进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin目录中:

cd../bin/

13打开vicatalina.sh文件:

在#OSspecificsupport.前面加入如下代码:

CentOS下如何实行计划任务CentOS下实行计划任务的方法

今天在一个项目里面,遇到一个故障:系统在做基于Weblogic的OA系统压力测试中,并发的连接数非常的少(大大低于正常数),系统是采用红旗的DC 4.1 for安腾2版本,使用apache做web服务转发。

后来经过一系列的检查,最后发现原来是之前连续两天的压力测试,导致摆放日志的/var目录20G的空间都给占满了;导致新的日志需要不断的覆盖旧日志,磁盘的读写频繁,导致IO占用过大,所以并发连接数不能满足要求。清空日志文件即可。

考虑到今后可能也会出现类似的问题(当然,现实中不可能几天就达到测试的结果),所以希望使用定时删除日志的方法。这里就考虑到需要使用linux的计划任务,也叫例行性命令。

1、循环执行的计划任务

linux下面有atd和crond两种计划任务,其中,atd服务使用的at命令只能执行一次,而crond服务使用的crontab定义的命令,是循环作用的,所以crond才符合我们的要求。

crontab支持两种状态:一、直接编写计划任务;二、使用目录的方式,放在目录里面的都会定时执行。

2、可以使用的用户

默认情况下,系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过下面两个文件限制权限:

引用

◆/etc/cron.allow:

将可以使用 crontab的账号写入其中,若不在这个档案内的使用者则不能使用 crontab;

◆/etc/cron.deny:

将不可以使用 crontab的账号写入其中,若未记录到这个档案当中的使用者,就可以使用 crontab。

※类似TCPWrapper定义的方式。

3、直接使用crontab编辑计划任务:

命令:

crontab [-u username] [-l|-e|-r]

参数:

-u:通过-u帮其它使用者建立/移除 crontab;

-e:编辑 crontab的内容

-l:查看 crontab的内容

-r:移除 crontab的所有内容(是全部的内容,如果只是删除某个,用-e编辑即可)

内容格式:

*****命令

前面的五个*号,表示分、时、日、月、周,如:

代表意义分钟小时日期月份周

数字范围 0-59 0-23 1-31 1-12 0-7

*号代表任何时间都接受的意思,任意。

*号之间用空格分开,如果是一段范围,用-号连接;如果是隔开几个时间,用,号表示。

另外,命令必须是编写计划任务的用户有权限执行的,并且最后用绝对路径。

例如:

#crontab-e

59 23 1 5* mail linuxing/home/test.txt

每在5月1日,23点59分就把/home/test.txt的内容作为邮件发给linuxing用户

*/5****/opt/test.sh

每5分钟就执行一次/opt/test.sh脚本

0 3,6***/usr/local/bin/test.sh

每在3点和6点整点都执行/usr/local/bin/test.sh命令

0 8-12***/root/backup.sh

8点到 12点之间的每小时的0分都执行/root/backup.sh

4、基于目录的方式执行计划任务

对于系统的计划任务,已经在/etc/crontab里面定义,采用的就是基于目录的方式。系统会定时读取该文件,并根据里面的定义执行命令。

可以使用vi直接编写/etc/crontab文件,其中格式如下:

#cat/etc/crontab

SHELL=/bin/bash#使用的shell

PATH=/sbin:/bin:/usr/sbin:/usr/bin#预定义的PATH路径

MAILTO=root#出现问题发Email给该用户

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#每个月1号

分时日月周执行者身份命令

可以看到前面的五个参数的定义和直接编辑计划任务是一样的,增加了执行的用户定义和run-parts参数。

run-parts后面跟的是目录名称,例如:/etc/cron.hourly,表示每小时01分就到/etc/cron.hourly目录中执行目录下的所有可执行文件;当然,目录是可以自己定义的。

如果你需要增加系统的计划任务,只需要在对应的目录添加执行文件即可,例如:我需要在每天都执行updatedb的操作,则我只需要把/usr/bin/updatedb的执行命令链接到/etc/cron.daily目录就可以了。

※同样的,如果不需要使用目录的方式,也可以使用如下的方式:

02 01*** root/root/test.sh

也就是没有了run-parts,后面就直接跟命令的绝对路径

5、注意事项

◆如果使用crontab编辑计划任务或直接修改/etc/crontab文件后,计划任务没有生效,可能需要重启一下crond服务:service crond restart

◆当编写/etc/crontab文件的时候,不要漏了指定执行计划任务的用户,这是和直接用crontab-e编辑不同的。

◆某用户(如root)用crontab-e编辑的计划任务存放在/var/spool/cron/root,这个文件下。但最好不要直接编辑他,因为crond执行的时候,会在/tmp目录中建立需要的临时文件,直接编辑会对此有影响,甚至出错。

◆cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。

阅读剩余
THE END