CentOS自从6.0以后启动方式有所变动默认是进度条方式启动,没有显示详细的硬件自检之类的信息。
root用户修改 /boot/grub/grub.conf 文件。
vim /boot/grub/grub.conf
将"rhgb"和 "quiet"去掉,保存即可
重启系统观察是不是和CentOS 5.xxx 启动过程一样了。
"rhgb"表示"redhat graphics boot",就是图形进度条模式。
"quiet"表示在启动过程中只显示重要启动信息,类似硬件自检之类的消息不会显示,可以有选择地选用。
如果实在是不想改动的话,我这里还有一个方法就是出现进度条的时候按键盘的F4即可,玩得开心。
列出正在使用网络的进程
lsof -P -i -n | cut -f 1 -d " "| uniq | tail -n +2
用下面的命令找出僵死进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
对当前目录的文件按大小从大到小进行排序,不会计算子目录大小
ls -lSh
怎样知道某个进程在哪个CPU上运行?
ps -eo pid,args,psr
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eo euser,ruser,suser,fuser,f,comm,label
快速找出发送arp包主机
tcpdump -l -n arp | grep 'arp who-has' | head -100 | awk '{printf $NF} ' | sort | uniq -c | sort -n
查找二个文件相同的内容
grep -Fx -f file1 file2
sort file1 file2 | uniq -d
查找file2里 file1里没有的内容
grep -Fxv -f file1 file2
查看服务器上一共开了多少的 php-cgi 进程:
ps -ef |grep "php" | grep -v "grep" | wc -l
查看已经有多少个php-cgi进程用来处理tcp请求:
netstat -anop | grep "php" | grep -v "grep" | wc -l
修改某目录下(含..
lspci不能使用,安装记录下。
yum -y install pciutils
【问 题】:snmp服务无故自动停止,人工不能及时的发现,造成系统无法被正常的监控
【解决思路】:通过脚本实现服务异常的情况下自动开启服务,确保系统被正常的监控
【脚本内容】
#!/bin/bash
A=`service snmpd status |awk '{print $2}'`
B=`netstat -puln | grep ":161 "`
C=`service snmpd status |awk '{print $4}'|cut -c9-14`
if [ "$A = 停止" ];then
/etc/init.d/snmpd start
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>" >> /var/log/check_snmpd.log
echo "snmpd start at [`date +"%Y-%m-%d %H:%M:%S"`]" >> /var/log/check_snmpd.log
elif [ "$B" = "" ];then
/etc/init.d/snmpd start
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>" >> /var/log/check_snmpd.log
echo "snmpd start at [`date +"%Y-%m-%..
【 描述 】
Logwatch是使用 Perl 开发的一个日志分析工具
Logwatch能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员,可定制需求
Logwatch的mail功能是借助宿主系统自带的mail server 发邮件的,所以系统需安装mail server , 如sendmail,postfix,Qmail等
本文yum安装配置
yum install -y logwatch
【 配置 】
a. 配置文件在 /etc/logwatch , 相关配置模板在 /usr/share/logwatch
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
如果不做这一步 , /etc/logwatch/conf/logwatch.conf 是一个空文件
默认配置会使用 /usr/share/logwatch/default.conf/logwatch.conf
b. vim /etc/logwatch/conf/logwatch.conf
LogDir = /var/log logwatch 会去 /var/log 找你定义的 log 文件
TmpDir = /var/cache/logwatch
# Save = /tmp/logwatch 开启此项, 处理结果将保存在/tmp/logwatch, 不邮寄或显示
MailTo = your@mail.com ..
sed '1,3d' file //删除1-3行
sed '/[Aa]bc/p' file //打印包含Abc或者abc的行
sed '/ABC/d' //删除包含ABC的行
sed '/ABC/!d' //不删除包含ABC的行
sed '5,$d' //从第五行到最后一行全部删除
sed 1q //显示第一行
sed 's/$/.../g' //每行的最后面添加 ...
sed 's/d.(sk)/1&/g' //满足d*sk的单词,在单词前添加sk
sed 's/<[^>]*>//g' //去除html标签
sed '/ABC/a123' //在包含ABC的行后面添加一行数值为123的行
sed '/ABC/i123' //跟a不同的是i是插入当前行的前面
sed '/ABC/c123' //包含ABC的行将更改为123
sed '/ABC/{n;s/123/ABC/g}' //精确匹配包含ABC的下一行,将123全部替换成ABC
sed '/ABC/{s/A/a/}' //在包含ABC的行将A替换成a
sed -e '/ABC/h' -e '$g' //将包含ABC的行复制,在最后一行添加.
sed -e '/ABC/{h;d}' -e '/123/G' //将包含ABC的行复制并删除,在包含123的行后添加.
g等于在当前行覆盖,G是在符合条件的行后新增加一行.
sed 's/^/ /g' //每行前面增加一个空格
sed 's/.(.)$/*1/' //将倒数第二位换成*
sed '/ABC/!s/1/*/g' //在不包含ABC的行里,将所有的1替换成*
sed ..
yum -y install ntp
mv /etc/ntp.conf /etc/ntp.conf_bak
vi /etc/ntp.conf
添加以下内容:
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
/etc/init.d/ntpd start
检查时间服务器的同步状态:
ntpq -p
netstat -atnpu|grep ntp
客户端配置:
在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。
执行同步命令 :
/usr/sbin/ntpdate 192.168.1.187
添加计划任务 :
*/5 * * * * /usr/sbin/ntpdate 192.168.1.187
注意事项
注意:将客户端和服务器端的SYNC_HWCLOCK这个参数修改成yes。同步成功以后,自动的更新BIOS.
vi /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.p..
1、统计两个文本文件的相同行
grep -Ff file1 file2
2、统计file2中有,file1中没有的行
grep -vFf file2 file1
vi /root/.bashrc
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e[0m\]]\\$ \[\e[33;40m\]"
迫于生产环境需要,现升级文件系统ext3到ext4(好处就不说了网上一大把)。看见别个大牛写的都一篇篇的,现小弟整理最简单的方法,哈哈哈。
yum -y install e4fsprogs
mkfs.ext4 /dev/xxx (实际分区)
到此你的linux系统已经能够支持ext4文件系统了!
记得加入/etc/fstab
1. 调用顺序
(1) RedHat系统
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
后面的配置文件继承前边的变量和Shell设置,相同的配置会被覆盖;
关于各个文件的作用域说明:
(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2)/etc /bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,然后执行用户的.bashrc文件。交互式登录shell调用此文件。
(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。这里可以设置别名。若删除此文件,提示符会变成 -bash-3.2$,可以复制/etc/skel/.bashrc到自己的家目录下。交互式非登录shell调用此文件。
(5) ~/.bash_logout:当每次退出系统(退..
定制CentOS5.6 ServerCD系统安装盘
1、 在虚拟机中安装系统,选择所需的设置和软件包本次试验用的是CentOS-5.6-i386
2、 安装定制光盘所需软件
yum -y install createrepo mkisofs
3、 生成安装系统所需的rpm文件列表
awk '/Installing/{print $2}' install.log |sed 's/^[0-9]*://g' >/root/packages.list
4、 创建定制工作目录
mkdir /home/OS
mount /dev/cdrom /mnt
rsync –a --exclude=CentOS /mnt/ /home/OS
mkdir /home/OS/CentOS
5、 复制系统安装所需rpm包,如下脚本
vi cprpm.sh
#!/bin/bash
DEBUG=0
DVD_CD=/home/OS/CentOS //目标地址,即要复制到的地方
ALL_RPMS_DIR=/mnt/CentOS/ //源目录,以CentOS 5.6为例
DVD_RPMS_DIR=$DVD_CD
packages_list=/root/packages.list
number_of_packages=`cat $packages_list | wc -l`
i=1
while [ $i -le $number_of_packages ] ; do
line=`head -n $i $packages_list | tail -n -1`
name=`echo $line ..
ps -A --sort -rss -o comm,pmem,pcpu |uniq -c |head -20
网上流传着一份nginx fastcgi_params,大家在nginx下用fastcgi跑PHP大多用的是这个版本,但是这个版本有2个问题,1是默认的 buffersize太小,php一旦输出比较多的error_log就挂了,2是没有转发HTTP_X_FORWARD_FOR和 HTTP_CLIENT_IP这两个变量.我的服务器是在lighttpd后面跑的nginx+php,wordpress收不到正确的IP,于是垃圾评 论无法正常工作.现在我改了一份更合用的版本,提供出来.
以下是代码片段:
fastcgi_buffers 8 128k;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_U..
在linux中,往往解析一个域名时,先会找/etc/hosts文件,如果/etc/hosts文件没有对应,才会去找DNS,那么有什么方式,让主机先找DNS呢?
当然有,在/etc/nsswitch.conf这个文件里定义,
#vi /etc/nsswitch.conf
hosts: files dns //找到这段,改成下面这样
hosts: dns files
这样,你的主机就会先去找DNS,在去找hosts了
SSH 是一个强大且安全的工具,我们除了可以用它来远程管理主机外,还可以通过它建立 SSH tunnel 作 Proxy 用,远程传输文件等等。而这里我想要介绍另外一个功能,那就是结合 sshfs 这个工具可以把远程主机的文件系统映射到本地主机上,透过 SSH 把远程文件系统挂载到本机上,这样我们可以不必使用 scp 工具就可以做到直接复制及删除远程主机的文件了,就像操作本地磁盘一样方便。
sshfs 是基于 FUSE 构建的 SSH 文件系统客户端程序,通过它远程主机的配置无需作任何改变,就可以透过 SSH 协议来挂载远程文件系统了,非常方便及安全。
首先安装epel的yum源方便安装
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum -y install sshfs
挂载远程 ssh 文件系统:
sshfs root@192.168.1.218:/home/ /mnt/
sshfs 用户名@远程主机IP:远程主机路径 本地挂载点
sshfs -o transform_symlinks -o follow_symlinks user@hostname: /home/username/sshfs
-o transform_symlinks 表示转换绝对链接符号为相对链接符号
-o follow_symlinks 沿用服务器上的链接符号
vim /etc/profile
在未行加入
export PROMPT_COMMAND='{ date "+[ %Y%m%d %H:%M:%S `whoami` ] `history 1 | { read x cmd; echo "$cmd from ip:$SSH_CLIENT $SSH_TTY";
}`"; }>> /home/login.log'
source /etc/profile 生效
========================================================================
vim /etc/profile
在未行加入
RMIP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
TIME=`date +%Y%m%d.%H:%M.%S`
LOGS="/tmp/.hist/$TIME.$USER.hist"
HOST=`/bin/hostname`
if [ "$RMIP" = "" ]
then
RMIP=`hostname`
fi
if [ ! -d /tmp/.hist ]
then
mkdir /tmp/.hist
chmod 777 /tmp/.hist
fi
script -q $LOGS && mail -s "$TIME, $USER FROM $RMIP LOGIN $HOST" user@domain.com < $LOGS && rm -f $LOGS
命令基本格式是: tar cvzf TARGET SOURCES -N TIME e.g tar cvzf foo.tgz /bak -N “2004-03-03 16:49:17″
记住全备份的时间f_time和上一次增量备份的时间i_time;(现在的办法是以job为单位记录这两个时间: “ [JobName] [F_TIME] [I_TIME] ‘\n’ ”)
全备份: tar cvzf foo.tgz /bak
增量备份: tar cvzf foo.tgz /bak -N i_time
差量备份: tar cvzf foo.tgz /bak -N f_time
一、介绍
本项目利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步,目前使用的比较多的同步程序版本是inotify-tools。
inotify 可以监视的文件系统事件包括:
IN_ACCESS,即文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可写文件被 close
IN_CLOSE_NOWRITE,不可写文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移来,如 mv、cp
IN_CREATE,创建新文件
IN_DELETE,文件被删除,如 rm
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
IN_UNMOUNT,宿主文件系统被 umount
IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所说的文件也包括目录。
一.实验环境
两台服务器,系统均为CentOS 5.6 32位,内核..
本文介绍了如何使用rsync服务从Linux到Windows进行远程备份
rsync官网下载http://rsync.samba.org/
cwrsync官网下载http://sourceforge.net/projects/sereds/files/cwRsync/
环境
192.168.88.129为rsync server CENTOS 5.5 32位,rsync源码包安装
下面开始安装:
tar zxvf rsync-3.0.8.tar.gz
cd rsync-3.0.8
./configure
make && make install
ln -s /usr/local/bin/rsync /usr/bin/rsync
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.passwd
chmod 600 /etc/rsyncd/rsyncd.passwd
vi /etc/rsyncd/rsyncd.motd 输入欢迎信息
Welcome to rsync system
vi /etc/rsyncd/rsyncd.conf输入:
uid=root
gid=root
max connections=36000
use chroot=no
motd file = /etc/rsyncd/rsyncd.motd
log file=/var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
hosts allow = 192.168.88.128,192.168.10.0/24
hosts deny = *
timeout=300
[data]
path=/opt
ignore..
kudzu --probe --class=network |grep desc
lspci -vv | grep net && (lspci -vv | grep net | wc -l)
一直用的都是CentOS系统,所以这次就试了试debian ,毕竟国外debian使用率占了半壁江山。
首先是添加源地址,目的只有一个,我要安装最新版的软件,debian默认的软件版本低啊
vi /etc/apt/sources.list
deb http://packages.dotdeb.org lenny all
接着,当然是更新一下系统啦.
apt-get update
下面是安装mysql5.1,安装过程会需要你输入root密码的
apt-get install mysql-server-5.1
/etc/init.d/mysql restart
/etc/init.d/mysql stop
接着是PHP5,自己选择需要安装的扩展吧
apt-get install php5-common php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-apc
安装nginx,代码如下
apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev build-essential
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_stat..
Jeremy Zawodny写了一篇Fixing Poor MySQL Default Configuration Values 关于mysql默认预设值的问题,其中提到了有4点是无论如何都要修改的.
首先是 max_connect_errors , 当某一个网站送了很多错误的请求时,mysql服务器就会当掉这个网站的权限.
第三个是 skip-name-resolve 这个设定很变态的,每一次链接都要做一次反DNS查询,mysql跑反DNS查询有什么用,浪费时间和资源.
最后我在my.cnf配置文件添加了以下语句:
max_connect_errors = 1844674407370954751
connect_timeout = 30
skip-name-resolve
slave_net_timeout = 30
不值啊,又败在HR这,支付宝没机会进了,前面都过了啊,哎这就是命!
假设 test目录下有 1 2 3 4 5 这5个目录
现在要将 3 4 5目录tar打包,1和2目录不要
命令如下:
tar -zcvf test.tar.gz --exclude=1 --exclude=2 test
或
tar -zcvf test.tar.gz --exclude=test/1 --exclude=test/2 test
看man tar帮助,--exclude后面跟的好像是正则
注意: 要打包的test必须在命令最后,不然没有效果.
将 /etc/ 内的所有文件备份下来,并且保存其权限!
tar -zxvpf /tmp/etc.tar.gz /etc
#这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!
在 /home 当中,比 2010/06/01 新的文件才备份
tar -N '2010/06/01' -zcvf home.tar.gz /home
备份 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc