分类 ‘LINUX’ 的归档

Linux常用命令速查

2011年12月8日

一. 启动,关机,登入,登出相关命令

[login] 登录

[logout] 登出

[exit] 登出

[shutdown] 停止系统

[halt] 停止系统

[reboot] 重启动

[poweroff] 切断电源

[sync] 把内存里的内容写入磁盘

[lilo] 安装lilo启动管理程序

[grub] 安装lilo启动管理程序

二. Shell相关命令

[chsh] 切换Shell

[history] 显示命令履历

[alias] 设置命令别名

[unalias] 取消命令别名

[which] 显示命令所在位置

[type] 查询命令种类

[echo] 显示字符串或者变量内容

[set] 设置/显示Shell变量

[printenv] 显示环境变量

[export] 设置环境变量

[env] 设置临时环境变量

[unset] 释放环境变量

[setenv] 设置环境变量

[unsetenv] 释放环境变量

执行文件当中的命令

[man] 查询命令手册

[info] 查询超文本命令手册

[whatis] 显示命令简介

[apropos] 通过关键字查询手册

三. 用户管理相关命令

[su] 切换到其他用户

[useradd] 追加用户

[adduser] 追加用户

[userdel] 删除用户

[usermod] 修改用户设置

[chfn] 修改用户私人信息

[groupadd] 追加组

[groupdel] 删除组

[groupmod] 修改组设置

[passwd] 更改密码

[whoami] 显示用户名

[logname] 显示登录用户帐号

[users] 显示所有登录用户信息

[who] 查询登录用户信息

[w] 查询登录用户信息

[id] 显示指定用户的ID信息

[groups] 显示指定用户的所属组

[finger] 显示指定用户的个人信息

[mesg] 开关与他人收发消息

[write] 给其他用户发消息

[wall] 给所有用户发消息

[talk] 和其他用户聊天

四. 系统消息相关命令

[top] 提供了实时的对系统处理器的状态监视

[date] 显示/设置当前时间

[uptime] 显示系统运行时间

[arch] 显示机器的核心构架(如i386)

[uname] 显示操作系统信息

[tty] 显示终端名

[last] 显示登录/登出在履历

[lastb] 显示非法登录信息

[dumpkeys] 显示当前键盘配置

[loadkeys] 变更键盘配置

[df] 查询磁盘使用信息

[du] 查询磁盘使用信息

[dmesg] 显示系统启动消息

[script] 保存输入输出到文件

五. 文件操作相关命令

[ls] 显示文件列表

[tree] 显示目录树

[pwd] 显示当前路径

[cd] 更改当前路径

[pushd] 追加路径到目录堆栈

[popd] 从目录堆栈删除路径

[dirs] 显示目录堆栈的内容

[mkdir] 创建路径

[rmdir] 删除路径

[cp] 复制文件/目录

[rm] 删除文件/目录

[mv] 移动文件/目录,修改文件名

[chown] 更改文件/目录的所有者

[chgrp] 修改文件/目录的所有组

[chmod] 修改文件/目录的权限

[touch] 更改文件时间

[ln] 建立文件/目录链接

[find] 查找文件

[whereis] 显示文件存在的路径名

[file] 查询文件种类

[size] 查询文件大小

六. 文件编辑相关命令

[cat] 显示文件内容

[tee] 输出到文件和屏幕

[more] 分屏显示文件内容

[less] 分屏显示文件内容

[head] 显示文件头部内容

[tail] 显示文件尾部内容

[fold] 折叠显示长行

[sort] 排列文件的行

[cmp] 比较文件内容

[diff] 显示文件差异

[nkf] 更改日语文件编码

[dd] 变更文件之后复制

[wc] 统计文本单词数,文件大小等

[split] 分割文件

[paste] 以行连接文件

[join] 以字段连接文件

[grep] 查询文字

[uniq] 过滤重复部分显示文件内容

[tr] 替换文字

[sed] 替换文字

[vi] vi文字编辑器

七. 压缩/解压缩相关命令

[tar] 压缩/解压缩文件

[compress] 压缩/解压缩文件

[uncompress] 解压缩

[gzip] 压缩/解压缩文件

[gunzip] 解压缩

[zcat] 显示压缩文件的内容

[lha] 压缩/解压缩文件

[uuencode] 把二进制文件编码为文本文件

[uudecode] 把经过编码的文本文件还原为二进制文件

八. MS-DOS工具集

[mtools]命令

[mdir] 显示文件列表

[mcd] 改变当前目录

[mmd] 新建目录

[mrd] 删除目录

[mdeltree] 删除目录树

[mcopy] 复制文件

[mdel] 删除文件

[mmove] 移动文件

[mren] 更改文件或目录名

[mattrib] 修改文件属性

[mtype] 显示文件内容

[mdu] 查询文件或目录大小

[minfo] 显示磁盘信息

[mformat] 以MS-DOS方式格式化磁盘

[mlabel] 设置磁盘标签

九. 控制外部设备相关命令

[mount] mount上设备

[umount] 解除已经mount上的设备

[eject] 弹出(CD/DVD等)

[fdformat] 格式化软盘

[fdisk] 配置/显示硬盘分区

[mkfs] 格式化磁盘分区

[fsck] 检查/修复磁盘错误

[lpr] 打印到打印机

[lprm] 中断打印任务

[lpq] 显示打印任务的状态

[lpc] 管理/控制打印任务

[ifconfig] 显示/设定NIC配置

十. 进程及任务管理相关命令

[ps] 显示正在运行的进程

[jobs] 显示后台运行任务

[fg] 把任务切换到前台

[bg] 把任务切换到后台

[kill] 中止进程或任务

[killall] 中止进程或任务

[wait] 等待进程或任务的结束

[at] 设置定时执行任务

[atq] 显示尚未执行的任务

[atrm] 删除定时执行任务

[batch] 在系统负荷减轻的时候执行任务

[nice] 改变优先度并执行任务

[nohup] 在后台执行任务,Logout之后也不退出

[sleep] 休眠一定的时间

[crond] 用来定期执行程序的命令

[screen] 可以在多个进程之间多路复用一个物理终端的窗口管理器

十一. 网络管理相关命令

[netstat] 显示当前网络连接状况

[route] 显示/设置路由

[host] 显示网络主机情况

[hostname] 显示/设置当前主机的名字

[ping] 确认和远程机器的连接情况

[traceroute] 显示路由信息

[rwho] 查询网上机器的登陆用户

[ruptime] 查询网上机器的系统运行时间

[rlogin] 登陆到远程机器

[telnet] 用telnet登陆到远程机器

[rsh] 给远程机器发送命令

[rcp] 在远程机器之间复制文件

[mail] 收取邮件

[sendmail] 发送邮件

[mailq] 确认邮件队列

[ftp] 用ftp传输文件

十二. 其他命令

[cal] 显示日历

[clear] 清屏

[gcc] 编译C语言代码

[as] 汇编

[bc] 计算

[rpm] Redhat的包管理

[dpkg] Debian的包管理

[installpkg] Slackware的包安装(删除命令则是removepkg)

[xf86setup ,turboxfg,Xconfigurator] 配置X服务

[startx] 启动 X-Window 图形界面

tcpdump参数用法详解

2011年12月8日

(1). tcpdump的选项

-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpdump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
(2). tcpdump的表达式

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字。
第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是”ether”的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’││’;这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
A)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:

tcpdump host 210.27.48.1
B)想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中使用 括号时,一定要转义)

tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )
C)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:

tcpdump tcp port 23 and host 210.27.48.1
(3). tcpdump的输出结果
下面我们介绍几种典型的tcpdump命令的输出信息
A)数据链路层头信息
使用命令

tcpdump –e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间, 847509是ID号,eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
B)ARP包的TCPDUMP输出信息
使用命令

tcpdump arp
得到的输出结果是:

22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。
C)TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) “.” (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
D)UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:

route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth。

附:现在一般用这样用:
sudo tcpdump -s 0 -nX host 172.27.193.234 -i eth1

或者-w来使用wireshark

Linux Web服务器网站故障分析常用命令

2011年12月8日

系统连接状态篇:
1.查看TCP连接状态
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”t”,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”t”,arr[k]}’

netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn

netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c

2.查找请求数请20个IP(常用于查找攻来源):

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

3.用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接

netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接

netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

6.根据端口列进程

netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

网站日志分析篇1(Apache):

1.获得访问前10位的ip地址

cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

2.访问次数最多的文件或页面,取前20

cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)

