Loading

34、企业面试题1


34.1、 buffer和cache的区别:

34.2、查看文件多少到多少行:

head -n 20 |tail -n 11

sed -n "10,20"p passwd

34.3、除什么文件外全部删除:

34.4、多条件限制下的移动:

34.5、学习心得:

便宜的都是最贵的

学习的投资永远都是有价值的投资

相信只有努力才会有回报

不断向有经验的人学习

要定好知识边界,百分之百的投入

一切的行为背后都有动机

34.6、linux企业面试题

34.7、使用正则表达式取ip地址:

[root@m01 ~]# ifconfig | awk -F "[ :]+" 'NR==2 {print $4}'

10.0.0.61

[root@m01 ~]# ifconfig |sed -n "2p" | awk -F "[ :]+" '{print $4}'

10.0.0.61

34.8、 /etc/passwd中的数据前后对换:

[root@centos6 ~]# sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp' /etc/passwd

/bin/bash:x:0:0:root:/root:root

/sbin/nologin:x:1:1:bin:/bin:bin

/sbin/nologin:x:2:2:daemon:/sbin:daemon

34.9、平时运维的方法:

34.10、如何把文件中的空行过滤掉:

/d把空行的内容删除

34.11、文件内容解释:

/var/log/message #系统日志

/var/log/secure #系统安全日志

/var/spool/clientmqueue #邮件临时目录

/proc/interrupts #查看中断文件

/etc/fstab #磁盘文件系统开机自动挂载文件

/etc/profile #全局环境配置文件

/etc/sysctl.conf #linux的内核配置

34.12、查看系统命令的路径:

34.13、服务器关机和重启等命令:

1、关机命令:

shutdown -h now :立刻关机(生产常用)

shutdown -h +1 :一分钟一后关机

init 0 :切换到运行级别到0

halt:立即停止系统,需要人工关闭电源(生产常用)

proweroff:立即停止系统,并且关闭电源

2、重启命令:

reboot (生产常用)

shutdown -r now (生产常用)

shutdown -r +1 :一分钟以后重启

init 6

3、注销命令:

ctrl+d(生产常用)

exit

logout

34.14、linux定时任务生产java服务无法执行问题:

1、脚本要有执行权限;使用java环境,脚本里的java路径要写全路径(变量路径)

34.15、inode被填满的企业案例:

默认的定时任务执行时会给root发邮件,如果邮件服务不开(默认开启,优化时关闭),

删除脚本上的 >/dev/null 2>&1 会导致postfix临时目录 /var/spool/postfix/maildrop/被很多的小文件填满,从而导致inode填满。(开启的情况下,会自动清理邮件目录下的文件)

创建文件时提示“no space left on device”,表示磁盘的inode满了;

34.16、网站访问慢的案例:

某个进程占用cpu比例高

linux java/http/php 中某一个进程占用cpu很高

1、top命令找到可疑的进程id:

2、strace -p 进程id (找到原因 )

34.·17、如果想修改开机内核文件:

修改的文件是 /boot/grup/grup.conf

34.18、硬盘的种类:

/dev/sda1 scsi sas sata IDE hd

/etc/fstab 开机挂载磁盘

34.19、定时任务的定时时间格式:

分,时,日,月,周

34.20、查看二进制文件:

od -t x /bin/ls 以12进制的方式查看

file:查看文件的类型

34.21、写一个脚本实现批量添加20个用户:

#!/bin/sh

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin

for n in `seq 1 1 20`;do

useradd user$n

echo user$n|md5sum|cut -c 4-8 | passwd --stdin user$n

echo user$n >/tmp/user.log

echo user$n|md5sum|cut -c 4-8 >/tmp/userpasswd.log

paste -d "=" /tmp/user.log /tmp/userpasswd.log >>/tmp/usercount.log;

done

(用户名存在(不会被创建)且密码不会被更新,除非更改md5的取值)

[root@centos6 scripts]# cat /count.log

user1 93167

user2 2d1d7

user3 c489e

user4 4890e

user5 ca814

user6 957ba

user7 2c5fb

user8 3428e

user9 49703

user10 0dc3e

user11 b755c

user12 1deb5

user13 f627d

user14 72383

user15 c5412

user16 eb606

user17 24521

user18 3224f

user19 f98ee

user20 613f8

34.22、查看/var/log下面的所有文件:

tree和 --maxdepht 的一层目录就代表当前目录的层;

[root@centos6 scripts]# find /var/log -maxdepth 1 -type f | wc -l

47

[root@centos6 scripts]# tree /var/log | tail -1

6 directories, 47 files

34.23、显示内存的信息:

free -h:只显示的是内存的固定的信息不是动态的

top:显示的是系统动态的内存信息,使用情况

34.24、显示端口号:

[root@centos6 scripts]# netstat -tunlp | grep "22"

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1360/sshd

tcp 0 0 :::22 :::* LISTEN 1360/sshd

