Posts Tagged ‘ Linux

Linux下查看apache连接数

Linux命令:

ps -ef | grep httpd | wc -l

查看Apache的并发请求数及其TCP连接状态:

Linux命令:

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

返回结果示例:
  LAST_ACK 5
  SYN_RECV 30
  ESTABLISHED 1597
  FIN_WAIT1 51
  FIN_WAIT2 504
  TIME_WAIT 1057

说明:  
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数。

Linux下调节进程优先级

命令:

nice(1): 以指定优先级运行程序
nice [OPTION] [COMMAND [ARG]…]
nice –n 1 ls

renice(8): 调整运行进程的优先级
renice priority [[-p] pid …] [[-g] pgrp …] [[-u] user …]
renice +1 987 -u daemon root -p 32

API:
nice(2): 改变进程优先级
int nice(int inc);

getpriority(2): 获取优先级
int getpriority(int which, int who);

setpriority(2): 设置优先级
int setpriority(int which, int who, int prio);

Reference:
http://unix-cd.com/unixcd12/article_4602.html

sed 关于换行符 “\n” 的处理

我有一段文本有多行
如:
12
23
34

我想把它换成一行
结果如下: 122334

vi中 :%s/n//g 可以合并成一行

但是使用命令 sed ‘s/n//g’ 对于换行符不起作用。


因为sed是对行操作,所以没有换行。

解决方案:
tr -d ‘n’

真的需要sed
sed -nr ‘ H;
$ {
x;
s/n//g;
p
}’

SHELL之循环语句

1、if语句

2、交互选择

3、循环判断

4、数值运算符

5、…………

if语句格式:
if [ 条件 ]
then
command
else
command
fi

交互选择(N可以为*)
echo -e “提示语言,后边有光标提供输入”c
read VAR
case $VAR in
Y)
command
;;
N)
command
;;
esac

对条件进行循环检查,成立则处理,否则继续检查
a=1
while [ "$a" = "1" ]
do
fileno=`ls -l /list/filename* |wc -l`
if [ "$fileno" = "10" ]
then
a=10
command
else
a=1
sleep 300
fi
done

grep -v www filename 过滤不包含
grep www filename 过滤包含
uniq -u 过滤没有相同行
uniq -d 过滤具有相同行
sort 排序
paste -d”;” filename1 filename2 把文件并列合并并且以;间隔

if [ "a" = "10" ] #a=10
[ "a" -ne "10" ] 同上一行
[ -s filename ] 文件大小大于0
-s 文件大小大于0返回真
-d 是一个目录是返回真
-e 文件或目录存在返回真
-g 存在是SGID返回真
-h 文件是连接文件返回真
-k 文件是粘滞位返回真
-r 文件或目录存在并可读时返回真
-w 文件或目录存在并可写时返回真
-u 文件是SUID返回真
-x 文件是可执行的返回真

-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于

2*3+4|bc 计算前面的数据
ping -w 2 www.163.com 测试2两次
对上一次指令结果判断
$?=0 为真
$?=1 为假

给SHELL后边加参数
XXXX=`echo | wc -c`
cat $HOME/list/file.txt 1>/dev/null 2>/dev/null
OK=$?
if [ "" = "" ] || [ "$XXXX" -lt "4" ] || [ "$OK" -ne "0" ]
then
echo “参数没有输入,输入位数不等于3,file.txt不存在,请重新输入”
exit
fi

一个循环检查
line=1
for i in `cat bb`
do
qq=`echo “scale=2;$i*100″ | bc | awk -F. ”{print }”`
if [ "$qq" -ge "75" ]
then
sed -n “$line”p temp.1 >> bad.1
fi
line=`expr $line + 1` ###每次加1

在Linux Shell下将汉字转换为Url编码

  在linux 的shell环境下有一个od命令可以将文件按不同的进制的ascii码输出,该功能可以完成在linux shell下将汉字转换为url编码的任务。

  url编码是十六进制的形如%E6%9C%8D%E5%8A%A1%E5的字符串,test是包含“数据库网络,”这几个字符的文件,以下命令输出:

#od -t x /test
0000000 ddbefdca f8cde2bf 0a2ce7c2
0000014

  该字符串对应的url编码为 %CA%FD%BE%DD%BF%E2%CD%F8%C2%E7%2C。

  可以看出编码的对应关系以下是转换的脚本:

#!/bin/sh
#make url code
od -t x /test |awk '{
w=split($0,linedata," ");
for (j=2;j<w+1;j++)
{
for (i=7;i>0;i=i-2)
{
if (substr(linedata[j],i,2) != "00") {printf "%" ;printf toupper(substr(linedata[j],i,2));}
}
}
}' >/testurl

  testurl文件的内容就是转换结果。