cat access.log |awk ‘($7~/.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数

cat access.log |awk ‘($10 > 200000 && $7~/.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

cat access.log |awk ‘($7~/.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

cat access.log |awk ‘($NF > 60 && $7~/.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件

cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)

cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9.统计404的连接

awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

10. 统计http status

cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts}’
cat access.log |awk ‘{print $9}’|sort|uniq -c|sort -rn

10.蜘蛛分析,查看是哪些蜘蛛在抓取内容。

/usr/sbin/tcpdump -i eth0 -l -s 0 -w – dst port 80 | strings | grep -i user-agent | grep -i -E ‘bot|crawler|slurp|spider’

网站日分析2(Squid篇)按域统计流量

zcat squid_access.log.tar.gz| awk ‘{print $10,$7}’ |awk ‘BEGIN{FS=”[ /]“}{trfc[$4]+=$1}END{for(domain in trfc){printf “%st%dn”,domain,trfc[domain]}}’

数据库篇
1.查看数据库执行的sql

/usr/sbin/tcpdump -i eth0 -s 0 -l -w – dst port 3306 | strings | egrep -i ‘SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL’

系统Debug分析篇
1.调试命令
strace -p pid
2.跟踪指定进程的PID
gdb -p pid

优化Linux的内核参数来提高服务器并发处理能力

2011年12月8日

Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化TCP的内核参数,来及时将TIME_WAIT状态的端口清理掉。

本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,如果不是这种情况下,效果可能不明显。可以使用netstat命令去查TIME_WAIT状态的连接状态,输入下面的组合命令,查看当前TCP连接的状态和对应的连接数量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
这个命令会输出类似下面的结果:
LAST_ACK 16
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18098
我们只用关心TIME_WAIT的个数,在这里可以看到,有18000多个TIME_WAIT,这样就占用了18000多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接。

用vim打开配置文件:#vim /etc/sysctl.conf

在这个文件中,加入下面的几行内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

输入下面的命令,让内核参数生效:#sysctl -p

简单的说明上面的参数的含义:

net.ipv4.tcp_syncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout
#修改系統默认的 TIMEOUT 时间。

在经过这样的调整之后,除了会进一步提升服务器的负载能力之外,还能够防御小流量程度的DoS、CC和SYN攻击。

此外,如果你的连接数本身就很多,我们可以再优化一下TCP的可使用端口范围,进一步提升服务器的并发能力。依然是往上面的参数文件中,加入下面这些配置:
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
#这几个参数,建议只在流量非常大的服务器上开启,会有显著的效果。一般的流量小的服务器上,没有必要去设置这几个参数。

net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 10000 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 6000
#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默 认为180000,改为6000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死。

内核其他TCP参数说明:
net.ipv4.tcp_max_syn_backlog = 65536
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.core.netdev_max_backlog = 32768
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn = 32768
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216 #最大socket读buffer,可参考的优化值:873200
net.core.wmem_max = 16777216 #最大socket写buffer,可参考的优化值:873200
net.ipv4.tcp_timestsmps = 0
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 2
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries = 2
#在内核放弃建立连接之前发送SYN包的数量。
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
# 开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.tcp_wmem = 8192 436600 873200
# TCP写buffer,可参考的优化值: 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
# TCP读buffer,可参考的优化值: 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
# 同样有3个值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力。
net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。
net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。
上述内存单位是页,而不是字节。可参考的优化值是:786432 1048576 1572864

net.ipv4.tcp_max_orphans = 3276800
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。
如果超过这个数字,连接将即刻被复位并打印出警告信息。
这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,
更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_fin_timeout = 30
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。

网站压力测试工具webbench

2011年08月29日

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。

1、适用系统:Linux

2、编译安装:

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

3、使用:

webbench -c 500 -t 30 http://127.0.0.1/test.jpg

参数说明:-c表示并发数,-t表示时间(秒)

4、测试结果示例:

Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/test.jpg
500 clients, running 30 sec.

Speed=3230 pages/min, 11614212 bytes/sec.
Requests: 1615 susceed, 0 failed.

注意:webbench 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。

UNIX基本操作命令

2011年08月29日

登录步骤
=========
login : _______ => 输入 username
password : _______ => 输入密码

..退出步骤
=========
% logout
或 % exit
或 %

更改帐号密码
============

% passwd => 执行后将会出现下列讯息
Changing NIS password for user on ice.
Old password: ______ => 输入旧密码
New password: ______ => 输入新密码(最好6-8字,英文字母与数字混合)
Retype new password: ______ => 再输入一次密码

在线指令说明
============
执行格式: man command-name
Example: % man ls

进入远端电脑系统
================
执行格式:rlogin hostname [-1 username]
Example:
%rlogin doc
remote login 进入工作站 doc 中。
%rlogin doc -l user
使用 user 帐号进入工作站 doc 中。

执行格式:telnet hostname 或 telnet IP address
Example:
%telnet doc or %telnet 140.109.20.251

文件或目录处理
==================
.列出文件或目录下之文件名称
执行格式: ls [-atFlgR] [name] ( name 可为文件名或目录名称。)

Example :
ls 列出目前目录下之文件名。
ls -a 列出包含以.起始的隐藏档所有文件名。
ls -t 依照文件最后修改时间之顺序,依序列出文件名。
ls -F 列出目前目录下之文件名及其类型。”/” 结尾表示为目录名称,

“*” 结尾表示为执行档,”@” 结尾表示为 symblic link。
ls -l 列出目录下所有文件之许可权、拥有者、文件大小、修改时间及名称。
ls -lg 同上,并显示出文件之拥有者群组名称。
ls -R 显示出目录下,以及其所有子目录之文件名。( recursive listing )

目录之缩写:
===========
~     使用者 login 时的 working directory ( 起始目录 )
~username 指定某位 user 的 working directory ( 起始目录 )
.. 目前的工作目录 ( current working directory )
.. 目前目录的上一层目录 ( parent of working directory)

改变工作目录位置
================
执行格式:cd [name] :name 可为目录名称、路径或目录缩写。
Example:
cd 改变目录位置,至使用者 login 时的 working directory (起始目录)。
cd dir1 改变目录位置,至 dir1 之目录位置下。
cd ~user 改变目录位置,至使用者的 working directory (起始目录)。
cd .. 改变目录位置,至目前目录的上层( 即 parent of working directory)
cd ../user 改变目录位置,至相对路径 user 之目录位置下。
cd /../.. 改变目录位置,至绝对路径( Full path ) 之目录位置下。

复制文件
========
执行格式: cp [-r] source destination

Example:
cp file1 file2 将文件 file1 复制成 file2
cp file1 dir1 将文件 file1 复制到目录 dir1 下,文件名仍为 file1。
cp /tmp/file1 . 将目录 /tmp 下的文件 file1 复制到现行目录下,文件名仍为 file1。
cp /tmp/file1 file2 将目录 /tmp 下的文件 file1 复制到现行目录下,文件名为 file2□
cp -r dir1 dir2 (recursive copy) 复制整个目录。
若目录 dir2 不存在,则将目录 dir1,及其所有文件和子目录,复制
到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将
dir1,及其所有文件和子目录,复制为目录 dir2。

移动或更改文件、目录名称
========================
执行格式: mv source destination
Example:
mv file1 file2 将文件 file1,更改文件名为 file2。
mv file1 dir1 将文件 file1,移到目录 dir1 下,文件名仍为 file1。
mv dir1 dir2 若目录 dir2 不存在,则将目录 dir1,及其所有文件和子目录,移
到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将
dir1,及其所有文件和子目录,更改为目录 dir2。

建立新目录
==========
执行格式: mkdir directory-name
Exmaple :
mkdir dir1 建立一新目录 dir1。

删除目录
========
执行格式: rmdir directory-name 或 rm directory-name
Example :
rmdir dir1 删除目录 dir1,但 dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录 dir1,及其下所有文件及子目录。

删除文件
========

执行格式: rm filename (filename 可为文件名,或文件名缩写符号。)
Example :
rm file1 删除文件名为 file1 之文件。
rm file? 删除文件名中有五个字元,前四个字元为file 之所有文件。
rm f* 删除文件名中,以 f 为字首之所有文件。

文件名的缩写符号
==============

? 代表文件名称中之单一字元。
* 代表文件名称中之一字串。

列出目前所在之目录位置
======================
执行格式: pwd

查看文件内容

============
执行格式: cat filename
Example :
cat file1  以连续显示方式,查看文件名 file1 之内容。
执行格式: more filename 或 cat filename   more
Example :
more file1  以分页方式,查看文件名 file1 之内容。
cat file1   more 同上。

查看目录所占磁盘容量
====================
执行格式: du [-s] directory
Example :
du dir1 显示目录 dir1 的总容量及其次目录的容量(以 k byte 为容量)。
du -s dir1 显示目录 dir1 的总容量。
查看自己的 disk quota 使用状况
==============================
disk quota : 工作站磁盘空间的使用限额。
执行格式: quota -v
Example :
quota -v 将会显示下列讯息
Filesystem usage quota limit timeleft files quota limit timelef.
/home/ice/u01
9344 8192 12288 1.9 days 160 0 0
栏位解说:
usage : 目前的磁盘用量。
quota : 你的磁盘使用额度。当你的 usage 超过 quota 时,虽然可以继续使用,但是必须七天之内降到 quota 以下,否则即使用量没有超 limit(最高限额),也无法再写入或复制任何文件。
limit : 最高使用额度。当你的 usage 达到 limit 时,无法再写入或复制任何文件。

文件传输
========

.拷贝文件或目录至远端工作站
============================
执行格式: rcp [-r] source hostnome:destination
( source 可为文件名、目录名或路径,hostnome 为工作站站名,destination 为路径名称.

Example :
rcp file1 doc:/home/user
将文件 file1,拷贝到工作站 doc 路径 /home/user 之目录下。
rcp -r dir1 doc:/home/user
将目录 dir1,拷贝到工作站 doc 路径/home/user 之目录下。
.自远端工作站,拷贝文件或目录
===============================

执行格式: rcp [-r] hostname:source destination
( hostname 为工作站名,source 为路径名,destination 可为文件名、目录名或路径 )。
Example :
rcp doc:/home/user/file1 file2
将工作站 doc 中,位於 /home/user 目录下之目录 dir1,拷贝到目前工作站之目录下,
目录名称仍为 dir1。
rcp -r doc:/home/user/dir1 .
将工作站 iis1 中,位於 /home/user 目录下之目录 dir1,拷贝到目前工作站之目录下目录名称仍为 dir1。

.本地工作站与远端工作站之间文件传输
====================================
( 必须拥有远端工作站之帐号及密码,才可进行传输工作 )
执行格式: ftp hostname or ftp ip_address
Example :
ftp doc 与远端工作站 doc ,进行文件传输
Name (doc:user-name) : 输入帐号
Password (doc:user-name): 输入密码

ftp> help 列出 ftp 文件传输,可使用之任何命令。
ftp> !ls 列出本地工作站,目前目录下之所有文件名。
ftp> !pwd 列出本地工作站,目前所在之工作目录位置。
ftp> ls 列出远端工作站目前目录下之所有文件名。
ftp> dir 列出远端工作站目前目录下之所有文件名(略同於 UNIX 的 ls -l 指令).
ftp> dir .  more 同上,但每页会暂停(可能不适用 Unix 以外的 ftp)。
ftp> pwd 列出远端工作站目前所在之目录位置。
ftp> cd dir1 更改远端工作站之工作目录位置至 dir1 之下。
ftp> get file1 将远端工作站之文件 file1 ,拷贝到本地工作站中。
ftp> put file2 将本地工作站之文件 file2 ,拷贝到远端工作站中。
ftp> mget *.c 将远端工作站中,副文件名为 c 之所有文件,拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中,副文件名为 txt 之所有文件,拷贝远端工作站中。
ftp> prompt 切换交谈式指令(使用 mput/mget 时不用每个文件皆询问yes/no)。
ftp> quit 结束 ftp 工作。
ftp> bye 结束 ftp 工作。
注: 从PC与工作站间的文件传输也可通过在 PC端的 FTP指令进行文件传输,指令用法与
上所述大致相同。

文件模式之设定
==============
.改变文件或目录之读、写、执行之允许权
======================================
执行格式:chmod [-R] mode name
( name 可为文件名或目录名;mode可为 3 个 8 位元之数字,或利用ls -l 命令,列出文件或目录之读、写、执行允许权之文字缩写。)
mode : rwx rwx rwx r:read w:write x:execute
user group other
缩写 : (u) (g) (o)

Example :
%chmod 755 dir1
将目录dir1,设定成任何使用者,皆有读取及执行之权利,但只有拥有者可做修改。
%chmod 700 file1
将文件file1,设定只有拥有者可以读、写和执行。
%chmod o+x file2
将文件file2,增加拥有者可以执行之权利。
%chmod g+x file3
将文件file3,增加群组使用者可执行之权利。
%chmod o-r file4
将文件file4,除去其它使用者可读取之权利。

.改变文件或目录之拥有权
========================
执行格式:chown [-R] username name ( name 可为文件名或目录名。)

Example :
%chown user file1
将文件 file1 之拥有权,改为使用者 user 所有。
%chown -R user dir1
将目录 dir1,及其下所有文件和子目录之拥有权,改为使用者 user 所有。

检查自己所属之群组名称
======================
执行格式:groups

.改变文件或目录之群组拥有权
============================

执行格式:chgrp [-R] groupname name ( name 可为文件名或目录名 )
Example :
%chgrp vlsi file1
将文件 file1 之群组拥有权,改为 vlsi 群组。
%chgrp -R image dir1
将目录dir1,及其下所有文件和子目录,改为 image 群组。

.改变文件或目录之最后修改时间
==============================
执行格式:touch name ( name 可为文件或目录名称。)

文件之连结
==========
同一文件,可拥有一个以上之名称,可将文件做数个连结。
执行格式:ln oldname newname ( Hard link )
Example :
ln file1 file2   将名称 file2,连结至文件 file1。

执行格式:ln -s oldname newname ( Symblick link )
Example :
ln -s file3 file4 将名称 file4,连结至文件file3。

文件之字串找寻
==============
执行格式:grep string file
Example :
grep abc file1
寻找文件file1中,列出字串 abc 所在之整行文字内容。

找寻文件或命令之路径
====================
执行格式:whereis command ( 显示命令之路径。)
执行格式:which command ( 显示命令之路径,及使用者所定义之别名。)
执行格式:whatis command ( 显示命令功能之摘要。)
执行格式:find search-path -name filename -print
( 搜寻指定路径下,某文件之路径 。)
Example :
%find / -name file1 -print ( 自根目录下,寻找文件名为 file1 之路径。

比较文件或目录之内容

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

执行格式:diff [-r] name1 name2 ( name1 name2 可同时为文件名,或目录名称。)
Example :
%diff file1 file2
比较文件 file1 与 file2 内,各行之不同处。
%diff -r dir1 dir2
比较目录 dir1 与 dir2 内,各文件之不同处。

文件打印输出
============
使用者可用 .login 档中之 setenv PRINTER,来设定打印资料时的打印机名。
printername :sp1 或 sp2 (1005 教室)
Example :
%setenv PRINTER sp2 设定自 sp2 打印资料。

一般文件之打印
==============
执行格式:lpr [-Pprinter-name] filename
%lpr file1 或 lpr -Psp2 file1
自 sp2,打印文件 file1。

执行格式:enscript [-Pprinter-name] filename
%enscript file3 或 enscript -Psp1 file3
自 sp1 打印文件 file3。

.troff 文件之打印
==================
执行格式:ptroff [-Pprinter-name] [-man][-ms] filename
%ptroff -man /usr/local/man/man1/ptroff.1
以 troff 格式,自 Apple laser writer 打印 ptroff 命令之使用说明。

%ptroff -Psp2 -man /usr/man/man1/lpr1
以 troff 格式,自 sp2 打印 lpr 命令之使用说明。

打印机控制命令
==============

.检查打印机状态,及打印工作顺序编号和使用者名称
================================================
执行格式:lpq [-Pprinter -name]
%lpq 或 lpq -Psp1
检查 sp1 打印机之状态。
.删除打印机内之打印工作 ( 使用者仅可删除自己的打印工作 )
========================
执行格式:lprm [-Pprinter -name] username 或 job number
%lprm user 或 lprm -Psp1 user
删除 sp1 中,使用者 user 的打印工作,此时使用者名称必须为 user。
%lprm -Psp2 456
删除 sp2 编号为 456 之打印工作。

Job 之控制
===========
UNIX O.S.,可於 foregrourd 及 background 同时处理多个 process。
一般使用者执行命令时,皆是在 foreground 交谈式地执行 process,亦可将 process
置於 background 中,以非交谈式来执行 process。

.查看系统之 process
====================
执行格式:ps [-aux]
Example:
%ps 或 ps -x (查看系统中,属於自己的 process。)
%ps -au   (查看系统中,所有使用者的 process。)
%ps -aux   (查看系统中,包含系统内部,及所有使用者的 process。)

.结束或终止 process
====================
执行格式:kill [-9] PID ( PID 为利用 ps 命令所查出之 process ID。)
Example:
%kill 456 或 kill -9 456
终止 process ID 为 456 之 process。

.在 background 执行 process 的方式
===================================

执行格式:command amp; (於 command 后面加入一 “amp;” 符号即可。)
Example:
%cc file1.c amp;
将编译 file1.c 文件之工作,置於 background 执行。
执行格式:按下 “Control Z” 键,暂停正在执行的 process。键入 “bg” 命令命令,将所暂停的 process,置入 background 中继续执行。
Example:
%cc file2.c
^Z
Stopped
%bg

.查看正在 background 中执行的 process
======================================
执行格式:jobs

.结束或终止在 background 中的 process
======================================
执行格式:kill %n
(n 为利用 “jobs” 命令,所查看出的 background job 编号)
Example:
%kill % 终止在 background 中的第一个 job。
%kill %2 终止在 background 中的第二个 job。

shell varialbe
==============

.查看 shell variable 之设定值
==============================

执行格式:set    查看所有 shell variable 之设定值。
%set
执行格式:echo $variable-name 显示指定的 shell variable 之设定值。

%echo $PRINTER
sp1

.设定 shell variable
=====================

执行格式:set var = value
Example:
%set term=vt100
设定 shell variable “term” 为 VT100 终端机之型式。
.删除 shell variable
=====================
执行格式:unset var
Example:
%unset PRINTER
删除 shell variable “PRINTER” 之设定值。

environment variable
=====================

.查看 environment variable 之设定值
====================================

执行格式:setenv  查看所有 environment variable 之设定值。
Example: %setenv

执行格式:echo $NAME 显示指定的 environment variable “NAME” 之设定值。
Example:
%echo $PRINTER
显示 environment variable “PRINTER” 打印机名称之设定值。

.设定 environment variable
===========================
执行格式:setenv NAME word
Example:
%setenv PRINTER sp1
设定 environment variable “PRINTER” 打印机名称为 sp1。

.删除 environment variable
===========================

执行格式:unsetenv NAME
Example:
%unsetenv PRINTER
删除 environment variable “PRINTER” 打印机名称之设定值。

alias
=====
.查看所定义的命令之 alias
==========================

执行格式: alias 查看自己目前定义之所有命令,及所对应之 alias 名称。
执行格式: alias name 查看指定之 alias 名称所定义之命令。
Example:
%alias dir (查看别名 dir 所定义之命令)
ls -atl

.定义命令之 alias
==================
执行格式: alias name ‘command line’
Example:
% alias dir ‘ls -l’
将命令 “ls – l” 定义别名为 dir。

.删除所定义之 alias
====================
执行格式: unalias name
Example:
%unalias dir (删除别名为 dir 之定义。)
%unalias * (删除所有别名之设定。)

history
=======

.设定命令记录表之长度
======================

执行格式: set history = n
Example:
%set history = 40
设定命令记录表之长度为 40 (可记载执行过之前面 40 个命令)。

.查看命令记录表之内容
======================
执行格式: history

.使用命令记录表

================
执行格式: !!
Example: %!! (重覆执行前一个命令)
执行格式: !n ( n 为命令记录表之命令编号。)
Example: %!5 ( 执行命令记录表中第五个命令。)
执行格式: !string ( 重覆前面执行过以 string 为起始字元之命令。)
Example: %!cat ( 重覆前面执行过,以 cat 为起始字元之命令。)

.显示前一个命令之内容
======================
执行格式: !!:p
.更改前一命令之内容并执行之
============================

执行格式: ^oldstring ^newstring
将前一命令中 oldstring 的部份,改成 newstring,并执行之。

Example:
%find . -name file1.c -print
^file1.c^core
%find . -name core -print
注:文件 core 为执行程式或命令发生错误时,系统所产生的文件。作为侦错(debug)之□,因其所占空间极大,通常将之删除。  资料之压缩
==========
为了避免不常用的文件或资料,占用太大的磁盘空间,请使用者将之压缩。欲使用压缩过的文件或资料前,将之反压缩,即可还原成原来之资料型式。凡是经过压缩处理之文件,会在文件名后面附加 ” .Z ” 之字元,表示此为一压缩文件。

.压缩资料
==========
执行格式:compress filename 压缩文件
执行格式:compressdir directory-name 压缩目录

.解压缩还原资料
================
执行格式:uncompress filename     反压缩文件
执行格式:uncompressdir directory-name 反压缩目录

pipe-line 之使用
================
执行格式:command1   command2
将 command1 执行结果,送到 command2 做为 command2 的输入。
Example:
%ls -Rl   more
以分页方式,列出目前目录下所有文件,及子目录之名称。
%cat file1   more
以分页方式,列出文件 file1 之内容。

I/O control
===========
.标准输入之控制
================
执行格式:command-line < file
将 file 做为 command-line 之输入
Example:
%mail -s “mail test” user@iis.sinica.edu.tw filename
将 command 之执行结果,送至指定的 filename 中。
Example: %ls -l > list
将执行 “ls -l” 命令之结果,写入文件 list 中。
执行格式:command >! filename
同上,若 filename 之文件已经存在,则强迫 overwrite。
Example: %ls -lg >! list
将执行 “ls – lg” 命令之结果,强迫写入文件 list 中。
执行格式:command >amp; filename
将 command 执行时,萤幕上所产生的任何讯息,写入指定的 filename 中。
Example: %cc file1.c > error
将编译 file1.c 文件时,所产生之任何讯息,写入文件 error 中。
执行格式:command >> filename
将 command 执行结果,附加(append)到指定的 filename 中。
Example: %ls – lag >> list
将执行 “ls – lag” 命令之结果,附加(append)到文件 list 中。

执行格式:command >>amp; filename
将 command 执行时,萤幕上所产生的任何讯息,附加於指定的 filename中。
Example: %cc file2.c >> error
将编译 file2.c 文件时,萤幕所产生之任何讯息,附加於文件 error 中。

查看系统中的使用者:
===================
执行格式: who 或 finger
执行格式: w
执行格式: finger username or finger username@domainname
改变自己的 username 进入其他使用者的帐号,拥有其使用权利。

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

执行格式: su username
Example:
%su user 进入使用者 user 之帐号
passwrod: 输入使用者 user 之密码

查看 username:
==============

执行格式: who am i 查看 login 时,自己的 username。
执行格式: whoami 查看目前的 username。若已执行过 “su”命令(switch user),则显示出此 user 之 username。

查看目前系上所有工作站的使用者:
===============================
执行格式: rusers

=> 结束

与某工作站上的使用者交谈:
=========================
执行格式: talk username@hostname 或 talk username@ip_address
Example:
1. 可先利用 rusers 指令查看网路上的使用者
2. 假设自己的帐号是 u84987 ,在工作站 indian 上使用,现在想要与 doc 上的u84123 交谈。

%talk u84123@doc ==> 此时萤幕上将会出现等待画面
在对方(u84123)萤幕上将会出现下列讯息

Message from Talk_Daemon@Local_host_name at xx:xx
talk: connection requested by u84987@indian
talk: respond with: talk u84987@indian

此时对方(u84123) 必须执行 talk u84987@indian 即可互相交谈。
最后可按结束。

检查远端电脑系统是否正常
========================

执行格式:ping hostname 或 ping IP-Address
Example:
%ping doc
电子邮件(E-mail)的使用简介
==========================
本系之 E-mail address 为 ice.ntnu.edu.tw

..将文件当做 E-mail 的内容送出
=============================

执行格式:mail -s “Subject-string” username@address < filename%mail -s “program” user >test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。

删除、复制及搬移
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料搬移至第30行之后。

字串搜寻与取代
s(substitute)指令可搜寻某行列范围。
g(global)指令则可搜寻整个编辑缓冲区的资料。
s指令以第一个满足该条件的字串为其取代的对象,若该行有数个满足该条件的字串,也仅能取代第一个,若想取代所有的字串则需加上g参数。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。

..恢复编辑时被中断的文件
=======================

在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未被写回磁盘时,当再度回到系统,执行下列指令即可回复中断前的文件内容。
%vi -r filename

..编辑多个文件  =============

vi亦提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
当第一个文件编修完成后,可利用『:w』将该缓冲区存档,而后再利用 『:n』载入下一个文件。

Linux系统管理员网络安全经验谈

2011年08月26日

关于分区

一个潜在的黑客如果要攻击你的Linux服务器,他首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!

为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如 log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免 root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对Linux分区溢出的恶意攻击。

关于BIOS

记着要在BIOS设置中设定一个BIOS密码,不接收软盘启动。这样可以阻止不怀好意的人用专门的启动盘启动你的Linux系统,并避免别人更改BIOS设置,如更改软盘启动设置或不弹出密码框直接启动服务器等等。

关于口令

口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。

关于Ping

既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d /rc.local,以使每次启动后自动运行,这样就可以阻止你的系统响应任何从外部/内部来的ping请求。

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

关于Telnet

如果你希望用户用Telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写/etc /inetd.conf中的一行象下面这样:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login。

关于特权账号

禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。

为删除你系统上的用户,用下面的命令:userdel username

为删除你系统上的组用户帐号,用下面的命令:groupdel username

在终端上打入下面的命令删掉下面的特权用账号:

userdel adm

userdel lp

userdel sync

userdel shutdown

userdel halt

userdel mail

如果你不用sendmail服务器,就删除这几个帐号:

userdel news

userdel uucp

userdel operator

userdel games

如果你不用X windows 服务器,就删掉这个帐号。

userdel gopher

如果你不允许匿名FTP,就删掉这个用户帐号:

userdel ftp

关于su命令

如果你不想任何人能够su为root的话,你应该编辑/etc/pam.d/su文件,加下面几行:

auth sufficient /lib-

/security/pam_rootok-

.so debug

auth required /lib-

/security/pam_wheel-

.so group=isd

这意味着仅仅isd组的用户可以su作为root。如果你希望用户admin能su作为root.就运行下面的命令:

usermod -G10 admin

suid程序也是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为suid。用这个命令列出系统的suid二进制程序:

suneagle# find / -perm -4000 -print

你可以用chmod -s去掉一些不需要程序的suid位。

关于账户注销

如果系统管理员在离开系统时忘了从root注销,系统应该能够自动从shell中注销。那么,你就需要设置一个特殊的 Linux 变量“tmout”,用以设定时间。同样,如果用户离开机器时忘记了注销账户,则可能给系统安全带来隐患。你可以修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 编辑文件/etc/profile,在“histfilesize=”行的下一行增加如下一行:

tmout=600

则所有用户将在10分钟无操作后自动注销。注意:修改了该参数后,必须退出并重新登录root,更改才能生效。

关于系统文件

对于系统中的某些关键性文件如passwd、passwd.old、passwd._、shadow、shadown._、 inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 如将inetd文件属性改为600:

# chmod 600 /etc/inetd.conf

这样就保证文件的属主为root,然后还可以将其设置为不能改变:

# chattr +i /etc/inetd.conf

这样,对该文件的任何改变都将被禁止。 你可能要问:那我自己不是也不能修改了?当然,我们可以设置成只有root重新设置复位标志后才能进行修改:

# chattr -i /etc/inetd.conf

关于用户资源

对你的系统上所有的用户设置资源限制可以防止DoS类型攻击,如最大进程数,内存数量等。例如,对所有用户的限制, 编辑/etc/security/limits.con加入以下几行:

* hard core 0

* hard rss 5000

* hard nproc 20

你也必须编辑/etc/pam.d/login文件,检查这一行的存在:

session required /lib/security/pam_limits.so

上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。

关于NFS服务器

由于NFS服务器漏洞比较多,你一定要小心。如果要使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,不意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。你可以编辑文件/etc/exports并且加:

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

其中/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。最后为了让上面的改变生效,还要运行/usr/sbin/exportfs -a。

关于开启的服务

默认的linux就是一个强大的系统,运行了很多的服务。但有许多服务是不需要的,很容易引起安全风险。这个文件就是/etc /inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个: telnet和ftp,其它的类如shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth, etc. 除非你真的想用它。否则统统关闭之。

你先用下面的命令显示没有被注释掉的服务:

grep -v “#” /etc/inetd.conf

这个命令统计面前服务的总数:

ps -eaf|wc -l

需要提醒你的是以下三个服务漏洞很多,强烈建议你关闭它们:S34yppasswdd(NIS服务器)、S35ypserv(NIS服务器)和 S60nfs(NFS服务器)。

我们可以运行#killall -HUP inetd来关闭不需要的服务。当然,你也可以运行:

#chattr +i /etc/inetd.conf

如果你想使inetd.conf文件具有不可更改属性,而只有root 才能解开,敲以下命令:

#chattr -i /etc/inetd.conf

当你关闭一些服务以后,重新运行以上命令看看少了多少服务。运行的服务越少,系统自然越安全了。我们可以用下面命令察看哪些服务在运行:

netstat -na –ip

如果你用的是Redhat那就方便多了。^_^ Redhat提供一个工具来帮助你关闭服务,输入/usr/sbin/setup,然后选择”system services”,就可以定制系统启动时跑哪些服务。另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。

关于日志

所有的日志都在/var/log下(仅对linux系统而言),默认情况下 linux的日志就已经很强大了,但除ftp外。因此我们可以通过修改/etc/ftpaccess 或者/etc/inetd.conf,来保证每一个ftp连接日志都能够纪录下来。下面是一个修改inetd.conf的例子,假如有下一行:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

注释:

-l每一个ftp连接都写到syslog;

-L纪录用户的每一个命令;

-i文件received,纪录到xferlog;

-o文件transmitted,记录到xferlog。

不过你也不要太相信日志,因为绝大部分黑客都有“擦脚印”的“好”习惯啰!如果你不放心,最好安装一个Sniffer吧。

关于TCP_WRAPPERS

默认的,Redhat Linux允许所有的请求,这是很危险的。如果用TCP_WRAPPERS来增强我们站点的安全性简直是举手之劳,你可以将禁止所有的请求放入“ALL: ALL”到/etc/hosts.deny中,然后放那些明确允许的请求到/etc/hosts.allow中,如:

sshd: 192.168.1.10/255.255.255.0 gate.openarch.com

对IP地址192.168.1.10和主机名gate.openarch.com,允许通过 ssh连接。配置完了之后,用tcpdchk检查,你可以直接执行:tcpdchk 。在这里,tcpchk是TCP_Wrapper配置检查工具,它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。

关于补丁

你应该经常到你所安装的Linux系统发行商的主页上去找最新的补丁。例如:对于 Redhat系统而言可以在:http://www.redhat.com/corp/support/errata/上找到补丁。幸运的是,在 Redhat系列的版本带有一个自动升级工具yum,它能自动够测定哪些rpm包需要升级,然后自动从Redhat的站点下载并完成安装。

Linux系统管理员模拟试卷

2011年08月26日

笔试题

1、Linux操作系统内核创始人是( c )

A.Bill Gates B.Richard Stallman C.Linus Torvalds D.Dennis M.Ritchie

2、在linux中有关IDE设备命名编号正确的有( d )

A.sda 第一个IDE控制器,主设备 B.sdb 第二个IDE控制器,次设备

C.hdb 第二个IDE控制器,主设备 D.had 第一个IDE控制器,主设备

3、Linux网络安装时( ad )。(多选)

A.PXE网卡芯片一定要可得 B.必须要有光盘安装介质

C.必须是采用FTP方式 D.安装服务器上一定要有相应的映像文件

4、ls命令( abd )。(多选)

A.-a可显示当前目录内的所有文件

B.与dir命令类似

C.-A与-a功能相同,但显示的文件更多

D.-d当遇到目录时列出目录本身而非目录内的文件

5、使普通用户可执行超级用户文件的命令是( c )

A.chmod +v B.usermod +v C.chmod +s D.usermod +s

6、以下对于scp错误的是( bd )。(多选)

A.只能用于主机之间的数据拷贝 B.只能在开启ssh服务的基础上工作

C.拷贝时必须输入密码 D.数据传输是通过加密通道来完成

7、利用命令find查找当前目录下的名称尾为.c 的文件,并将结果输出到标准输出的命令是( d )

A.find . –name “?.c” –print B.find . –name “#.c” –print

C.find . –name “!*.c” –print D.find . –name “*.c” –print

8、为了将当前目录下的归档文件myftp.tgz解压缩到/tmp目录下,用户可以使用命令( a )

A.tar xvzf myftp.tgz –C /tmp B.tar xvzf myftp.tgz –R /tmp

C.tar vzf myftp.tgz –X /tmp D.tar xvzf myftp.tgz /tmp

9、以下哪种不是Linux的Shell类型(c )

A.bash B.ksh C.rsh D.csh

10、改变bash的提示符实际上就是改变变量( c )

A.$HOME B.$PWD C.$PS1 D.$PS2

11、以下哪几种是vi的工作模式( acd )。(多选)

A.命令模式 B.删除模式 C.编辑模式 D.末行模式

12、在vi中,5G表示( b )

A.将光标移到第n行的行尾 B.将光标移到第n行的行首

C.将光标移到本行的第五个字符前 D.将光标移到本行的第五个字符后

13、临时注销一个用户,可以直接修改/etc/shadow文件,即在该用户口令前加( ada )

A.! B.# C.% D.*

14、如果需要新建一个用户blue,但其密码由该客户第一次登录进系统后修改,可使用哪个命令( a )

A.useradd –p “” bule B.#useradd -R “” blue

C.#adduser -o “” blue D.#adduser -u “” blue

15、所有用户登录的缺省配置文件是( b )

A./etc/profile B./etc/login.defs C./etc/.login D./etc/.logout

16、以下哪项不属于linux二进制发布软件包的特点?( d )

A.在安装时不需要用户重新编译

B.不同的平台需要相应的包

C.缺乏灵活性

D.可以对软件的源代码保密

17、在rpm命令中,安装新的RPM包软件使用的参数是(a )

A. -i B. -v C. -h D.-e

18、在Linux操作系统中的/etc/passwd文件包括的基本选项有( acd )。(多选)

A.用户ID B.加密的密码值 C.用户登录Shell E.用户登录目录

19、在安装mysql_4.1.7_4.RHEL4.1.i386.rpm软件包时,需要忽略检查依赖关系,正确的rpm命令格式是( d )

A. rpm -ivh –ndp mysql_4.1.7_4.RHEL4.1.i386.rpm

B. rpm -ivh –ndps mysql_4.1.7_4.RHEL4.1.i386.rpm

C. rpm -ivh –nodep mysql_4.1.7_4.RHEL4.1.i386.rpm

D. rpm -ivh –nodeps mysql_4.1.7_4.RHEL4.1.i386.rpm

20、安装源代码发布软件包时,在使用./configure命令配置时,如果需要将软件安装到指定的目录,可以使用参数(a )

A.–prefix B.–directory C.–temporary D.–install

21、Linux系统中存放加密用户帐号信息的文件是( b )

A./etc/passwd B./etc/shadow C./etc/group D./etc/securetty

22、以下关于GRUB的描述错误的是(d )

A.GRUB可以代替LILO来完成对Linux的引导

B.只要硬盘工作在LBA模式下,GRUB就可以引导根分区在8G以外的操作系统

C.GRUB可支持如bash或doskey一样的历史功能

D.GRUB只能支持640*480分辨率的开机画面

23、在LILO:的提示符下,如果要查看操作系统列表,可按下键盘的( b )。

A.Insert键 B.TAB键 C.Shift键 D.Ctrl键

24、不能作为Linux根分区的分区类型有( d )

A.ext3 B.reiserfs C.ext2 D.ntfs

25、下面关于passwd命令说法不正确的是( d )

A.普通用户可以利用passwd命令修改自己的密码

B.超级用户可以利用passwd命令修改自己和其他用户的密码

C.普通用户不可以利用passwd命令修改其他用户的密码

D.普通用户可以利用passwd命令修改自己和其他用户的密码

26、普通用户的ID一般是( b )

A.>100 B.>500 C.>1000 D.>0

27、以下关于parted分区工具描述正确的是(d)

A.parted可以在DOS下运行

B.parted不能移动分区

C.parted不能复制分区

D.parted对分区的任何改变回立即写到硬盘中

28、在du命令中,使用友好的方式显示信息的参数是(a)

A.-h B.-f C.-a D.-t

29、磁盘配额是(c )

A.限制系统用户使用磁盘 B.限制超级用户使用磁盘

C.限制普通用户使用磁盘 D.限制虚拟用户使用磁盘

30、启用配额的命令是( ab )(多选)

A.usrquota B.grpquota C.rootquota D.userquota

31、X-Windows System的特点是( bcd )。(多选)

A.与生产者有关 B.具可携性

C.对彩色掌握的多样性 D.对网络之间的操作透通性

32、quotacheck是( ab )

A.检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

B.创建启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

C.修改启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

D.删除启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

33、启动x_windows的命令是( a )

A、start B、startx C、begin D、beginx

机考题

1、建立以下用户、组属性及口令文件

(1)、建立用户smith

(2)、建立组名sysadm

(3)、john把mail作为其第二组名

(4)、smith具有口令654321

2、磁盘配额配置

A.在/home配置磁盘配额

B.为用户tom分配1000KB的软配额限制、2000KB的硬配额限制

C.重新引导系统时配额文件可以一直生效

3、文件拷贝及相关问题

A、建立目录/option1

B、在目录/option1下生成一空文件empty,该文件拥有者为jack

C、复制该文件给/tmp目录下的empty1文件,保留该文件的所有属性

D、软链接该文件到/tmp目录下的soft文件

4.磁盘分区(实验)

A。建立一个200M的新分区

B。格式化分区文件类型为EXT3

C。系统引导时自动挂接到/newfs

5、X-windows问题

A、将桌面从GNOME改成KDE

B、系统的启动运行级别调整为3

C、将桌面分辨率调整为1024*768

答案

一、笔试题

1.C 2.D 3.AD 4.ABD 5.C

6.BD 7.D 8.A 9.C 10.C

11.ACD 12.B 13.AD 14.A 15.B

16.D 17.A 18.ACD 19.D 20.A

21.B 22.D 23.B 24.D 25.D

26.B 27.D 28.A 29.C 30.AB

31.BCD 32.AB 33.A

二、机考题

1、 A. useradd smith

B. groupadd sysadm

C.useradd -G mail john

D.passwd smith

(连续两次按提示输入密码)

2、 A. quotacheck -augv /home

B. edquota -u tom

(把soft,hard改成1000和2000)

C. vi /etc/fstab

在/home列添加,结果如下:

LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2

3、 A. mkdir /option1

B. cd /option1

touch empty

chown jack empty (如无jack用户,需useradd jack)

C. cp -p empty /tmp/empty1

D. ls -sf empty /tmp/soft

4、 A. fdisk /dev/hda (假设本地磁盘设备文件名为hda)

(使用n命令添加200M的新分区,使用w命令保存设备分区表)

B. mkfs -t ext2 /dev/hda5 (假设/dev/hda5为新建分区)

C. vi /etc/fstab

(若无/newfs目录,则先创建:mkdir /newfs)

/dev/hda5 /newfs ex2 defaults 1 2

5、 A. 编辑/etc/sysconfig/desktop (由GNOME改成KDE)

DESKTOP=”KDE”

B. 编辑/etc/inittab (由id的5改成3)

id: 3: initdefault:

C. 编辑/etc/X11/xorg.conf (在screen选项Modes中加1024×768)

Linux模拟试题及答案

2011年08月26日

一.填空题:

1. 在Linux系统中,以 文件 方式访问设备 。

2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。

3. Linux文件系统中每个文件用 i节点 来标识。

4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。

5. 链接分为: 硬链接 和 符号链接 。

6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。

7. 某文件的权限为:drw-r–r–,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。

8. 前台起动的进程使用 Ctrl+c 终止。

9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。

10. 网络管理的重要任务是: 控制 和 监控 。

11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。

13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限。

14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。

15. 系统交换分区是作为系统 虚拟存储器 的一块区域。

16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。

17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作。

18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和 子网掩码 等必要信息。

19. 唯一标识每一个用户的是用户 ID 和用户名。

20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。

21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 。

22. DHCP可以实现动态 IP 地址分配。

23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。

24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。

25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 。

26 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。

27. vi编辑器具有两种工作模式: 命令模式 和 输入模式 。

28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文件所有者 对该文件的权限。

29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。

30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。

31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序。

32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份。

33. CD-ROM标准的文件系统类型是 iso9660 。

34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。

35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。

36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat 。

37. 设定限制用户使用磁盘空间的命令是 quota 。

38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。

39. 硬连接只能建立对 文件 链接。符号链接可以跨不同文件系统创建。

40. 套接字文件的属性位是 s 。

41. 结束后台进程的命令是 kill 。

42. 进程的运行有两种方式,即 独立运行和使用父进程运行 。

43. Links分为 硬链接和符号链接 。

44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。

45. 管道文件的属性位是 p 。

46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。

47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename 。

48. 进行远程登录的命令是 telnet 。

49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 。

50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件。

51. Apache服务器进程配置文件是 httpd.conf 。

52.在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。

53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。

54 可以在标准输出上显示整年日历的命令及参数是 cal -y 。

55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。

56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 。

57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。

58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。

59 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。

60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb 。

61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 。

62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。

63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。

64. 在vi编辑环境下,使用 Esc键 进行模式转换。

65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成。

66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf /home/wang.tar.gz /home/stud1/wang 。

67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 。

68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf 文件。

69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab 。

70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录。

71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。

72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。

73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid 。

74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。

75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名。

linux模拟试题及答案(四)

* http://www.hozoo.com.cn
* 网络资源
* 2010-5-10
* 点击次数:83
* [大 中 小]
* [进入论坛]

76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 。

77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议来实现。

78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。

79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问。

80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash是Linux的缺省shell。

81. 用 >;>; 符号将输出重定向内容附加在原文的后面。

82. 增加一个用户的命令是:adduser 或useradd 。

83 进行字符串查找,使用grep命令。

84. 使用 * 每次匹配若干个字符。

85. /sbin 目录用来存放系统管理员使用的管理程序。

二.单项选择题:

1. 下面的网络协议中,面向连接的的协议是: A 。

A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议

2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。

A defaults B sw C rw和ro D noauto

3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C 。

A 文件类型 B 文件所有者的权限

C 文件所有者所在组的权限 D 其他用户的权限

4. 终止一个前台进程可能用到的命令和操作 B 。

A kill B ;+C C shut down D halt

5.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。

A -m B -d C -f D -p

6. 下面关于i节点描述错误的是 A 。

A i节点和文件是一一对应的

B i节点能描述文件占用的块数

C i节点描述了文件大小和指向数据块的指针

D 通过i节点实现文件的逻辑结构和物理结构的转换

7. 一个文件名字为rr.Z,可以用来解压缩的命令是: D 。

A tar B gzip C compress D uncompress

8. 具有很多C语言的功能,又称过滤器的是 C 。

A csh

B tcsh

C awk

D sed

9. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。

A 配置域名服务器

B 定义一条本机指向所在网络的路由

C 定义一条本机指向所在网络网关的路由

D 定义一条本机指向目标网络网关的路由

10. 建立动态路由需要用到的文件有 D 。
A /etc/hosts B /etc/HOSTNAME C /etc/resolv.conf D /etc/gateways

11. 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问 172.16.1.0/24网络时,其路由设置正确的是 B 。

A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1

B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1

C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1

D route add default 192.168.1.0 netmask 172.168.1.1 metric 1

12. 下列提法中,不属于ifconfig命令作用范围的是 D 。

A 配置本地回环地址 B 配置网卡的IP地址

C 激活网络适配器 D 加载网卡到内核中

13. 下列关于链接描述,错误的是 B 。

A 硬链接就是让链接文件的i节点号指向被链接文件的i节点

B 硬链接和符号连接都是产生一个新的i节点

C 链接分为硬链接和符号链接 D 硬连接不能链接目录文件

14. 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。

A 主机IP设置有误

B 没有设置连接局域网的网关

C 局域网的网关或主机的网关设置有误

D 局域网DNS服务器设置有误

15. 下列文件中,包含了主机名到IP地址的映射关系的文件是: B 。

A /etc/HOSTNAME B /etc/hosts C /etc/resolv.conf D /etc/networks

16. 不需要编译内核的情况是 D 。

A 删除系统不用的设备驱动程序时 B 升级内核时

C 添加新硬件时 D 将网卡激活

17. 在shell中变量的赋值有四种方法,其中,采用name=12的方法称 A 。

A 直接赋值 B使用read命令

C 使用命令行参数 D使用命令的输出

18. D 命令可以从文本文件的每一行中截取指定内容的数据。

A cp B dd C fmt D cut

19. 下列不是Linux系统进程类型的是 D 。

A 交互进程 B 批处理进程 C 守护进程 D 就绪进程

20.配置Apache 1.3.19服务器需要修改的配置文件为___A______

A httpd.conf B access.conf C srm.conf D named.conf

21. 内核不包括的子系统是 D 。

A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统

22. 在日常管理中,通常CPU会影响系统性能的情况是: A 。

A CPU已满负荷地运转 B CPU的运行效率为30%

C CPU的运行效率为50% D CPU的运行效率为80%

23. 若一台计算机的内存为128MB,则交换分区的大小通常是 C 。

A 64MB B 128MB C 256MB D 512MB

24. 在安装Linux的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是 D 。

A full B expert C newbie D menu

25. Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 C 命令。

A cat B more C less D menu

26. 下列信息是某系统用ps –ef命令列出的正在运行的进程, D 进程是运行Internet超级服务器,它负责监听Internet sockets上的连接,并调用合适的服务器来处理接收的信息。

A root 1 4.0 0.0 344 204? S 17:09 0:00 init

B root 2 0.0 0.1 2916 1520? S 17:09 0:00 /sbin/getty

C root 3 0.0 0.2 1364 632? S 17:09 0:00 /usr/sbin/syslogd

D root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd

27.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。

A telnet B FTP C SNMP D NFS

28.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 C 。

A ping B ifconfig C traceroute D netstat

29.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 D 。

A -rwxr-xr-x B -rwxr–r– C -r–r–r– D -r-xr-x—x

30. 在i节点表中的磁盘地址表中,若一个文件的长度是从磁盘地址表的第1块到第11块,则该文件共占有 B 块号。

A 256 B 266 C 11 D 256×10

31. 用ls –al 命令列出下面的文件列表, D 文件是符号连接文件。

A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello

B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey

C drwxr–r– 1 hel users 1024 Sep 10 08:10 zhang

D lrwxr–r– 1 hel users 2024 Sep 12 08:12 cheng

32. DNS域名系统主要负责主机名和 A 之间的解析。

A IP地址 B MAC地址 C 网络地址 D 主机别名

33. WWW服务器是在Internet上使用最为广泛,它采用的是 B 结构。

A 服务器/工作站 B B/S C 集中式 D 分布式

34.Linux系统通过 C 命令给其他用户发消息。

A less B mesg y C write D echo to

35.NFS是 C 系统。

A 文件 B 磁盘 C 网络文件 D 操作

36. B 命令可以在Linux的安全系统中完成文件向磁带备份的工作。

A cp B tr C dir D cpio

37.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在 C 目录中。

A /bin B /etc C /dev D /lib

38.在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用 D 命令实现。

A # reboot B # halt C # reboot D # shutdown –r now

39.网络管理具备以下几大功能:配置管理、 A 、性能管理、安全管理和计费管理等。

A 故障管理 B 日常备份管理 C 升级管理 D 发送邮件

40.关于代理服务器的论述,正确的是 A 。

A 使用internet上已有的公开代理服务器,只需配置客户端。

B 代理服务器只能代理客户端http的请求。

C 设置好的代理服务器可以被网络上任何主机使用。

D 使用代理服务器的客户端没有自己的ip地址。

41.关闭linux系统(不重新启动)可使用命令 B 。

A Ctrl+Alt+Del B halt C shutdown -r now D reboot

42.实现从IP地址到以太网MAC地址转换的命令为: C 。

A ping B ifconfig C arp D traceroute

43.在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。

A ; B ; C ; D A

44.在vi编辑器中的命令模式下,删除当前光标处的字符使用 A 命令。

A ; B ;; C ; D ;;

45.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。

A 上箭头 B 下箭头 C ; D ;

46.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为 A 。

-rwxr-xr– 1 root root 599 Cec 10 17:12 ff

A 普通文件 B 硬链接 C 目录 D 符号链接

47.删除文件命令为: D 。

A mkdir B rmdir C mv D rm

48.在下列的名称中,不属于DNS服务器类型的是:C

A Primary Master Server B Secondary Master Server

C samba D Cache_only Server

49.网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在 A 文件中体现。

A httpd.conf B lilo.conf C inetd.conf D resolv.conf

50.邮件转发代理也称邮件转发服务器,它可以使用SMTP协议,也可以使用 C 协议。

A FTP B TCP C UUCP D POP

51.启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。

A /usr/sbin/smbd B /usr/sbin/nmbd C rc.samba D /etc/inetd.conf

52.DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配 ___D______地址。

A 网络 B MAC C TCP D IP

53.为了保证在启动服务器时自动启动DHCP进程,应将 A文件中的dhcpd=no改为dhcpd=yes。

A rc.inet1 B lilo.conf C inetd.conf D httpd.conf

54.对文件进行归档的命令为 D 。

A dd B cpio C gzip D tar

55.改变文件所有者的命令为 C 。

A chmod B touch C chown D cat

56.在给定文件中查找与设定条件相符字符串的命令为: A 。

A grep B gzip C find D sort

57.建立一个新文件可以使用的命令为 D 。

A chmod B more C cp D touch

58.在下列命令中,不能显示文本文件内容的命令是: D 。

A more B less C tail D join

59.在使用匿名登录ftp时,用户名为 B 。

A users B anonymous C root D guest

60.在实际操作中,想了解命令logname 的用法,可以键入 D 得到帮助。

A logname –man B logname/? C help logname D logname –help

61.如果LILO被安装在MBR,使用 A 命令即可卸载LILO。

A lilo –u B lilo –c C lilo –v D lilo -V

62.当用命令ls –al查看文件和目录时,欲观看卷过屏幕的内容,应使用组合键 D 。

A Shift+Home B Ctrl+ PgUp C Alt+ PgDn D Shift+ PgUp

63.mc是UNIX风格操作系统的 C 。

A 文件编辑器/程序编译器 B 配置网络的窗口工具

C 目录浏览器/文件管理器 D Samba服务器管理工具

64.i节点是一个 D 长的表,表中包含了文件的相关信息。

A 8字节 B 16字节 C 32字节 D 64字节

65.文件权限读、写、执行的三种标志符号依次是 A 。

A rwx B xrw C rdx D srw

66.Linux 文件名的长度不得超过 C 个字符。

A 64 B 128 C 256 D 512

67.进程有三种状态: C 。

A 准备态、执行态和退出态 B 精确态、模糊态和随机态

C 运行态、就绪态和等待态 D 手工态、自动态和自由态

68. 从后台启动进程,应在命令的结尾加上符号 A 。

A & B @ C # D $

69. B 不是邮件系统的组成部分。

A 用户代理 B 代理服务器 C 传输代理 D 投递代理

70.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是 D 。

A fold B join C tr D read

71.crontab文件由六个域组成,每个域之间用空格分割,其排列如下: B 。

A MIN HOUR DAY MONTH YEAR COMMAND

B MIN HOUR DAY MONTH DAYOFWEEK COMMAND

C COMMAND HOUR DAY MONTH DAYOFWEEK

D COMMAND YEAR MONTH DAY HOUR MIN

72.用ftp进行文件传输时,有两种模式: C 。

A Word和binary B .txt和Word Document

C ASCII和binary D ASCII和Rich Text Format

73.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为 D 。

A 467 B 674 C 476 D 764

74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件。

A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill –HUP 53

75.Apache服务器默认的接听连接端口号是 C 。

A 1024 B 800 C 80 D 8

76.PHP和MySQL的联合使用解决了 C 。

A 在Proxy上处理数据库的访问问题 B 在WWW服务器上处理黑客的非法访问问题

C 在WWW服务器上处理数据库的访问问题

D 在Sendmail邮件系统上处理数据库的访问问题

77.OpenSSL是一个 A 。

A 加密软件 B 邮件系统 C 数据库管理系统 D 嵌入式脚本编程语言

78.Samba服务器的配置文件是 D 。

A httpd.conf B inetd.conf C rc.samba D smb.conf

79.关于DNS服务器,叙述正确的是 D 。

A DNS服务器配置不需要配置客户端

B 建立某个分区的DNS服务器时只需要建立一个主DNS服务器

C 主DNS服务器需要启动named进程,而辅DNS服务器不需要

D DNS服务器的root.cache文件包含了根名字服务器的有关信息

80.退出交互模式的shell,应键入 C 。

A ; B ^q C exit D quit

81.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是 B 。

A root@l04.edu.cn:~#mount dev/had1 /winsys

B root@l04.edu.cn:~#mount /dev/had1 /winsys

C root@l04.edu.cn:~#mount /dev/had1 winsys

D root@l04.edu.cn:~#mount dev/had1 winsys

82.设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为 B 。

A /home B /root C /home/root D /usr/local

83.字符设备文件类型的标志是 B 。

A p B c C s D l

84.将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下的命令是 C 。

A mount /mnt/cdrom B mount /mnt/cdrom /dev/hdc

C mount /dev/hdc /mnt/cdrom D mount /dev/hdc

85.将光盘/dev/hdc卸载的命令是 A 。

A umount /dev/hdc B unmount /dev/hdc

C umount /mnt/cdrom /dev/hdc D unmount /mnt/cdrom /dev/hdc

86.在/home/stud1/wang目录下有一文件file,使用 D 可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。

A cat file >;file.copy B cat >;file.copy C cat file file.copy & D cat file >;file.copy &

87.在DNS配置文件中,用于表示某主机别名的是: B 。

A NS B CNAME C NAME D CN

88.可以完成主机名与IP地址的正向解析和反向解析任务的命令是: A 。

A nslookup B arp C ifconfig D dnslook

89.下列变量名中有效的shell变量名是: C 。

A -2-time B _2$3 C trust_no_1 D 2004file

90.qmail是 B 。

A 收取邮件的协议 B 邮件服务器的一种 C 发送邮件的协议 D 邮件队列

91.已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是 C 。

A cd test B cd /stud1/test C cd stud1/test D cd home

92.已知某用户stud1,其用户目录为/home/stud1。分页显示当前目录下的所有文件的文件或目录名、用户组、用户、文件大小、文件或目录权限、文件创建时间等信息的命令是 D 。

A more ls –al B more –al ls C more ;>; /backup/bak01.txt

50 17 * * * tar zcvf backup.tar.gz /data

55 17 * * * umount /dev/hdc

(3)由超级用户登录,用crontab执行 prgx文件中的内容:

root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。

6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式 yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。

参考答案:

(1)编写shell程序fileback:

#!/bin/sh

DIRNAME=`ls /root | grep bak`

if [ -z "$DIRNAME" ] ; then

mkdir /root/bak

cd /root/bak

fi

YY=`date +%y`

MM=`date +%m`

DD=`date +%d`

BACKETC=$YY$MM$DD_etc.tar.gz

tar zcvf $BACKETC /etc

echo “fileback finished!”

[NextPage]

(2)编写任务定时器:

echo “0 0 1 * * /bin/sh /usr/bin/fileback” >; /root/etcbakcron

crontab /root/etcbakcron

或使用crontab -e 命令添加定时任务:

0 1 * * * /bin/sh /usr/bin/fileback

7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

参考答案:(1)第一种方法:

用户应使用crontab –e 命令创建crontab文件。格式如下:

0 0 * * sun cp –r /user/backup /tmp

(2)第二种方法:

用户先在自己目录下新建文件file,文件内容如下:

0 * * sun cp –r /user/backup /tmp

然后执行 crontab file 使生效。

8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

参考答案: 建立程序 Pro16如下:

#!/bin/sh

i=1

while [ i -le 50 ]

do

if [ -d /userdata ];then

mkdir -p /userdata/user$i

chmod 754 /userdata/user$i

echo “user$i”

let “i = i + 1″ (或i=$(($i+1))

else

mkdir /userdata

mkdir -p /userdata/user$i

chmod 754 /userdata/user$i

echo “user$i”

let “i = i + 1″ (或i=$(($i+1))

fi

done

五、多选题

1.关于硬链接的描述正确的(BE)。

A 跨文件系统 B不可以跨文件系统 D可以做目录的连接

C 为链接文件创建新的i节点 E链接文件的i节点同被链接文件的i节点

2.在网站发布用户wang的个人网页时,需要创建用户网页目录,假定用户网页目录设定为web

(用户目录在/home目录下),如下描述正确的是(BCE)

A 存放用户网页的绝对路径/wang/web B存放用户网页的目录~wang/

C 存放用户网页的绝对路径/home/wang/web D存放用户网页的绝对路径/home/web

E 在本机访问用户wang的个人网页的URL地址http://localhost/~wang/

3.在一台WWW服务器上将端口号设定为8000,默认的网页文件index.html,服务器网页的根目录/www。在本机访问服务器时,正确的用法是(BDE)

A 浏览器访问该服务器的URL地址http://localhost/

B 浏览器访问该服务器的URL地址http://localhost:8000/

C 浏览器访问该服务器的用户li网页URL地址http://localhost/~li

D 浏览器访问该服务器的用户li网页URL地址http://localhost:8000/~li

E 浏览器访问该服务器的URL地址localhost:8000/

4.在shell编程中关于$2的描述正确的是(CE)

A 程序后携带了两个位置参数 B 宏替换 C 程序后面携带的第二个位置参数

D 携带位置参数的个数 E 用$2引用第二个位置参数

5.某文件的权限是 – r w x r – – r- -,下面描述正确的是(CD)

A 文件的权限值是755 B 文件的所有者对文件只有读权 限

C 文件的权限值是 744 D 其他用户对文件只有读权限 E同组用户对文件只有写权限

6.关于OpenSSH的作用的描述正确的是(ACE)

A 开放源代码的安全加密程序 B OpenSSH常用于为http协议加密

C OpenSSH用于提高远程登录访问的安全性 D 它和telnet实用同样的端口号

E OpenSSH是免费下载的应程序

7.关于NFS服务器描述正确的是(BC)

A 网络中实现Windows系统之间文件系统共享的应用软件

B 网络中实现Linux系统之间文件系统共享的应用软件

C 网络中实现Unix系统之间文件系统共享的应用软件

D 网络中实现Windows系统和Unix之间文件系统共享的应用软件

E 网络中实现Windows系统和Linux之间文件系统共享的应用软件

8.关于sed描述正确的是(ABD)

A sed 是Linux系统中的流编辑器 B sed 是UNIX系统中的流编辑器

C sed 网络文件系统的类型

D 利用管道对标准输入/标准输入的数据进行编辑和组合

E sed是NFS的应用程序

9.关于限制磁盘限额,描述正确的是(ABD)

A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户

B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和

C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合

D 在Linux系统下限制用户使用的磁盘空间可以使用edquota

E 用户组的磁盘限额就是该用户组内拥有最大磁盘限额值的用户的磁盘限额

10.关于建立系统用户的正确描述是()

A 在Linux系统下建立用户使用adduser命令

B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录

C 访问每个用户的工作目录使用命令“cd /用户名”

D 每个系统用户在默认状态下的工作目录在/home/用户名

E 每个系统用户在/etc/fstab文件中有一条记录

10个最酷的Linux单行命令

2011年08月26日

1. sudo !!以 root 帐户执行上一条命令。
2. python -m SimpleHTTPServer利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。
3. :w !sudo tee %在 Vim 中无需权限保存编辑的文件。
4. cd -更改到上一次访问的目录。
5. ^foo^bar将上一条命令中的 foo 替换为 bar,并执行。
6. cp filename{,.bak}快速备份或复制文件。
7. mtr google.comtraceroute + ping。
8. !whatever:p搜索命令历史,但不执行。
9. $ssh-copy-id user@host将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
10. ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg把 Linux 桌面录制为视频。


加关注

Get every new post delivered to your Inbox.