分类存档: 系统管理 - 第5页

服务器配置

我们安装的操作系统是CentOS 5.1, 最新版本是CentOS5.2, 服务器环境是Nginx+5.2FastCGI方式

首先看一下需要的配置类库,由于我们使用的是ZendFramework + PEAR, 我们先看一下Zendframework所需要 PHP 内建支持的扩展,其中不是每一个被 使用的扩展都要应用在程序中。 使用方式“依赖”表示当扩展不可用时,组件或者类也不可使用。 使用方式“可选”表示当扩展不可用时,组件或者类自动使用代替方案。

我们使用yum的自动类库更新(yum简介):

sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-libs krb5-devel libidn libidn-devel openssl openssl-devel

下载其他软件

mkdir -p /home/software
cd /home/software
#6.35(最新的stable版本)
wget http://sysoev.ru/nginx/nginx-0.6.35.tar.gz
#获得PHP的最新版本
wget http://www.php.net/get/php-5.2.8.tar.gz/from/this/mirror
wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mirrors.24-7-solutions.net/pub/mysql/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz
wget http://download.suhosin.org/suhosin-patch-5.2.8-0.9.6.3.patch.gz
wget http://pecl.php.net/get/memcache-2.2.4.tgz
wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
wget http://downloads.sourceforge.net/phpxmlrpc/xmlrpc-2.2.1.tar.gz
wget ftp://ftp.gnu.org/gnu/gettext/gettext-0.17.tar.gz
wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
wget http://downloads.sourceforge.net/pspell/pspell-.12.2.tar.gz

本文主要参考Nginx+PHP5.2配置指南,并根据版本的更新对部分函数版本号做了一定修改

tar zxvf libiconv-1.12.tar.gz
cd libiconv-1.12/
./configure –prefix=/usr/local
make
make install
cd ../
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure –enable-ltdl-install
make
make install
cd ../../

tar zxvf mhash-0.9.9.tar.gz
cd mhash-0.9.9/
./configure
make
make install
cd ../

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

tar zxvf mcrypt-2.6.7.tar.gz
cd mcrypt-2.6.7/
/sbin/ldconfig
./configure
make
make install
cd ../

tar -xvzf gettext-0.17.tar.gz
cd gettext-0.17
./configure
make
make install

tar -xvzf gd-2.0.35.tar.gz
cd gd-2.0.35
./configure
make
make install

2、编译安装MySQL 5.1.30

以下为编译方法,由于编译时间很长,推荐二进制下载(AMD64格式),二进制文件安装指南

/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.1.30.tar.gz
cd mysql-5.1.30/
./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile  --disable-shared (如果内存较大可以用--with-innodb)

make && make install
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf
cd ../

附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下两步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。
①、以mysql用户帐号的身份建立数据表:
/usr/local/mysql/bin/mysql_install_db --datadir=/usr/local/data --user=mysql
②、启动MySQL(最后的&表示在后台运行)
/bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql &
启动后修改密码
#删除匿名用户
shell> mysql -u root
mysql> DROP USER '';
mysql> DROP USER ''@'localhost';
#为root设置密码
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
或者
/usr/local/mysql/bin/mysqladmin -u root password 'new-password
/usr/local/mysql/bin/mysqladmin -u root -h hostname password 'new-password
#在/etc/my.cnf中增加以下两行
[mysqld]
datadir = /usr/local/mysql/data
log-error = error.log

拷贝编译目录的一个脚本,设置开机自动启动

#测试
shell>support-files/mysql.server start
shell>support-files/mysql.server stop
#设置
shell>cp support-files/mysql.server /etc/init.d/mysqld
shell>chmod +x /etc/init.d/mysqld
shell>chkconfig --add mysqld
shell>chkconfig --level 345 mysqld on

启动mysqld服务
shell>service mysqld start

编译PHP
tar zxvf php-5.2.8.tar.gz
#patch fpm
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
#安装php安全增强选项
gzip -d suhosin-patch-5.2.8-0.9.6.3.patch.gz
cd php-5.2.8/
patch -p1 -i ../suhosin-patch-5.2.8-0.9.6.3.patch
./configure --prefix=/usr/local/ --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql  --enable-bcmath --enable-dom --enable-calendar --with-bz2 --with-zlib --with-iconv-dir=/usr/local --with-gettext --enable-mbstring --enable-mbregex --with-mime-magic --with-freetype-dir --with-jpeg-dir --with-png-dir --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-safe-mode --with-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --with-mcrypt --with-mhash --with-gd --enable-gd-native-ttf --with-ttf --with-openssl --with-kerberos --enable-sockets --enable-suhosin
make ZEND_EXTRA_LIBS='-liconv'
make install

#按需要安装Zend Optimizer
Zend官方网站下载相应CPU的版本,解压后运行./install.sh(如果你是通过远程终端安装,则运行./install-tty)按照屏幕提示操作即可。
#安装PHP扩展Extensions:
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/bin/phpize
./configure –with-php-config=/usr/local/bin/php-config –with-pdo-mysql=/usr/local/mysql
make
make install
cd ../

