十四、你认为在系统调优方面都包括哪些工作,以linux为例,请简明阐述,并举一些参数
为例。
答案:
系统调优包括内核参数优化和应用优化2个方面,对方只要从这两方面来说,就可以了,
尽量能有些经验的阐述。
有个文件如下:
要求:
得到主机名(和域名),并统计哪个网址出现的次数,并排序。
可以shell或C。
得到的结果应该是:
3
2
1
[root@mail~]#awk‘BEGIN{FS=”/”}{arr[$3]++}END{for(iinarr)print
arr[i],i}’list|sortr 答案
3
2
1
挂载windows的共享目录?
mount.cifs//IP/SHARElinux的目录verboseouser=username<这个用户是
windows下的用户verbose这个参数可以不加,它是显示过程的
例如mount.cifs//10.1.1.246/gongxiang/mntverboseouser=gao
或者是mounttcifs
umount/mnt或umount.cifs/mntl<取消挂载
图形界面:
smb:
//IP
AB 网络是通的,最少列出五种传输文件的服务
nfs,ftp,scp,rsync,samba,http:
//
1.假设Apache产生的日志文件名为access_log,在apache正在运行时,执行命令mv
access_logaccess_log.bak,执行完后,请问新的apache的日志会打印到哪里,为什么?
新的日志会打印在access_log.bak中,因为apache启动时会找到access_log文件,
随时准备向文件中加入日志信息,
虽然此时文件被改名,但是由于服务正在运行,因为它的inode节点的位置没有变,程序
打开的fd仍然会指向原来那个inode,
不会因为文件名的改变而改变。
apache会继续向已改名的文件中追加日志,但是若重启
apache服务,系统会检查access_log
文件是否存在,若不存在则创建。
2.在Shell环境下,如何查看远程Linux系统运行了多少时间?
2、监控主机执行:
sshuser@被监控主机ip"uptime"
这样得到了被监控主机的uptime
3.处理以下文件内容,将域名取出并进行计数排序,如处理:
得到如下结果:
域名的出现的次数 域名
3
2
1
可以使用bash/perl/php/c任意一种
3、[root@localhostshell]#catfile|sede's/http:
\/\///'e's/\/.*//'|sort|
uniqc|sortrn
3
2
1
[root@codfei4shell]#awkF/'{print$3}'file|sortr|uniqc|awk'{print
$1"\t",$2}'
3
2
1
4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如
把0123456789作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为
130246,可使用bash/perl/php/c任意一种.
4、[root@localhost~]#awkvcount=6'BEGIN
{srand();str="0123456789";len=length(str);for(i=count;i>0;i)
marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i)
printf("%c",marry[i]);printf("\n");for
(i=0;i<=count;i++)printf("%c",marry[i]);printf("\n")}'
838705
507838
5.如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况等.
5、Linux系统中“/proc”是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的
进程情况......其中许多文件都保存系统运行状态和相关信息
对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
cpuinfo 主机CPU信息
filesystems 文件系统信息
meninfo主机内存信息
versionLinux内存版本信息
diskstatus 磁盘负载情况
另外top命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其
是在该命令显示出来的对上方对系统的情况进行汇总.
free命令呢可以查看真实使用的内存 一般用freem
使用lsof 、psaux可以查看详细的每个进程的使用状况
dmesg 也是常用来查看系统性能的命令
#题目:
有10台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/
分区适用率大于80%, 就发邮件报警放到crontab里面, 每10分钟检查一次
#测试机器:
虚拟机Linuxas4
#1.首先建立服务器间的信任关系。
拿两台机器做测试
本机ip:
192.168.1.6
[root@codfei~]#sshkeygentrsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):
/root/.ssh/id_rsaalreadyexists.
Overwrite(y/n)?
y(以为我是第2次建立关系所以此处覆盖原来的文件)
Enterpassphrase(emptyfornopassphrase):
(直接回车无须输入密钥)
Entersamepassphraseagain:
Youridentificationhasbeensavedin/root/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.
Thekeyfingerprintis:
04:
37:
13:
2a:
4b:
10:
af:
c1:
2b:
03:
3f:
6b:
27:
ce:
b9:
62root@codfei
[root@codfei~]#cd.ssh/
[root@codfei.ssh]#ll
rw1rootroot883Apr2517:
51id_rsa
rwrr1rootroot221Apr2517:
51id_rsa.pub
rwrr1rootroot442Apr2517:
37known_hosts
id_rsa是密钥文件,id_rsa.pub是公钥文件。
[root@codfei.ssh]#scpid_rsa.pub192.168.1.4:
/root/.ssh/192.168.1.6
root@192.168.1.4'spassword:
id_rsa.pub100%2210.2KB/s00:
00
这里把公钥文件取名为本机的ip地址就是为了以后和更多的机器建立信任关系不发生混
淆。
现在登陆到192.168.1.4机器
[root@codfei~]#cd.ssh/
[root@codfei.ssh]#cat192.168.1.6>>authorized_keys
然后回到192.168.1.6机器直接
[root@codfei.ssh]#ssh192.168.1.4
Lastlogin:
WedAug812:
14:
422007from192.168.1.6
这样就可以了,里面偶尔涉及到权限问题。
一般./ssh文件夹是755authorized_keys为
600或者644
####脚本如下#######################
#!
/bin/bash
#SCRIPT:
df_check.sh
#WriteenbycodfeiMonSep307:
25:
28CST2007
#PURPOSE:
Thisscriptisusedtomonitorforfullfilesystems.
#######################Begining####################
####################
FSMAX="80"
remote_user='root'#####完全可以不用root
remote_ip=(192.168.1.5192.168.1.6192.168.1.7192.168.1.8192.168.1.9
192.168.1.10192.168.1.11192.168.1.12192.168.1.13192.168.1.14)>
这里填写你要监控的主机ip
ip_num='0'
while["$ip_num"le"$(expr${#remote_ip[@]} 1)"]
do
read_num='1'
ssh"$remote_user"@"${remote_ip[$ip_num]}"dfh>/tmp/diskcheck_tmp
grep'^/dev/*'/tmp/diskcheck_tmp|awk'{print$5}'|sed's/\%//g'>
/tmp/diskcheck_num_tmp
while["$read_num"le$(wcl
do
size=$(sedn"$read_num"'p'/tmp/diskcheck_num_tmp)
if["$size"gt"$FSMAX"]
then
$(grep'^/dev/*'/tmp/diskcheck_tmp|sedn$read_num'p'>
/tmp/disk_check_mail)
$(echo${remote_ip[$ip_num]}>>/tmp/disk_check_mail)
$(mails"diskcheck_alert"admin
fi
read_num=$(expr$read_num+1)
done
ip_num=$(expr$ip_num+1)
done
#############over################################
################让脚本每十分钟执行一次#############
在cron表中加入
0/10****/home/codfei/diskcheck.sh2>&1
################################################
##########################
比如,ext2文件系统, 如果异常死机,开机如何修复文件系统?
如果异常关机,比如断电,通知机房的人开机之后,
我们需要远程修复、检查文件系统
除了/分区之外, 其他的分区:
umount/home
fscky/home
/ 分区需要开机之后, 由机房的人来扫描
随后我们再登录并扫描/home等其他分区
如何查看一个进程所使用的文件句柄?
看这里面/proc/进程号/fd/
的个数就行了
简单的比如如何查看apache进程数
[root@localhostfd]#psef|grephttpd|wcl
1
如何统计apache的每秒访问数?
tailaccess_log|awk'{print$1,$4}'
[root@localhostlogs]#grepc`dated'3secondago'+%T`access_log
0
################################################
1、/proc/sys 子目录的作用
该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些。
与/proc
中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对root。
其中的目录以及文件的详细列表将占据过多的篇幅,而且该目录的内容是依赖于系统的,而
大部分的文件也仅仅对某些特殊的应用程序有用。
然而,以下是该子目录的两个最常见的用
途:
允许路由:
即便是Mandrakelinux 默认的内核也是允许路由的,您必需显式允许它这么
做。
为此,您只要以root 身份键入以下命令:
$echo1>/proc/sys/net/ipv4/ip_forward
如果您要禁用路由,请将上述命令中的1 改为0。
阻止IP 欺骗:
IP欺骗会让人认为某个来自于外部的某个数据