标签 系统管理 下的文章

chroot用法和安装脚本

chroot是操作系统级的“虚拟机”,其功能是切换程序运行时的根目录,将程序限制在指定的根目录中,从而隔离应用程序。在chroot中运行的程序实际上使用的是真实系统的内核和资源,所以性能不会有损耗。
其好处主要有:

  • 增强主机安全性

在chroot中的程序不会访问到真实的系统文件,如真实系统的passwd等文件,和Windows下的沙箱类似,尤其适合对高风险的应用,如web等

  • 独立的程序运行环境

运行在chroot中的程序使用的是chroot中的资源,不会使用主机提供的库文件等。要想在程序能在chroot中运行,就要解决依赖关系,所以用chroot还可以把程序“绿色化”,配置好的chroot环境,打包好丢到其它服务器直接就可以运行。这一特性也方便了运维和开发。

  • 限制资源访问

可以限制chroot环境中用户能使用的命令,例如:如果不想用户使用passwd命令,不要把passwd命令放到chroot环境中就行了。出与安全考虑运行在chroot中的程序建议给最小权限。

所需条件:

  1. 相同的内核,linux和*BSD是不同的
  2. chroot需要root权限
  3. 一个可运行的shell

建立一个最小的chroot环境:
chroot目录是/opt/chroot,在其下面建立一个bin目录,存放shell,这里用默认的bash

mkdir  -p /opt/chroot/bin  

拷贝bash二进制文件:


cp /bin/bash /opt/chroot/bin 

解决bash的依赖关系:

ldd /bin/bash
linux-vdso.so.1 => (0x00007fffd95ff000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f82a7b54000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f82a7950000)
libc.so.6 => /lib64/libc.so.6 (0x00007f82a75bb000)
/lib64/ld-linux-x86-64.so.2 (0x00007f82a7d7e000)

整理一下格式:

ldd /opt/chroot/bin/bash|grep -o "/\(\usr\|lib\).[^ \ ]*"
/lib64/libtinfo.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2

所有依赖的库文件都在/lib64下,在/opt/chroot目录下建立lib64目录,并将依赖的库拷贝进去:

cp $(ldd /opt/chroot/bin/bash | grep lib64 | sed -sre 's/(.+)(\/lib64\/\S+).+/\2/g') /opt/chroot/lib64/

运行chroot:

chroot /opt/chroot 

格式:


 chroot chroot目录 shell

这样就进入了chroot环境,这时只能使用pwd、cd这类bash内置的命令,没有ls、mkdir这类系统的命令,想运行哪个命令用相同的方式加入chroot环境。退出chroot环境直接exit即可。

对于简单的系统命令或软件可以这样配置,如果是nginx、python这类依赖非常复杂的软件,不建议这样做。我的做法是在centos下安装一个centos的base系统到chroot目录,大概有300多兆,在配置好环境后并精简掉没用的软件。精简要比解决依赖关系容易多了,做好这个后可以打包拿到其它linux内核的系统上使用。