tar jxvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3/
/usr/local/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/local/bin/php-config
make
make install
cd ../

tar xvzf memcache-2.2.4.tar.gz
cd memcache-2.2.4
/usr/local/bin/phpize
./configure –with-php-config=/usr/local/bin/php-config
make
make install
cd ../

修改php.ini文件

查找/etc/php.ini中的extension_dir = “./”
修改为extension_dir =”/usr/local/lib/php/extensions/no-debug-non-zts-20060613/”
并在此行后增加以下几行,然后保存:
extension = “memcache.so”
extension = “pdo_mysql.so”

再查找output_buffering = Off
修改为output_buffering = On

配置eAccelerator加速PHP, 参考eAccelerator对php加速性能评估
mkdir -p /usr/local/webserver/eaccelerator_cache
vi /etc/php.ini
跳到配置文件的最末尾,加上以下配置信息:
[eaccelerator]
zend_extension=”/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”
eaccelerator.shm_size=”1″
eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”3600″
eaccelerator.shm_prune_period=”3600″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
eaccelerator.keys = “disk_only”
eaccelerator.sessions = “disk_only”
eaccelerator.content = “disk_only”

如果内存较大,可以用以下设置:
[eaccelerator]
zend_extension=”/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”
eaccelerator.shm_size=”128″
eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”300″
eaccelerator.shm_prune_period=”120″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
修改配置文件:
vi /etc/sysctl.conf
输入以下内容:
kernel.shmmax = 134217728
然后执行以下命令使配置生效:
/sbin/sysctl -p

创建Web目录

mkdir /app
chown -R nobody:nobody /app
chmod +w /app

创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
vi /usr/local/etc/php-fpm.conf 将配置替换为php-fpm的配置