[root@centos6 cron.d]# lsof -i tcp:22

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1360 root 3u IPv4 10696 0t0 TCP *:ssh (LISTEN)

sshd 1360 root 4u IPv6 10698 0t0 TCP *:ssh (LISTEN)

sshd 1396 root 3r IPv4 10834 0t0 TCP 192.168.1.1:ssh->192.168.1.254:49363 (ESTABLISHED)

34.25、打印文件的前三行:

head - n 3 a.txt

sed -n '1,3p' a.txt

ifconfig | awk 'NR>0 && NR<4 {print $0}'

34.26、复制多大的文件到指定的目录:

find /etc -type f -size +100k |xargs -i cp -av {} /home/lc1

34.27、打印进程信息

是一个静态的信息,多用的是top

ps(打印当前的进程信息) aux(和当前终端有关的,以用户为中心,x,和当期终端无关的(所有的))

[root@centos6 lc1]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1385 0.0 0.0 4064 552 tty1 Ss+ 20:54 0:00 (当前任务所占用的cpu时长) /sbin/minget

用户 进程号 cpu占用情况 内存的占用情况

34.28、查看网卡信息:

ip add

ifconfig

[root@centos6 cron.d]# ethtool eth0

Settings for eth0:

Supported ports: [ TP ]

Supported link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Supported pause frame use: No

Supports auto-negotiation: Yes

Advertised link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Advertised pause frame use: No

Advertised auto-negotiation: Yes

Speed: 1000Mb/s

Duplex: Full

Port: Twisted Pair

PHYAD: 0

Transceiver: internal

Auto-negotiation: on

MDI-X: off (auto)

Supports Wake-on: d

Wake-on: d

Current message level: 0x00000007 (7)

drv probe link

Link detected: yes

34.29、删除三天前的文件:

find /tmp -type f -mtime +3 | xargs rm -vf

>=1>:标准输出重定向; 2>:错误输出重定向; >>:追加输出重定向; &>=2>&1:不管正确和错误都输出;

34.30、磁盘空间被占满:

block和inode是否为满

df -h df -i (sort -r 降序,默认是升序,-u:排重,-n :以数字排序,-k:第几列)

从小到大排序,文件夹的大小显示的是存储当前目录下下一层的文件名的大小,越大说明目录下的文件越多,占用的indoe多

[root@centos6 tmp]# find / -type d | xargs ls -ld 2>/dev/null | sort -k 5 -n|tail -5

find: `/proc/5088/task/5088/fd/5': No such file or directory

find: `/proc/5088/task/5088/fdinfo/5': No such file or directory

find: `/proc/5088/fd/5': No such file or directory

find: `/proc/5088/fdinfo/5': No such file or directory

drwxr-xr-x. 37 root root 36864 Aug 10 05:17 /usr/src/kernels/2.6.32-573.el6.x86_64/include/linux

drwxr-xr-x. 4 root root 36864 Aug 10 05:21 /usr/share/doc/systemtap-client-2.7

drwxr-xr-x. 2 root root 40960 Aug 10 05:31 /usr/share/man/man3p

drwxr-xr-x. 2 root root 40960 Sep 14 21:03 /usr/share/man/man1

drwxr-xr-x. 2 root root 135168 Aug 10 05:31 /usr/share/man/man3

34.31、开机自启动:

/etc/rc.local chkconfig rc.sysinit

34.32、制作一个定时任务,每天0点0分将/var/log/nginx目录下7天以前大于100k的日志文件移动到/date/2018090xx(以前一天日期命名的)目录中:

1、调试时间:

[root@centos6 postfix]# ntpdate ntp1.aliyun.com

17 Sep 20:18:05 ntpdate[5108]: adjust time server 120.25.115.20 offset 0.007208 sec

[root@centos6 postfix]# date +%F

2018-09-17

[root@centos6 postfix]# date +%Y%m%d -d -1day:前一天

20180916

2、编写脚本:

vim /services/scripts/date1.sh

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

dir=/date/`date +%Y%m%d -d -1day`

mkdir dir -p

find /var/log/ -type f -mtime +7 -size +100k | xargs -i \cp -a {} $dir #xargs中操作命令不会被提示重复

3、设置定时任务:

crontab -e

00 00 * * * /service/scripts/date1.sh >/dev/null 2>&1

34.32、查看用户登录和退出的日志:

/root/bashrc_histrory

lastlog:用户最后一次登录服务器的时间日志;

last:用户登录服务器的时间和退出的情况;

34.33、如何一个服务加入到service中进行管理:

/init.d/脚本 chkconfig -add脚本(设置了开机启动级别,脚本下发到 /rc.d/rc num.d 中的软链接,

下次开机时根据开机级别启动服务,同时也加入了service服务,控制重启停止等服务)

34.34、列出根目录下各个子目录下面所占空间的大小:

[root@centos6 ~]# du --max-depth=1 -h /

82M /var

34M /boot

16K /lost+found

585M /tmp

0 /sys

27M /lib64

4.0K /mnt

20K /service

8.0K /opt

14M /sbin