直接上脚本:`

#!/bin/sh
#
# Build a chroot with a CentOS 6.6 base install.
#

CHROOT=/tmp/chroot

mkdir -p $CHROOT/var/lib/rpm
rpm --rebuilddb --root=$CHROOT

wget http://mirror.centos.org/centos/6.6/os/x86_64/Packages/centos-release-6-6.el6.centos.12.2.x86_64.rpm
rpm -i --root=$CHROOT --nodeps centos-release-6-6.*.rpm

yum --installroot=$CHROOT install -y rpm-build yum

mkdir -p $CHROOT/proc
mount --bind /proc $CHROOT/proc

mkdir -p $CHROOT/dev
mount --bind /dev $CHROOT/dev

mkdir -p $CHROOT/etc
cp /etc/resolv.conf $CHROOT/etc/resolv.conf

mkdir -p $CHROOT/root
cp $CHROOT/etc/skel/.??* $CHROOT/root

rm -rf centos-release-6-6.*.rpm


参考文章:

http://www.cyberciti.biz/faq/howto-run-nginx-in-a-chroot-jail/
https://wiki.archlinux.org/index.php/Nginx

openldap安装及常用配置

openLDAP是LDAP(轻量目录访问协议)在linux系统上的实现,和windows下的AD域是一回事,主要是用来构建集中的身份验证系统,提供高效的查找和管理信息服务,可以减少管理成本并保持数据一致性。

服务器环境:centos 6.6 64位

一、配置OpenLDAP Server

1.安装

服务器端所需的软件:

  1. openldap 包含配置文件、库、文档等
  2. openldap-server slapd服务器
  3. openldap-client 客户端程序
  4. openldap-devel 开发套件,供第三方程序调用

yum自带的源里就有了,直接yum安装:

yum install -y openldap openldap-servers openldap-clients openldap-devel

2.配置slapd

有两个文件要复制:slapd的配置文件和数据库文件,将openldap-servers自带的example复制到相应目录:


cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap.ldap /etc/openldap
chown -R ldap.ldap /var/lib/ldap

使用slappasswd创建LDAP管理员密码,这个命令不会直接将密码写入配置,运行slappasswd后输入两次密码,会返回一串密文,复制下这个密文。

编辑/etc/openldap/slapd.conf,找到”database bdb“,按照自己的需求更改下面的:

suffix "dc=52os,dc=net"
rootdn "cn=admin,dc=52os,dc=net"  //管理员为admin
rootpw {SSHA}QeLa25YmQt3csWI2eWcrXbtylxpq5FQ0 //复制的管理员的密码,也支持明文

测试并生成配置文件:

rm -rf /etc/openldap/slapd.d/*   //删除原文件
service slapd start              //生成bdb文件
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d  //生成配置文件
chown -R ldap:ldap /etc/openldap/slapd.d

配置完成重启服务:

service slapd restart
chkconfig slapd on       //设置开机自启动

经过上面的配置后,openldap server就配置好了。
查看LDAP数据库结构:

ldapsearch -x -H ldap://127.0.0.1 -b 'dc=52os,dc=net'

会返回类似:

# extended LDIF
# LDAPv3
# base <dc=52os,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
# search result
search: 2
result: 32 No such object
# numResponses: 1

3.配置并迁移系统用户

配置好的LDAP数据库是空的,需要将系统上的用户导入到LDAP数据库中。需要用migrationtools将系统用户转换为LDAP能识别的ldif文件。

先新建一个test用户作为测试用户:

useradd test
echo "pwdpwd" |passwd --stdin test

安装migrationtools:


yum install migrationtools

配置migrationtools:

编辑/usr/share/migrationtools/migrate_common.ph ,按需更改下面两行:

$DEFAULT_MAIL_DOMAIN = "52os.net";
$DEFAULT_BASE = "dc=52os,dc=net";

生成ldif文件:

  ./migrate_passwd.pl  >/tmp/passwd.ldif
  ./migrate_passwd.pl /etc/passwd  >/tmp/passwd.ldif
  ./migrate_group.pl /etc/group >/tmp/group.ldif
  

如果有需要,也可以编辑passwd.ldif和group.ldif去掉不需要的条目。
将生成的ldif导入到LDAP数据库:

ldapadd -x -D "cn=admin,dc=52os,dc=net" -W -f /tmp/base.ldif 
ldapadd -x -D "cn=admin,dc=52os,dc=net" -W -f /tmp/passwd.ldif 
ldapadd -x -D "cn=admin,dc=52os,dc=net" -W -f /tmp/group.ldif 

需要输入LDAP管理员密码,在用上面的ldapsearch命令就能查看到导入的数据。

二、客户端配置

客户端配置有两种方法:

  1. 使用authconfig-tui ,也就是setup命令中的 "Authentication configuration"
  2. 手动配置

无论哪种方式,都要先安装客户端:

yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap

第一种方法:
在命令行中输入authconfig-tui或者setup命令中选择"Authentication configuration",选中 ”Use LDAP“和“Use LDAP Authentication”,之后点击NEXT,输入服务器地址和“BASE DN”即可。全部图形化添加,非常简单,推荐使用。

第二种方法需要修改文件较多:
编辑/etc/openldap/ldap.conf,加入:

URI ldap://10.11.15.78/   //LDAP服务器地址
BASE dc=52os,dc=net
TLS_CACERTDIR /etc/openldap/cacerts

编辑/etc/nslcd.conf,加入:


uri ldap://10.11.15.78/
base dc=52os,dc=net
ssl no
tls_cacertdir /etc/openldap/cacerts

系统命名服务(NSS)配置使用LDAP,编辑 /etc/nsswitch.conf,修改如下几项为:

passwd:     files ldap
shadow:     files ldap
group:      files ldap
netgroup:   files ldap
automount:  files ldap

编辑/etc/pam.d/system-auth,修改如下几项为:

auth        sufficient    pam_ldap.so use_first_pass
account     required      pam_unix.so broken_shadow
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
password    sufficient    pam_ldap.so use_authtok
session     required      pam_unix.so
session     optional      pam_ldap.so  #这一行要加在pam_unix.so下面
session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0022 #自动创建用户的宿主目录

编辑/etc/sysconfig/authconfig:

USELDAPAUTH=yes
USELDAP=yes

修改好之后启动nslcd服务,并设置开机启动

service nslcd start  && chkconfig nslcd on

验证:
test用户只有在ldap server上有,在客户端如果也能查看到,就说明设置成功:


id test 

或者使用:

getent passwd |grep test

这时就能用test账号登录客户端了。

三、其它设置:

1.日志配置

openLDAP默认是不打日志的,要配合rsyslog才能打日志。
在/etc/openldap/slapd.conf 中设置日志级别,加入:

loglevel 1

具体的loglevel解释,可以:

man slapd.conf

在/etc/rsyslog.conf最后加入:

local4.*  /var/log/slapd.log

重启rsyslog和slapd:


service rsyslog restart
service slapd restart

2.sudo管理

在openldap的服务器端拷贝sudo schema到openldap配置目录

cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema

加载sudo schema,在/etc/openldap/slapd.conf  添加:

include         /etc/openldap/schema/sudo.schema

重新生产配置文件:

rm -rf /etc/openldap/slapd.d/*
sudo -u ldap slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
service slapd restart

新建一个sudo.ldif文件,内容为:

dn: ou=Sudoers,dc=52os,dc=net
objectClass: top
objectClass: organizationalUnit
ou: Sudoers

dn: cn=defaults,ou=Sudoers,dc=52os,dc=net
objectClass: top
objectClass: sudoRole
cn: defaults
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoOption: requiretty

dn: cn=test,ou=Sudoers,dc=52os,dc=net
objectClass: top
objectClass: sudoRole
cn: test
sudoCommand: ALL
sudoHost: ALL
sudoOption: !authenticate
sudoRunAsUser: ALL
sudoUser: test 

上面的内容按实际情况更改,注意每行最后不要有空格,ldif里的大小写不敏感。我允许sudo的用户是test,允许使用全部命令,允许所有主机sudo
导入sudo.ldif记录:

ldapadd -x -D "cn=admin,dc=52os,dc=net" -W -f sudo.ldif

设置客户端:
在/etc/sudo-ldap.conf中加入:

uri ldap://10.11.15.78
sudoers_base ou=Sudoers,dc=52os,dc=net

在/etc/nsswitch.conf中加入:

Sudoers: files ldap

在客户端用切换到test用户,测试一下sudo是否可用

3.用户目录自动挂载

使用Openldap的好处就是在服务器端建好一个用户后,各个客户端去服务器端验证,不需要在创建该用户。验证通过后会在客户端/home目录下创建该用户的宿主目录,虽然是同一用户,但目前的配置来说,每个客户端和服务器之间宿主目录是独立的,并没有共享服务器端的宿主目录。举例来说,我在服务器端的宿主目录中上传了一份代码,如果客户端共享服务器的宿主目录,当用户在任意一个客户端登录时,都会看到服务器上宿主目录的代码,管理起来就十分方便了。

配置用户目录共享,需要在服务器端安装nfs,在客户端安装autofs。
安装并启动nfs:


yum install nfs-utils
service rpcbind start
service nfslock start
service nfs start

启动好后用chkconfig加入开机启动。
编辑/etc/exports文件,加入:


/home  *(rw,sync)  

要注意用户需在nfs服务器/home下有宿主目录,否则autofs无法挂载。"*"可以写成具体的ip或ip段,设置好后重启nfs服务,测试并查看:

showmount -e localhost

服务器端的nfs配置完成。
客户端要安装autofs和nfs-utils,但nfs服务不用启动:

yum install nfs-utils autofs

配置autofs,在/etc/auto.master最后加入:

/home    /etc/auto.nfs

新建一个/etc/auto.nfs文件,内容为:

*   -fstype=nfs                      10.11.15.78:/home/&

启动autofs:

service autofs start

su - test测试是否正常切换,在用mount命令查看挂载:

10.11.15.78:/home/test on /home/test type nfs (rw,vers=4,addr=10.11.15.78,clientaddr=10.11.15.79)

说明挂载成功了,客户端的用户目录和服务器端的用户目录内容就能正常同步了

其它的一些设置,用到在写。
1.安全设置主要有两点:1.启用TLS加密 2.关闭匿名查询
2.主备高可用配置
3.web管理工具:phpldapadmin和LDAP Account Manager

四、一些问题

1.用户不能建立宿主目录
提示 “could not chdir to home directory /home/user: No such file or directory”
解决方法:
在 /etc/pam.d/password-auth 和/etc/pam.d/system-auth 都要加入:

session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0022

2.导入ldif文件时报错
ldap_bind: Invalid credentials (49)
这种情况是管理员密码错误或者rootdn信息错误

3.配置autofs后,切换su - test 报错

Creating directory '/home/test'.
Unable to create and initialize directory '/home/test'.
su: warning: cannot change directory to /home/test: No such file or directory

这是由于nfs服务器上/home下没有test用户的宿主目录造成的,且权限要正确,否则autofs无法挂载目录,用户也无法在客户端登录。

参考文章:
http://www.zhukun.net/archives/7548
http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%85%8D%E7%BD%AE.html
http://www.ibm.com/developerworks/cn/linux/l-openldap/

windows 下修改路由表

在Windows下修改路由表的命令和linux是一样的,都是route命令,用法感觉相似,但不太一样.
1.查看路由表

route print   

默认会在最上面显示所有网络接口,下面打印所有路由表,显示会比较多,可以用 “ -4 ”只显示ipv4的路由,当然也可以用“ -6” 来显示ipv6的路由:

route print  -4  打印tcp/ip v4 的路由表 

print 后面还可以接通配符 “ * ”

route print 192*    显示192开头的路由

也可以用 netstat -nr 来查看路由表和route print是一样的。
2.添加路由

route add 10.11.11.0 mask 255.255.255.0  10.11.15.1

这样是临时添加重启就会消失,如果要永久添加要加 “ -p ”参数

route -p add  10.11.11.0 mask 255.255.255.0  10.11.15.1

windows的配置都是保存在注册表中的,永久路由的保存位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes

3.删除路由

route delete 10.11.11.0

也可以写上掩码或者用通配符:

route delete 192.168.88.0 mask 255.255.255.0
route delete 192.*

4.修改路由:

route change 192.168.1.1 mask 255.255.255.0 127.56.0.1  
route change 192.168.1.1 mask 255.255.255.0 127.56.0.1  metric 2 if 2

change 参数只支持修改网关和优先级。

参考文章:
http://www.yongfa365.com/Item/Route-Table-Windows-Command.html
http://blog.sina.com.cn/s/blog_8a7012cf01014yz4.html

使用sc命令手动添加删除服务

在管理Windows服务器时,有些程序在安装时并没有添加到服务里,在任务管理器里无法像服务一样方便的启动/停止/重启等操作,设置开机启动也比较麻烦,这时就可以用系统自带的sc命令来手动将程序添加到服务中。
添加服务:

sc create forward_8080 binpath= "D:\bin\forward.exe -d"

注意sc命令的所有等号后面都要加一个空格,这里是binpath的“=”和后面的路径要加一个空格。

设置成开机启动:

sc config forward_8080 start= auto

一样在等号后面要加个空格。
也可以写在一起:

sc create forward_8080 binpath= "D:\bin\forward.exe -d" start= auto

启动/停止/查询状态:

sc start forward_8080
sc stop  forward_8080
sc query forward_8080

删除服务:

sc delete forward_8080

添加详细描述信息:

sc  description forward_8080  "tcp  forword to backend server,port 8080,backend server x.x.x.x"

更改服务显示名:

sc config forward_8080 displayname= TCP_8080

命令很强大,还有很多其它参数,看命令自带帮助就行了,用法很简单。

参考文章:
http://support2.microsoft.com/kb/251192/zh-cn

linux下查看硬件和驱动状态

一直以为在linux下没有像“windows设备管理器”这样直观查看硬件状态和驱动情况的软件,直到给新手提装显卡驱动时,发现了一个叫lshw 的命令。lshw(Hardware Lister)是一个能查看机器详细硬件信息的小软件,它能准确的报告硬件的内存信息、固件版本、主板配置、缓存信息、总线速度等等,支持linux2.4+、powerPC、x86架构的机器(以上简介来自官网,英文烂翻译可能不准)。

在维护硬件时可以用lspci查看哪些硬件连接到了电脑,更详细的信息就可以用lshw来查看,安装就不说了,常见的系统包管理里都有,不常见的还可以源码编译。直接在命令行下敲lshw,就会输出所有的信息。
如果哪个硬件没有驱动,lshw输出时会有UNCLAIMED这类的字样。例子就不给了,输出内容太多了。

lshw参数:

 -help 查看帮助
 -version  打印版本
 -X GUI显示,要装lshw-gtk 或者lshw-gui

输出的格式
-html          以HTML格式输出
-xml           以XML 格式输出
-short         显示设备列表,输出包括设备路径(path)、类别(class)以及简单描述
-businfo       输出包括总线信息、SCSI、USB、IDE、PCI地址等信息

选项:
-class CLASS    显示指定类别的设备
-C CLASS        同上
-c CLASS        同上
-disable TEST   不检测信息 像 pci 、isapnp、 cpuid等等
-enable TEST    与上面相反,启用检测   
-quiet          直接输出结果,不显示检测过程
-sanitize       无害输出 (会移除像硬件序列号等一些敏感信息)
-numeric        显示硬件id (PCI、USB等)

参考文章:
http://blog.chinaunix.net/uid-10697776-id-3080243.html
http://jiajun.iteye.com/blog/656709

centos安装setuptool

redhat/centos最小化安装时保证了系统的干净高效,很多软件包都没有安装,setup这个常用命令就是其中之一。

yum install setup

提示已经安装了setup包。但是setup一下却提示命令没有找到。其实setup命令的包叫setuptool,而不是setup

安装setuptool

yum install setuptool

不过这时在setup里只有Authentication configuration一项可用,一般我们装以几个就可以了:


yum install authconfig #这个就是Authentication configuration,安装setuptool后会自动安装这个的
yum install ntsysv   #系统服务管理 
yum install system-config-securitylevel-tui  #防火墙设置
yum install system-config-network-tui   #网络设置
yum install system-config-keyboard  #设置键盘

centos 6 下基本就这几个包,没有其它与setup命令有关的了
centos 5 下还有这么两个:

yum install system-config-display  #设置x windows
yum install system-config-date     #设置时区

网上有教程说使用:

yum install system-config* 

来安装与setup有关的包,这里我不建议这么做,试一下就知道这样做会安装两百多个包,而实际上和setup命令有关的还是上面那几个。

iperf测试带宽

iperf是开源的跨平台网络带宽测试工具,支持windows、linux、macos、bsd等众多系统。可以测试带宽吞吐量、延迟、丢包等;支持使用TCP和UDP测试,结果比较准。由于是C/S架构,使用时需要在测试宽带的两端分别运行一个装有iperf的电脑,我是测试连接两个机房的专线,直接拿机房里的Linux服务器测试。
iperf有两个版本,一个是iperf2和iperf3,建议使用iperf3,iperf2比较老,对10G网卡测试速度上不来。两个版本用法基本上是一样的,我这里是测试百兆的带宽,以ipser2来做演示
一、安装

yum install iperf iperf3   #需要安装epel源

二、测试
无论是tcp还是udp方式测试,都要一端运行服务器模式,另一端运行客户端模式,另外如果开了iptables,要打开tcp 5001端口,当然也可以指定端口。
1.tcp方式
服务器端:

iperf -s

客户端:

iperf -c SERVERIP -t 60 -i 1

在实际测试中(100M MPLS专线),使用tcp方式测试带宽经常跑不满,联系供应商后得到回复说是因为“TCP窗口大小”导致的。iperf也有一个“-w”参数可以调整TCP窗口大小值,但是无论改TCP窗口大小设置成多少,就是跑不满带宽。我猜测是因为单线程的tcp的传输效率有限,所以无论tcp窗口设置成多大,也不可能跑满全部带宽。在内网环境使用iperf测试时,网络条件比较好,多线程和单线程测试结果基本上没有区别。但是在测试专线时,合适的线程数是可以跑满带宽的,设置太大反而速度会下降。

- 阅读剩余部分 -

使用logrotate分割tomcat日志

日志是Linux系统中最重要的部分之一,通过日志可以知道系统中正在发生什么或者发生过什么,极大的方便了系统管理,常见的linux发行版中都自带了logrotate程序来管理系统日志,当然logrotate也可以用来管理软件日志。使用logrotate有以下几点好处:
1.大多数系统自带,不用安装
2.配置简单,功能很强大
3.可靠性高

我生产上就是用Logrotate来管理tomcat日志,由于生产环境上tomcat比较忙碌,每天的日志都十几G,已经到了不得不分割的程度。配置方法:

首先要配置tomcat日志的分割,然后通过指定日志分割时间。

一、配置tomcat的日志分割

在logrotate配置目录 /etc/logrotate.d/ 下新建一个名为tomcat的文件,内容为:

/opt/tomcat-7.0/logs/catalina.out{
rotate 2
copytruncate
nocompress
notifempty
missingok
nomail
noolddir 
daily
dateext
}

这里参数的详细说明附在最后。

二、指定分割时间

由于logrotate是基于cronjob执行的,默认cronjob daily的定时任务执行时间是4:02分(centos 5系列),我们是要每天的日志转储成一个新文件,而不是两天的日志混在一起,所以还要修改一下cron daily的执行时间:
centos 5 系列cronjob daily执行时间是在/etc/crontab文件中配置。

59 23 * * * root run-parts /etc/cron.daily

注意时间是在每天23:59分执行,这里转储后的文件名中的日期才是正确的.

centos 6 系列daily、monthly等文件夹里面的任务已经不用crond处理,而是交给anacron处理,执行时间有延迟时间不是固定的,要自定义这些定时任务的执行时间有三种方法:

1.关闭anacron,使用crond管理daily等任务的时间

yum remove cronie-anacron
yum install cronie-noanacron

之后加上:

01 * * * * root run-parts /etc/cron.hourly
59 23 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

这样就和centos 5系列一样,可以通过修改/etc/crontab来控制定时任务执行时间了

2.编辑/etc/anacrontab文件
首先要设置RANDOM_DELAY=0和START_HOURS_RANGE=0-0,这样可以设置为每天零点执行,在将cron.daily设置成

1       0      cron.daily              nice run-parts /etc/cron.daily

看了一下anacron说明和anacrontab文件的格式,觉得这种方法可行,但是我没有测试,如果想用这种方法,请务必先测试。

3.将tomcat 文件放在其它目录,这样每天执行cron.daily时就不会分割,然后添加定时任务来分割

59 23 * * * root run-parts /usr/sbin/logrotate /root/tomcat

三、logrotate参数说明

参数名称    含义
compress                 通过gzip 压缩转储以后的日志
nocompress                 不压缩转储
copytruncate             打开中的日志转储
copytruncate            打开中的日志转储
nocopytruncate                备份日志文件,但是不截断
nocreate                    不建立新日志
delaycompress            延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress            转储并压缩
errors address            转储时错误信息发送指定地址
ifempty                    文件为空也转储
notifempty                    如果文件为空,不转储
mail address            发送转储日志到指定邮箱
nomail                    转储不发邮件
olddir directory            转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                    转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript            在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript    在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily                    按天存储
weekly                    按周存储
monthly                    按月存储
rotate count            日志转存保留的前多少份,多余的会被删除
tabootext [+] list        让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size            当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB
extension            指定转存日志后缀名,例如 .log
dateformat            设置日志文件名日期格式默认为 %Y%m%d

参考文章:
http://blog.jikr.cn/logrotate-cut-the-web-logs/
http://abdussamad.com/archives/390-Scheduling-system-maintenance-cron-jobs-in-CentOSRHEL-6.x.html

最新文章

最近回复

  • 大青蛙子: 照着大佬的命令行复刻...
  • see: 把虚拟机平台下面其他...
  • see: 感觉是兼容性问题,我...
  • see: 做了。因为inter...
  • see: 遇到一个ipv6问题...
  • pluveto: 这功能很好
  • mgt: 从fail2ban的...
  • see: 设置容器 allo...
  • see: 本例子中的上游是 d...
  • see: 嗯 加上这个测试可以了

分类

归档

统计

  • 文章总数:168篇
  • 分类总数:5个
  • 评论总数:127条
  • 页面总数:172个
  • 本站运行:4958天

其它