注意php-fpm配置中的rlimit_files如果和ulimit -n现实的结果不符合,会导致出现rlimit_nofile的问题。启动php-cgi进程,监听127.0.0.1的9000端口,进程数为200(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
ulimit -SHn 51200
/usr/local/sbin/php-fpm start

php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload

安装Nginx

tar zxvf pcre-7.8.tar.gz
cd pcre-7.8/
./configure
make && make install
cd ../

安装nginx

tar xvzf nginx-0.6.35.tgz
cd nginx-0.6.35
./configure –user=nobody –group=nobody –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-http_perl_module –with-cc-opt=’-O2′
make;make install

配置nginx

mkdir /var/log/nginx
chmod +w /var/log/nginx
chown -R nobody:nobody /var/log/nginx

vi /usr/local/nginx/conf/nginx.conf
配置文件可参考这份nginx基本配置文件,注意需要修改log的默认格式,以便awstats分析

vi /usr/local/nginx/conf/fastcgiparam, 添加这行:
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

启动Nginx
ulimit -SHn 51200
/usr/local/nginx/sbin/nginx
配置开机自动启动Nginx + PHP
vi /etc/rc.local添加
ulimit -SHn 51200
/usr/local/sbin/php-fpm start
/usr/local/nginx/sbin/nginx

优化系统

vi /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000

使设置生效:/sbin/sysctl -p

修改记录:
2009/02/3
修改php编译过程中的 makefile 处理iconv编译问题,将以下处理改为本文现在的处理方式
./buildconf -force
./configure后
sed -i ‘s#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#’ Makefile
make

2009/03/05
nginx更新为 0.6.35
修正libmcrypt的硬拷贝问题

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

防火墙简单设置

使用iptables:

IPtables是Linux系统核心之一,我们使用的操作系统是CentOS,安装后默认只打开了22端口,下面举例说明如何用iptables打开的80端口:

    vi /etc/sysconfig/iptables

添加 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3001 -j ACCEPT

    /sbin/service iptables restart 重新启动服务

检查结果 /sbin/iptables -L -n

    Iptables指南

安装和使用APF

APF, Advanced Policy Firewall,是 Rf-x Networks 出品的Linux下比较流行的软件防火墙。它是iptables的一个界面脚本 。

下载安装APF
wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz

  tar -xzvf apf-current.tar.gz

  cd apf-版本

  ./install.sh

配置APF

  vi /etc/apf/conf.apf
  
  将 USE_DS=”0″ 更改为 USE_DS=”1″ ;把 USE_AD=”0″更改为 USE_AD=”1″ 。
  
  配置端口,cPanel下的推荐:
  
  cPanel
  IG_TCP_CPORTS=”20,21,22,25,26,53,80,110,143,443,465,993,995,2082,2083,2086,2087,2095,2096″
  IG_UDP_CPORTS=”21,53,873″
  
  EGF=”1″
  EG_TCP_CPORTS=”21,22,25,26,27,37,43,53,80,110,113,443,465,873,2089″
  EG_UDP_CPORTS=”20,21,37,53,873″

配置完成后保存退出,并启动APF防火墙:

  /usr/local/sbin/apf -s

  请注意,此时防火墙是运行在调试模式,每五分钟重洗配置。这样能避免因为错误的配置而使服务器瘫痪。

  确保配置无误后,再次进入配置文件(vi /etc/apf/conf.apf),将 DEVM=”1″ 更改为 DEVM=”0″ 。这样APF就会运行在常规模式下。

  重启APF(/usr/local/sbin/apf -s)。

  注意事项:如果你的Linux内核将iptables直接编译而非模块模式的话,请将配置文件中的 MONOKERN=”0″ 更改为 MONOKERN=”1″ 。

使用APF防止DDOS攻击

      配置目录在(/etc/apf/ad)。其日志文件保存在/var/log/apfados_log。

  下面我们将配置APF使其遇到DoS后发送电子邮件给管理员。

  打开配置文件:

  vi /etc/apf/ad/conf.antidos
  查找 [E-Mail Alerts] 。

  CONAME=”Your Company” 填写网站或公司名称。

  将 USR_ALERT=”0″ 更改为 USR_ALERT=”0″ ,从而使系统发送电子邮件。

  USR=”your@email.com” 填写电子邮件地址。

  保存并退出,重启APF(/usr/local/sbin/apf -r)。

设置系统重启后自动打开APF

  让系统每次重新启动后自动运行APF:  chkconfig –level 2345 apf on

  关闭自动启动:  chkconfig –del apf

APF所有选项

Option: Change: Description:
DEVM Yes When set to “1″, a 5 minute cronjob is set that will flush the firewall.When first configuring your firewall, leave this as enabled(“1″), and when you are sure everything is set up properly, set this to disabled(“0″).
FWPATH Rarely Path of firewall installationRarely do you have to change this value.
IF Sometimes Network interface to firewall.If the network interface you wish to firewall is not on ‘eth0′, then you will have to change this to the correct interface.
MONOKERN Rarely Support Monolithic kernel builds [no LKM's]You should change this value if iptables is not compiled as a module. (If you have iptables installed, and APF complains about iptables without setting up the firewall)
TCP_STOP Rarely How to handle TCP packet filteringYou should leave this value as “DROP”
UDP_STOP Rarely How to handle UDP packet filteringYou should leave this value as “DROP”
DSTOP Rarely How to handle all other packet filteringYou should leave this value as “DROP”
ICMP_LIM Rarely Packet/time ratio for ICMP packets before dropping packets.If there is a chance that host may legitimately ping you more frequently then you may need to change this value. This option reduces the amount of traffic being sent out if someone attacks you through ICMP.
BLK_MCATNET Yes Block multicastingUnless you need multicasting, you should set this to enable(“1″), just in case.
BLK_PRVNET Yes Block all private ipv4 addressesUnless the server resides behind a firewall with NAT, you should enable(“1″) this. Setting this option to enable reduces the chance of spoof attacks.
BLK_RESNET Sometimes Block all ipv4 address space marked reserved for future useThere is a chance that some of the address space listed may become live ips, so either enable(“1″), and make sure your ‘/etc/apf/internals/ reserved.networks’ file is up to date, or just leave it disabled(“0″).
USE_DS Sometimes Use DShield.org’s “block” list of top networks that have exhibited suspicious activityThis top list is a list of the top 20 attacking class C subnets over a 3 day period. It is safe to enable(“1″) this option. If you are interested in seeing this list, you can find it here: http://feeds.dshield.org/block.txt
USE_AD Sometimes Import our ad.rules ban list generated by antidosThis essentially enables the antidos section of the APF firewall, and requires you to modify the ‘/etc/apf/ad/conf.antidos’ file.
CDPORTS Sometimes Common drop ports; these ports do not get logged
Ingress (inbound)
IG_TCP_CPORTS Yes Common ingress (inbound) TCP portsThe default value for this is 22 (SSH Port). You may want to add (seperated by a comma ‘,’):
- FTP port (21)
- DNS (53)
- HTTP port (80)
- HTTP SSL port (443)
- SMTP (25) SSL (465)
- POP (110) SSL (995)
- IMAP (143) SSL (993)
- CPANEL (2082) SSL (2083)
- WHM (2086) SSL (2087)
- CPANEL WebMail (2095) SSL (2096)
- for FTP connections (6000_7000)
(to indicate a range, you indicate with a ‘_’ character. ie: 6000_7000)For a more complete list of ports and services located on them, check your ‘/etc/services’ file.
IG_UDP_CPORTS Yes Common ingress (inbound) UDP portsThe default value for this is nothing. You may want to add (seperated by a comma ‘,’):
- FTP data port (20)
- FTP (21)
- DNS (53)
(to indicate a range, you indicate with a ‘_’ character. ie: 6000_7000)For a more complete list of ports and services located on them, check your ‘/etc/services’ file.
IG_ICMP_CPORTS Sometimes Common ICMP (inbound) typesThe default value should be enough, but if you want to block certain ICMP types, look at the ‘/etc/apf/internals/icmp.types’ file to find out what each code means.
Egress (outbound)
EGF Sometimes Egress filtering [0 = Disabled / 1 = Enabled]If you wish to enable Egress filtering, set this to enabled(1). If you set this to disabled, skip the whole Egress section. Egress filtering will block all outgoing ports, so the server will only be able to connect outwards on the ports provided in the next variables.
EG_TCP_CPORTS Sometimes Common egress (outbound) TCP portsThe FAQ section in the Cpanel website suggests the following ports:
21, 25, 26, 37, 43, 53, 80, 113, 465, 873, 2089, 3306(873 and 2089 are supposidely used for the cpanel update script)For a more complete list of ports and services located on them, check your ‘/etc/services’ file.
EG_UDP_CPORTS Sometimes Common egress (outbound) UDP portsThe FAQ section in the Cpanel website suggests the following ports:
20, 21, 53, 465, 873(873 is supposidely used for the cpanel update script)For a more complete list of ports and services located on them, check your ‘/etc/services’ file.
EG_ICMP_CPORTS Sometimes Common ICMP (outbound) typesThe default value should be enough, but if you want to block certain ICMP types, look at the ‘/etc/apf/internals/icmp.types’ file to find out what each code means.
Log paths and control settings
IPTLOG Rarely Status log pathThe location and file name of the log file to be used.
DROP_LOG Rarely Log TCP/UDP DROP chains [required for antidos]. Data logged to kernel logThe default value of enabled(“1″) should be good for most situations, unless you do not want your kernel log file to get clogged with this type of data. Remeber, this is required to be enabled if you enable antidos.
LRATE Rarely Max firewall events to log per/minute. Log events exceeding these limits will be lost!The default value should be sufficent. Altering this value may alter the efficency of the antidos.
VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Nginx下zend framework的设置

在Linux环境下增加一段虚拟服务器的设置,设置nginx.conf如下

   server {
        listen 80;
        server_name audit.local;
        root /app/audit/public;
        access_log  /app/audit/logs/audit.access.log main;
        error_log   /app/audit/logs/audit.error.log;
        location / {
            index  index.;
        # If file not found, redirect to Zend handling, we can remove the (if) here and go directly rewrite
            if (!-f $request_filename){
                rewrite ^/(.+)$ /index.php?$1& last;
            }
        }
        location ~* ^.+\.(js|ico|gif|jpg|jpeg|pdf|png|css)$ {
          access_log   off;
          expires      7d;
        }
        location ~ .*\.php?$ {
            fastcgi_pass   127.0.0.1:36;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        error_page  404             http://audit.local/error;
   }

你也可以参考apache下zend framework的设置

VN:F [1.9.14_1148]
Rating: 1.0/10 (1 vote cast)
VN:F [1.9.14_1148]
Rating: +1 (from 1 vote)

mysql的备份

  1. 使用mysqldump

  2. mysqldump -u root -p your-new-password databasename [tablename] > db.sql

    比较大的表需要用优化的dump以节省内存:
    mysqldump --opt database > backup-file.sql

    mysqldump支持下列选项:

    –add-locks
    在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
    –add-drop-table
    在每个create语句之前增加一个drop table。
    –allow-keywords
    允许创建是关键词的列名字。这由在列名前面加表名的方法做到。
    -c, –complete-insert
    使用完整的insert语句(用列名字)。
    -C, –compress
    如果客户和服务器均支持压缩,压缩两者间所有的信息。
    –delayed
    用INSERT DELAYED命令插入行。
    -e, –extended-insert
    使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
    -#, –debug[=option_string]
    跟踪程序的使用(为了调试)。
    –help
    显示一条帮助消息并且退出。
    –fields-terminated-by=…
    –fields-enclosed-by=…
    –fields-optionally-enclosed-by=…
    –fields-escaped-by=…
    –fields-terminated-by=…
    这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
    LOAD DATA INFILE语法。
    -F, –flush-logs
    在开始导出前,洗掉在MySQL服务器中的日志文件。
    -f, –force,
    即使我们在一个表导出期间得到一个SQL错误,继续。
    -h, –host=..
    从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
    -l, –lock-tables.
    为开始导出锁定所有表。
    -t, –no-create-info
    不写入表创建信息(CREATE TABLE语句)
    -d, –no-data
    不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
    –opt
    同–quick –add-drop-table –add-locks –extended-insert –lock-tables。
    应该给你为读入一个MySQL服务器的尽可能最快的导出。
    -pyour_pass, –password[=your_pass]
    与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
    -P port_num, –port=port_num
    与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
    -q, –quick
    不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
    -S /path/to/socket, –socket=/path/to/socket
    与localhost连接时(它是缺省主机)使用的套接字文件。
    -T, –tab=path-to-some-directory
    对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和–lines–xxx选项来定。
    -u user_name, –user=user_name
    与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
    -O var=option, –set-variable var=option
    设置一个变量的值。可能的变量被列在下面。
    -v, –verbose
    冗长模式。打印出程序所做的更多的信息。
    -V, –version
    打印版本信息并且退出。
    -w, –where=’where-condition’
    只导出被选择了的记录;注意引号是强制的!
    “–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″

    最常见的mysqldump使用可能制作整个数据库的一个备份:
    mysqldump --opt database > backup-file.sql

    但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
    mysqldump --opt database | mysql --host=remote-host -C database

    由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
    mysqladmin create target_db_name
    mysql target_db_name < backup-file.sql

  3. 启用二进制日志(binlog)

  4. 采用 binlog 的方法相对来说更灵活,省心省力,而且还可以支持增量备份。

    启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开 my.cnf,加入以下几行:
    server-id = 1
    log-bin = binlog
    log-bin-index = binlog.index

    然后启动 mysqld 就可以了。运行过程中会产生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。关于 binlog 的信息请查看手册。
    需要备份时,可以先执行一下 SQL 语句,让 mysqld 终止对当前 binlog的写入,就可以把文件直接备份,这样的话就能达到增量备份的目的了:
    FLUSH LOGS;
    如果是备份复制系统中的从服务器,还应该备份 master.inforelay-log.info 文件。
    备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看,如:/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001
    该工具允许你显示指定的数据库下的所有 SQL 语句,并且还可以限定时间范围,相当的方便,详细的请查看手册。
    恢复时,可以采用类似以下语句来做到:
    /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name
    mysqlbinlog 输出的 SQL 语句直接作为输入来执行它。
    如果你有空闲的机器,不妨采用这种方式来备份。由于作为 slave 的机器性能要求相对不是那么高,因此成本低,用低成本就能实现增量备份而且还能分担一部分数据查询压力,何乐而不为呢?

  5. 直接备份数据文件

  6. 相较前几种方法,备份数据文件最为直接、快速、方便,缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在靠背文件前,执行以下 SQL 语句:
    FLUSH TABLES WITH READ LOCK;
    也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。
    注意,对于 Innodb 类型表来说,还需要备份其日志文件,即 ib_logfile* 文件。因为当 Innodb 表损坏时,就可以依靠这些日志文件来恢复。

  7. 备份策略

  8. 对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份。

  9. 数据维护和灾难恢复

  10. DBA最重要的工作内容之一是保证数据表能安全、稳定、高速使用。因此,需要定期维护你的数据表。以下 SQL 语句就很有用:
    CHECK TABLE 或 REPAIR TABLE,检查或维护 MyISAM 表
    OPTIMIZE TABLE,优化 MyISAM 表
    ANALYZE TABLE,分析 MyISAM 表

    当然了,上面这些命令起始都可以通过工具 myisamchk 来完成,在这里不作详述。
    Innodb 表则可以通过执行以下语句来整理碎片,提高索引速度:
    ALTER TABLE tbl_name ENGINE = Innodb;
    这其实是一个 NULL 操作,表面上看什么也不做,实际上重新整理碎片了。
    通常使用的 MyISAM 表可以用上面提到的恢复方法来完成。如果是索引坏了,可以用 myisamchk 工具来重建索引。而对于 Innodb 表来说,就没这么直接了,因为它把所有的表都保存在一个表空间了。不过 Innodb 有一个检查机制叫 模糊检查点,只要保存了日志文件,就能根据日志文件来修复错误。可以在 my.cnf 文件中,增加以下参数,让 mysqld 在启动时自动检查日志文件:
    innodb_force_recovery = 4
    关于该参数的信息请查看手册。

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

CentOS上OpenVPN的安装和配置祥解

yum install openvpn
yum install pam*
updatedb
locate openvpn

默认安装好OpenVPN的主配置路径/etc/openvpn/下是空的, 将模版中的easy-rsa的目录复制到/etc/openvpn/的路径下:
[root@VPNSRV01]# cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa/ /etc/openvpn/
编辑/etc/openvpn/easy-rsa/vars,并在最后添加:

     46 export KEY_COUNTRY=CN
     47 export KEY_PROVINCE=Shanghai
     48 export KEY_CITY=Shanghai
     49 export KEY_ORG=”YiXin-
     50 export KEY_EMAIL=”zlei@igncorp.com

保存退出,再运行:
source vars
./clean-all
./build-ca

只需要填写Common Name, 其他全部回车即可,如果这里发觉自己填错的话,执行clean-all脚本,清空keys下刚生成的密钥。然后使用build-ca重新做。如果到后面生成服务器和客户端的证书和密钥的时候想要返工就工作量大了。)

./build-key-server opensvr1
./build-client client1
./build-dh

编辑配置文件/etc/openvpn/server.conf

;local a.b.c.d  (设定监听在本机的哪个网络接口上,这里使用默认注释,表示监听所有本机上的网络接口)
port 1194   (这里设定的监听端口,默认是1194)
proto udp (设定在传输层使用的协议,这里设定为默认的UDP协议)
dev tun(设定传输设备节点。如提示信息,tun是一个三层设备,tap是一个二层设备。而这里我们要的是IP路由,是三层的方式,因此选择tun)
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key? # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
#设定根证书CA、服务器证书、以及服务器密钥文件的位置。注意,这里我都是写上了绝对路径,那是因为我更动了它们的位置。这里也可以直接写文件名而不写绝对路径,表示使用默认路径,默认为/etc/openvpn/下
server 192.168.1.0 255.255.255.0 (设定Server端虚拟出来的VPN网段)
ifconfig-pool-persist ipp.txt(设定虚拟地址租约文件,用于记录某个Client获得的IP地址,类似于dhcpd.lease文件,防止openvpn重新启动后“忘记”Client曾经使用过的IP地址)
push “route 192.168.1.0 255.255.255.0″(设定Push路由。当Client连接Server的时候,自动会得到这些路由条目并添加到它们的路由表中,由于是Server那里传过来的,因此叫Push路由。当Client从Server处断开的时候这些Push路由将自动在Client的路由表中删除。一个需要提醒注意的地方就是既然是加入路由,那么必须要填写的是”route 网段 子网掩码”的格式,如果不是像第三条那样是添加针对某一个主机的路由的话,那么一定要写的是网段!如果要针对一个目的网段的路由,而却写的是主机地址的话,那么这个Push路由将失败)
;push “redirect-gateway”
;push “dhcp-option DNS 10.8.0.1″
;push “dhcp-option WINS 10.8.0.1″
(设定其他的Push信息。redirect-gateway为接入Client重新指定出口网关,如果不设定的话则是使用Server路由表当中的默认出口网关。dhcp-option下的DNS和WIN则是为接入Client重新分配域名服务器和名称服务器的IP地址。除非特殊的规划,一般这里没有设定的必要,保持注释)
;duplicate-cn
(设定是否允许单证书多连接。如果有多个Client使用相同的证书接入Server,亦或Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN。但是如果出于安全考虑,比如一个证书只能由一个Client对应的情况,这里就建议关闭而保留注释)
client-to-client(设定接入的Client之间能够被允许互相访问,默认情况下接入的Client是不能互相访问的。如果需要使它们互相访问的话请去掉默认的注释)
keepalive 10 120(设定保活参数。这里的意思是每10秒钟通过Ping来确定Client是否存活,当然这个Ping的进行是在虚拟通道中而不是在真实外部链路上的,超过120秒无反馈表示丢失该Client)
tls-auth /etc/openvpn/vpnkeys/ta.key 0 # This file is secret
(设定ta密钥的路径。之前提到的HMAC防火墙,防止DOS攻击,对于所有的控制信息,都使用HMAC signature,没有HMAC signature的控制信息不予处理,注意server端后面的数字肯定使用0,client使用1)
comp-lzo(使用Lzo功能对虚拟链路进行压缩。如果Server端开启的话,那么连接它的Client端也要在配置文件中开启)
user nobody
group nobody(设定OpenVPN服务的宿主用户,这里设定nobody。使用vipw来快速查看/etc/passwd文件,可以发现nobody是系统内置的,并且UID和GID分别为99。另外要注意的是,既然将OpenVPN服务的宿主用户设定为nobody,那么凡是关于OpenVPN服务进程相关或者需要读写的文件,请都要赋予nobody权限)
persist-key (设定连接保持密钥功能。在由于keepalive检测超时后而重新启动VPN的情况,不重新读取keys,而保留第一次使用的keys)
persist-tun(设定连接保持在线功能。在由于keepalive检测超时后而重新启动VPN的情况,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup)
status openvpn-status.log (设定状态记录日志路径。状态记录日志会定期把openvpn的一些状态信息写到文件中,以便自己写程序计费或者进行其他操作。注意,如果更改过OpenVPN服务宿主用户的话,请记得这里将此文件赋予宿主用户一定的权限)

log         /var/log/openvpn.log (设定OpenVPN的服务日志路径。注意,如果更改过OpenVPN服务宿主用户的话,请记得这里将此文件赋予宿主用户一定的权限)
log-append  /var/log/openvpn.log (此项和log项配合使用,每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后)
verb 4

启动

chown nobody:nobody openvpn-status.log
chown nobody:nobody /var/log/openvpn.log
/usr/sbin/openvpn –config /usr/local/openvpn/etc/server.conf

检查系统防火墙,是否为VPN开启了。
# iptables -A INPUT -p udp –dport 9988 -j ACCEPT
# iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
检查防火墙
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     udp  –  anywhere             anywhere            udp dpt:9988
ACCEPT     all  –  anywhere             anywhere            state RELATED,ESTABLISHED
4.转发开关是否打开,打开这个路由转发开关
# echo 1 > /proc/sys/net/ipv4/ip_forward
并且顺带将这个命令添加到启动脚本/etc/rc.d/rc.local当中,使得每次系统启动的时候都会打开这个开关

再次启动openvpn

service start openvpn

ifconfig

会看到eth0,lo之外还有个tun0,这个tun0设备就是OpenVPN虚拟出来的网络接口。另外需要提到的一点是,这个设备会被初始化,但是只有在OpenVPN的服务进程成功运行起来的时候才会有这个设备,如果运行OpenVPN进程失败的话,是看不到这个设备的。也所以,当要使用OpenVPN的时候,切记要为它的网络接口开放特定的防火墙,或者干脆关闭防火墙。

查看Server的路由

route

配置客户端

将Server上之前为测试Client生成的证书密钥以及一些相关文件复制到Client端的/etc/openvpn/目录下这里,Client需要向Server得到五个重要的文件
CA证书文件               (我这里是ca.crt)
Client证书文件           (我这里是vpnclnt00.crt)
Client密钥文件            (我这里是vpnclnt00.key) 
Client的SSL证书请求文件  (我这里是vpnclnt00.csr)
ta密钥文件               (我这里是ta.key)
配置Client端的主配置文件
Client上也安装了OpenVPN的包,所以也有模版文件
/usr/share/doc/openvpn-2.0.9/sample-config-files/client.conf
这里将Client的主配置模版文件复制到OpenVPN的主配置路径/etc/openvpn/下

可以看到在Client的主配置路径下一共有6个文件。5个是证书密钥,1个是Client端的主配置文件client.conf
现在我们来编辑客户端主配置文件client.conf,

client(声明这个配置文件作用于客户端)
dev tun(使用tun三层虚拟连接设备)
proto udp(使用UDP协议)
remote 123.123.123.233 9988(设定远程Server的IP地址和端口,这里要和Server对应起来。如果有多个Server可以连接的话可以配置多条remote,一行一条)
resolv-retry infinite(始终重新解析Server的IP地址,如果remote后面跟的是域名,保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址,这样无需人为重新启动,即可重新接入VPN)
nobind(表示Client端不像Server端那样需要开放特定的端口,nobind的意思就是Client的不绑定特定的监听端口)
user nobody
group nobody(指定OpenVPN服务进程的宿主用户)
persist-key(设定连接保持密钥功能。在由于keepalive检测超时后而重新启动VPN的情况,不重新读取keys,而保留第一次使用的keys)
persist-tun(设定连接保持在线功能。在由于keepalive检测超时后而重新启动VPN的情况,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup)
ca ca.crt
cert vpnclnt00.crt
key vpnclnt00.key(设定CA证书、Client证书以及Client密钥文件的路径。与之前我Server端的配置不同,这里我没有写绝对路径而只是写了一些文件名。这是因为我使用了默认的OpenVPN的主路径/etc/openvpn/。如果不是使用默认路径而是定制更改了这些文件的位置的话,那么就需要注上详细的绝对路径了)
ns-cert-type server(这一项是Server配置文件server.conf当中没有的。Server使用build-key-server脚本什成的,在x509 v3扩展中加入了ns-cert-type选项,为的是防止黑客操纵他们的VPN Client模拟成VPN Server,然后使用他们的keys + DNS欺骗其他的Client连接他们假冒的VPN Server。因为他们的CA里没有这个扩展)
tls-auth ta.key 1(设定ta密钥的路径。这里我使用/etc/openvpn/的默认路径。所以直接打了文件名而不是绝对路径。这个配置项是关于HMAC防火墙,防止DOS攻击,对于所有的控制信息,都使用HMAC signature,没有HMAC signature的控制信息不予处理。这里Client使用的值是1,注意server端后面的数字肯定使用0) 
comp-lzo
verb 3  (Debug等级)
;mute 20(意义同Server端的设定)

在Windows下安装

1.下载并安装openvpn-2.0.9-gui-1.0.3-install.exe,注意版本号和服务器端保持一致,安装选项一切采用默认设置

2. 将ca.crt、client1.crt、client1.key复制到C:Program FilesOpenVPNconfig。(不同用户使用不同的证书,每个证书包括.crt和.key两个文件,如client2.crt和client2.key)

openvpn安装参考

VN:F [1.9.14_1148]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Linux下IPTABLES防火墙的设定

安装linux后(防火墙是开启状态),需要检查防火墙端口

1.iptables防火墙启动和停止

启动iptables防火墙时命令行输入 #service iptables start

[root@host.jefflei.com ~]# service iptables start
应用 iptables 防火墙规则:                                  [确定]
载入额外 iptables 模块:ip_conntrack_netbios_ns             [确定]

要停止iptables命令行输入 #service iptables stop

[root@host.jefflei.com ~]# service iptables stop
清除防火墙规则:                                            [确定]
把 chains 设置为 ACCEPT 策略:filter                        [确定]
正在卸载 Iiptables 模块:                                   [确定]

2.查看iptables的状态

命令行输入 #service iptables status

[root@host.jefflei.com ~]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num   target      prot opt source                destination
1     RH-Firewall-1-INPUT   all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num   target      prot opt source                destination
1     RH-Firewall-1-INPUT   all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
num   target      prot opt source                destination         

Chain RH-Firewall-1-INPUT (2 references)
num   target      prot opt source                destination
1     ACCEPT      all  --  0.0.0.0/0            0.0.0.0/0
2     ACCEPT      icmp --  0.0.0.0/0            0.0.0.0/0            icmp type 255
3     ACCEPT      esp  --  0.0.0.0/0            0.0.0.0/0
4     ACCEPT      ah   --  0.0.0.0/0            0.0.0.0/0
5     ACCEPT      udp  --  0.0.0.0/0            224.0.0.251          udp dpt:5353
6     ACCEPT      udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:631
7     ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:631
8     ACCEPT      all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
9     ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
10    ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:23
11    ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
12    ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:110
13    ACCEPT      tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443
14    REJECT      all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

*上面的输出显示了防火墙处于开启状态,并打开了22,23,80,110, 443端口

3.查看iptables规则集

要查看系统中现有的iptables规则集,可以运行以下命令:

iptables --list

4.清除原有防火墙规则.

不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.

[root@host.jefflei.com  ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@host.jefflei.com  ~]# iptables -X 清除预设表filter中使用者自定链中的规则

查看本机关于IPTABLES的设置情况

iptables -L -n

现在和安装linux时没有启动防火墙一样了.这些防火墙配置重起就会失去作用,当需要保存时使用如下命令

/etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

service iptables restart

4.开机后自启动防火墙的设定

命令行输入 #ntsysv

[root@host.jefflei.com ~]# ntsysv

在gui中选上iptables后。确认

5.简单配置防火墙规则

[root@host.jefflei.com ~]# setup

选择 防火墙配置–》定制–》在“其他端口”中输入要开放的端口, 例:1723

VN:F [1.9.14_1148]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Linux下的Vim设定

以下这段可以使用中文:

if has("multi_byte")
set encoding=utf-8
"set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
endif
set tabstop=4
set shiftwidth=4
set smarttab
set smartindent
set ruler
colorscheme vividchalk
syntax on
set number
set guifont=Monaco 12
if has("win32")
    "set guifont=Courier_New:h10:cANSI    
    set guifont=mingliu:h12
endif

开发人员字体下载

推荐Return of Monaco.ttf,Debian下

  1. cp monaco.ttf /usr/share/fonts/truetype/
  2. fc-cache -f -v

Debian下也可以用这款字体:ttf-inconsolata: an open font for your terminal and for nice code printouts

Vim的Color Scheme

如果你是系统管理员,可以将下载的颜色放入/usr/share/vim/vim70/colors/目录下,卡耐基梅隆大学的网站上有一张VimColorSchemeTest,方案十分多,一定会有中意的。我用的是vividchalk. 如果你不是系统管理员,可以将color scheme文件放在~/.vim/colors/下。

我使用的终端程序是secureCRT,终端默认不显示彩色,因此还需要作如下设定:点击”会话选项”–”仿真”–终端选择”Linux”–并且勾选ANSI,如果还不能显示vim的颜色就先exit再登陆就OK了!

如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为:
  $rpm –q vim-enhanced

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Linux命令行下搜索文件-Find命令使用介绍

linux命令行下查找文件的可以用Find命令,Find功能强大,还可以何xargs配合起来。例如,我要找/home/logs目录下比7天之前修改的owner为nobody的文件:

find /home/logs -name access.log.* -mtime +7 -user nobody -maxdepth 1 -exec ls -l {} \;

查找比my-test文件新,比my-test2的文件旧的普通文件并删除,删除前提示确认:

find /home/logs -newer my-test ! -newer my-test2 -type f -ok rm {} \;

时间选项

-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项类似:
-amin n
  查找系统中最后N分钟访问的文件
  -atime n
  查找系统中最后n*24小时访问的文件
  -cmin n
  查找系统中最后N分钟被改变文件状态的文件
  -ctime n
  查找系统中最后n*24小时被改变文件状态的文件
    -mmin n
  查找系统中最后N分钟被改变文件数据的文件
  -mtime n
  查找系统中最后n*24小时被改变文件数据的文件

EXEC, OK和xargs

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便。exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个反斜杠\,最后是一个分号。为了使用exec选项,必要的话可同时使用print选项。

-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

find /home/ -name *.gz -exec mv {} /data/archive/ \; 2> /dev/null

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去

在当前目录下的所有nobody组用户拥有的普通文件中查找"hostname"
# find . -type f -group nobody -print | xargs grep "hostname"
回收读写权限
# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf

本文参照了find的用法中文介绍,比较详细,还包含一定的例子。

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Linux下常用的查看系统信息命令(转)

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络
# iptables -L # 查看防火墙设置
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息进程
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务程序
# rpm -qa # 查看所有安装的软件包

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

linux用户管理

一般用户添加

adduser XXX -g groupname

passwd设定密码

修改后可以察看,密码文件/etc/passwd, 组文件/etc/group

添加一个安全的ftp帐号:

useradd uploaduser -g ftpgroups -s /sbin/nologin

再用passwd修改密码

这里不建议用-d www目录,我们可以在www目录中建立一个符号链接(ln -s source target):

ln -s /home/uploaduser/www /app/www/image/upload

批量添加用户:

察看默认值:useradd -D

编辑常用默认值,可以编辑:

 /etc/default/useradd, /etc/login.defs

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)
Page 5 of 6« First...23456