4.0K /media

4.0K /srv

21M /home

88K /root

175M /lib

du: cannot access `/proc/6273/task/6273/fd/4': No such file or directory

du: cannot access `/proc/6273/task/6273/fdinfo/4': No such file or directory

du: cannot access `/proc/6273/fd/4': No such file or directory

du: cannot access `/proc/6273/fdinfo/4': No such file or directory

0 /proc

4.0K /selinux

216K /dev

7.6M /bin

30M /etc

1.1G /usr

2.1G /

1、计算出当前目录的大小:

[root@m01 /]# du -sh /tmp

16K /tmp

34.35、实现功能,在/tmp目录下找到10个以abc开头的文件,然后把这些文件的第一行保存到/tmp/new文件中:

find /tmp -type f -name "abc*.txt" |xargs head -1 -q >/tmp/new

-q参数是去除文名,只留文件内的结果

34.36、查看当前系统每个ip的连接数:

[root@centos6 ~]# netstat -tn | grep "ESTABLISHED" | awk -F "[ :]+" '{print$4}'|sort -n | uniq -c

3 192.168.1.1

34.37、查看当前连接的用户:

[root@m01 ~]# w #或者是who

18:36:37 up 14:11, 1 user, load average: 0.02, 0.44, 0.71

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

lc pts/1 172.16.1.254 18:32 0.00s 0.19s 0.06s sshd: lc [priv]

1、如何踢除用户:

skill -9 -u lc

34.38、查看http、https、ftp、telent、ssh、rsync、dns、mysql服务的端口号:

[root@centos6 ~]# egrep --color=auto -w "http|https|ftp|telent|ssh|rsync|dns|mysql" /etc/services #grep -w 表示精确匹配

ftp-data 20/tcp

ftp-data 20/udp

# 21 is registered to ftp, but also used by fsp

ftp 21/tcp

ftp 21/udp fsp fspd

ssh 22/tcp # The Secure Shell (SSH) Protocol

ssh 22/udp # The Secure Shell (SSH) Protocol

http 80/tcp www www-http # WorldWideWeb HTTP

http 80/udp www www-http # HyperText Transfer Protocol

http 80/sctp # HyperText Transfer Protocol

https 443/tcp # http protocol over TLS/SSL

https 443/udp # http protocol over TLS/SSL

https 443/sctp # http protocol over TLS/SSL

gss-http 488/tcp

34.39、列出linux下系统常用的集中文件系统格式,并比较各自的特点:

[root@centos6 ~]# ls /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/

autofs4 cifs dlm ext2 fat gfs2 jffs2 nfs nls udf

btrfs configfs ecryptfs ext3(带日志功能的文件系统,比较安全) fscache jbd lockd nfs_common squashfs xfs

cachefiles cramfs exportfs ext4(带日志功能的文件系统,比较安全) fuse jbd2 mbcache.ko nfsd ubifs

34.40、请详细描述dns的访问过程,请以www.baidu.com为例:

1、访问过程:

①本机向local dns请求www.baidu.com

②local dns向根域请求www.baidu.com,根域返回com.域的服务器IP

③向com.域请求www.baidu.com,com.域返回baidu.com域的服务器IP

④向baidu.com请求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服务器IP

⑤向root域请求www.a.shifen.com

⑥向com.域请求www.a.shife.com

⑦向shifen.com请求

⑧向a.shifen.com域请求

⑨拿到www.a.shifen.com的IP

⑩localdns返回本机www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

2、递归和迭代的区别:

递归就是指程序调用自身的编程思想,即一个函数调用本身;

迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。

客户机和dns服务器之间属递归查询;dns服务器和根服务器之间的查询属于迭代查询;

dns:

114.114.114.114 #阿里;

223.5.5.5 #阿里;

8.8.8.8 #谷歌

33.41、ssh抓包:

tcpdump port 22 -Std -c 3

打印绝对值,不打印时间戳,打印后停止

33.41、如何显示linux的端口号:

netstat

-t:在线的tcp协议

-u:在线的udp协议

-n:显示ip地址

p:显示进程号

l:显示监听信息(服务器,不加显示服务器/客户端)

[root@centos6 ~]# netstat -tn

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 224 192.168.1.1:22 192.168.1.254:50194 ESTABLISHED

tcp 0 0 192.168.2.1:22 192.168.2.254:50294 ESTABLISHED

33.42、简要叙述下列端口所运行的服务:

21 ftp

22 ssh

23 telent

25 smtp 单邮件传输协议:邮件服务器之间的协议

110 pop3 客户端到邮件服务器之间的协议

143 imap4

873 rsync

33.43、如何实现在使用nginx反向代理服务器的情况下web服务器还能记录访问客户端的真实ip地址:

在反向代理服务器上配置X-Forwarded-For代码,并在nginx服务器上开启X-Forwarded-For日志功能;

33.44、实验截图:

posted @ 2020-02-15 20:55  云起时。  阅读(334)  评论(0编辑  收藏  举报