还原编码:

echo '%CA%FD%BE%DD%BF%E2%CD%F8%C2%E7%2C'|
awk 'BEGIN {
for (i=0;i<=16;i++) hex[sprintf("%X",i)]=i;}
{ for (i=1;i<=length($0);i++)
  { c=substr($0,i,1)
    if (c=="+") printf (" ");
    else if (c=="%") {
     printf ("%c",hex[substr($0,++i,1)]*16+hex[substr($0,++i,1)])
                     
                      }
    else  printf (c);

   }
} '
数据库网络

zlib安装

在编译软件./configure时得到错误反馈
checking zlib.h usability… no
checking zlib.h presence… no
checking for zlib.h… no

zlib软件包所包含的库经常被一些软件的压缩或解压缩函数用到,所以如果编译软件时需要Zlib则说明这个软件正好含有压缩或解压缩函数,我们需要安装zlib软件包。

先到zlib官方网站:http://www.zlib.net 上下载源码来安装zlib软件包。

目前最新版本zlib是zlib1.2.3,安装开始;
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar -xvzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install

这就完成了zlib1.2.3的安装,由于安装zlib1.2.3需要编译,所以最基本的编译器是要安装好的。

Linux下的远程备份(镜像)工具rsync

0 简介

传统上,在Unix系统下使用的备份工具主要有tardumprdump)、restorerrestore)、ddcpiorcp等工具。这些工具中大多数适合于本地备份(native backup),倘若要执行远程备份(remote backup)的话,往往显得力不从心。在Linux系统下提供了一个工具——rsync,据其文档说明,它是rcp工具的一个替代品,但是更快捷、更灵活。rsync采用的remote-update协议允许rsync通过网络链路传输两组文件的增量,而是不是文件本身,据此rsync可以提高传输效率。

rsync所具有的功能特色主要有:

l          支持对连接、设备、用户、组、权限的拷贝;

l          支持类似GNU tar工具的excludeexclude-from选项;

l          类似CVSexclude模式:忽略相同的文件;

l          可以使用多种远程shell工具,比如rsh或者ssh

l          不需要root权限即可运行;

l          将文件传输流水线化以减少延迟开销;

l          rsync服务器允许以匿名或者认证方式登录(特别适合于做镜像)。

和大多数网络工具一样,rsync也是以服务器/客户端的方式工作的。但较为特别的一点是:rsync服务器和客户端都使用同一个程序——rsync(如果按常见的做法,则应该是服务器程序为rsyncd,客户端程序为rsync)。启动服务器的时候需要指明–daemon选项,以表明启动的是服务器。而在启动客户端程序的时候则不应开启–daemon选项。

在下文中,假设需要备份的主机为192.168.0.100,其上运行rsync服务器,将该主机称之为rsync-server;存放备份数据的主机为192.168.0.200,其上运行rsync客户端程序,将该主机称之为rsync-client

阅读全文

linux /etc/hosts解说

1. 关于/etc/host,主机名和ip配置文件

hosts – The static table lookup for host name(主机名查询静态表)

linux 的/etc/hosts是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。
不同的linux版本,这个配置文件也可能不同。比如Debian的对应文件是/etc/hostname。

2. 配置文件用途;

这个文件可以配置主机ip及对应的主机名,对于服务器类型的linux系统其作用还是不可忽略的。
在局域网或是INTERNET上,每台主机都有一个IP地址,它区分开每台主机,并可以根据ip进行通讯。但IP地址不方便记忆,所以又有了域名。
在一个局域网中,每台机器都有一个主机名,用于区分主机,便于相互访问。

linux主机名的相关配置文件就是/etc/hosts;这个文件告诉本主机哪些域名对应那些ip,那些主机名对应哪些ip:
比如文件中有这样的定义
阅读全文

Linux改变文件或目录的访问权限命令

Linux改变文件或目录的访问权限命令   Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件 作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的 任何组合。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
$ ls -l sobsrc. tgz
-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。
例如:
-     rw-   r–   r–
阅读全文

用rsync对网站进行镜像备份

用rsync对网站进行镜像备份

by inburst<inburst@263.net>
http://xfocus.org

对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解

的情况中,有80%的系统管理员不是太关心自己服务器的安全性,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高

昂,因此往往会选择自由软件。这里准备介绍的rsync就是这样的软件,它可以满足绝大多数要求不是特别高的备份需求。

一、特性简介

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。

阅读全文