实验环境:
[root@myfuture ~]# cat /etc/redhat-release CentOS release 6.6 (Final)
1.通过proc 文件系统怎么找到id 为235的进程文件在那个位置,打开了哪些文件,启动参数是什么,他的父进程id 是多少,他的子进程id 有哪些?
我们先了解/proc文件系统中的内容 /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。 -------------------------------------------------------------------------------- /proc/cmdline文件 这个文件给出了内核启动的命令行。它和用于进程的cmdline项非常相似。 -------------------------------------------------------------------------------- /proc/cpuinfo文件 这 个文件提供了有关系统CPU的多种信息。这些信息是从内核里对CPU的测试代码中得到的。文件列出了CPU的普通型号(386,486,586,686 等),以及能得到的更多特定信息(制造商,型号和版本)。文件还包含了以bogomips表示的处理器速度,而且如果检测到CPU的多种特性或者bug, 文件还会包含相应的标志。这个文件的格式为:文件由多行构成,每行包括一个域名称,一个冒号和一个值。 -------------------------------------------------------------------------------- /proc/devices文件 这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。 -------------------------------------------------------------------------------- /proc/dma文件 这个文件列出由驱动程序保留的DMA通道和保留它们的驱动程序名称。casade项供用于把次DMA控制器从主控制器分出的DMA行所使用;这一行不能用于其它用途。 -------------------------------------------------------------------------------- /proc/filesystems文件 这个文件列出可供使用的文件系统类型,一种类型一行。虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。 -------------------------------------------------------------------------------- /proc/interrupts文件 这 个文件的每一行都有一个保留的中断。每行中的域有:中断号,本行中断的发生次数,可能带有一个加号的域(SA_INTERRUPT标志设置),以及登记这 个中断的驱动程序的名字。可以在安装新硬件前,像查看/proc/dma和/proc/ioports一样用cat命令手工查看手头的这个文件。这几个文 件列出了当前投入使用的资源(但是不包括那些没有加载驱动程序的硬件所使用的资源)。 -------------------------------------------------------------------------------- /proc/ioports文件 这个文件列出了诸如磁盘驱动器,以太网卡和声卡设备等多种设备驱动程序登记的许多I/O端口范围。 -------------------------------------------------------------------------------- /proc/kcore文件 这个文件是系统的物理内存以core文件格式保存的文件。例如,GDB能用它考察内核的数据结构。它不是纯文本,而是/proc目录下为数不多的几个二进制格式的项之一。 ------------------------------------------------------------------------------- /proc/kmsg文件 这个文件用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息。 -------------------------------------------------------------------------------- /proc/ksyms文件 这个文件列出了已经登记的内核符号;这些符号给出了变量或函数的地址。每行给出一个符号的地址,符号名称以及登记这个符号的模块。程序ksyms,insmod和kmod使用这个文件。它还列出了正在运行的任务数,总任务数和最后分配的PID。 -------------------------------------------------------------------------------- /proc/loadavg文件 这个文件给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。前三个数字是平均负载。这是通过计算过去1分钟,5分钟,15分钟里运行队列中的平均任务数得到的。随后是正在运行的任务数和总任务数。最后是上次使用的进程号。 -------------------------------------------------------------------------------- /proc/locks文件 这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文件施加的锁的类型。内核也可以需要时对文件施加强制性锁。 -------------------------------------------------------------------------------- /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息。 -------------------------------------------------------------------------------- /proc/meminfo文件 这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似。 -------------------------------------------------------------------------------- /proc/misc文件 这个文件报告用内核函数misc_register登记的设备驱动程序。 -------------------------------------------------------------------------------- /proc/modules文件 这个文件给出可加载内核模块的信息。lsmod程序用这些信息显示有关模块的名称,大小,使用数目方面的信息。 -------------------------------------------------------------------------------- /proc/mounts文件 这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。这个文件也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。 -------------------------------------------------------------------------------- /proc/pci文件 这个文件给出PCI设备的信息。用它可以方便地诊断PCI问题。你可以从这个文件中检索到的信息包括诸如IDE接口或USB控制器这样的设备,总线,设备和功能编号,设备延迟以及IRQ编号。 -------------------------------------------------------------------------------- /proc/stat文件 这个文件包含的信息有CPU利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间(自1970年1月1日起的秒数)。 -------------------------------------------------------------------------------- /proc/uptime文件 这个文件给出自从上次系统自举以来的秒数,以及其中有多少秒处于空闲。这主要供uptime程序使用。比较这两个数字能够告诉你长期来看CPU周期浪费的比例。 -------------------------------------------------------------------------------- /proc/version文件 这个文件只有一行内容,说明正在运行的内核版本。可以用标准的编程方法进行分析获得所需的系统信息。 -------------------------------------------------------------------------------- /proc/net子目录 此目录下的文件描述或修改了联网代码的行为。可以通过使用arp,netstat,route和ipfwadm命令设置或查询这些特殊文件中的许多文件。
本题答案:(我们以进程1为例)
位置:
[root@myfuture 1]# pwd /proc/1
打开的文件:
[root@myfuture 1]# lsof -p 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 261703 /sbin/init init 1 root mem REG 253,0 65928 392482 /lib64/libnss_files-2.12.so
扩展一下:显示某个目录所有打开的文件:
lsof +目录
启动参数:
[root@myfuture 1]# cat cmdline /sbin/init[root@myfuture 1]#
他的父进程id 是多少,他的子进程id
[root@myfuture proc]# cat /proc/1/status | grep -E *id #pid 进程号, ppid 父进程号, tgid进程组号
2.请写出iptables语句 iptables [-t 表名] -命令 -匹配 -j 动作/目标
1)本地80端口的请求转发到远端服务器10.0.3.188:8080端口,当前主机IP为192.168.2.1,并且保证服务正常使用
2)允许本机对外连接80端口(本机能连外界服务器为80)
3)开放本机的3306端口
4)禁止外界ping本服务器
解答:
本地的描述令我非常迷惑
1.[root@myfuture ~]# iptables -t nat -A PREROUTING -p tcp -d 192.168.2.1 --dport 80 -j DNAT --to-destination 10.0.3.188:8080 2.iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT 3.iptables -A INPUT -p tcp --dport 3306 -j ACCEPT 4.iptables -A INPUT -p icmp -j DROP
3.linux怎么查看用户登陆日志
答案:who、/var/log/wtmp、cat /var/log/secure
/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息,可以用last命令输出当中内容 cat /var/log/secure,只要牵涉到『需要输入帐号密码』的软体,当登入时 (不管登入正确或错误) 都会被记录在此档案中。
4.linux中utmp,wtmp,lastlog,messages各文件的作用
有关当前登录用户的信息记录在文件utmp中;======who命令 登录进入和退出纪录在文件wtmp中;========w命令 最后一次登录文件可以用lastlog命令察看; messages======从syslog中记录信息。这个档案相当的重要,几乎系统发生的错误讯息 (或者是重要的资讯) 都会记录在这个档案中;
如果系统发生莫名的错误时,这个档案是一定要查阅的登录档之一。
扩展:
/var/log/syslog 默 认RedHat Linux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同, 它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。
要让系统生成该日志文件,在/etc/syslog.conf文件中加上: *.warning /var/log/syslog 该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。
系统账户诸如bin、daemon、adm、uucp、mail等决不应该登录,如果发现这些账户已经登录,就说明系统可能已经被入侵了。
若发现记录的时间不是用户上次登录的时间,则说明该用户的账户已经泄密了。
/var/log/wtmp 该 日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常 运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。
该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文 件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端 tty或时间显示相应的记录。 命令last有两个可选参数: last -u 用户名 显示用户上次登录的情况。 last -t 天数 显示指定天数之前的用户登录情况。
/var/run/utmp 该 日志文件记录有关当前登录的每个用户的信息。
因此这个文件会随着用户登录和注销系 统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。
系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。
该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时 更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。
5.列举你熟悉的服务器性能查看命令
查看磁盘 df -h 查看内存大小 free vmstat 查看cpu cat /proc/cpuinfo 只看cpu数量grep "model name" /proc/cpuinfo | wc -l 查看系统内存 cat /proc/meminfo 查看每个进程的情况 cat /proc/5346/status 5347是pid 查看负载 uptime 查看系统整体状态 top
扩展:
uptime输出的三个参数表示:1分钟、5分钟、15分钟内系统的平均负荷
如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;
系统负荷1.0,意味着CPU在这1分钟里正好 处理100个进程;
系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0。
多核CPU与多CPU效果类似
6linux服务器间怎么实现无密码登陆
有机器A[192.168.1.1],B[192.168.1.2]。现想A通过ssh免密码登录到B (1)在A机下生成公钥/私钥对 ssh-keygen 直接三次回车,它将在~/下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub (2)把A机下的id_rsa.pub复制到B机下 完成后还需要将id_rsa.pub内容追加到B机的.ssh/authorized_keys文件里 scp ~/.ssh/id_rsa.pub root@192.168.1.2:~/id_rsa.pub (3)B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里 cat id_rsa.pub >> .ssh/authorized_keys chmod 600 .ssh/authorized_keys authorized_keys的权限必须是600。 (4)验证A机无密码登录B机。 ssh root@192.168.1.2
7.一个EXT3的文件分区,当用touch新建文件时报错,错误信息是磁盘已满,但适用df-H查看分区信息时只使用了50%,请分析具体原因
两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode耗尽了。
我们可以使用df -i查看inode的使用情况
8.简述tcp协议的三次握手过程
TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号 码) 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A 要求建立联机; 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生 seq=7654321的包 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正 确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成 功。 完成三次握手,主机A与主机B开始传送数据。
9.一个主机IP 202.110.14.137,掩码 255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址
网络地址: 202.112.14.128 广播地址: 202.112.14.159
10.用一条命令查看目前系统已启动服务所监听的端口
netstat -antup | grep LISTEN