linux系统运维面试题大全(137道题)

linux系统运维面试题大全

1、 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?

查看物理cup:
cat /proc/cpuinfo|grep -c ‘physical id’
查看每颗cup核数
cat /proc/cpuinfo|grep -c ‘processor’

2、查看系统负载有两个常用的命令,是哪两个?这三个数值表示什么含义呢?

(1)命令:w
w命令用于显示目前登入系统的用户信息,如下图。
在这里插入图片描述

(2)命令:uptime
在这里插入图片描述

其中load average即系统负载,三个数值分别表示一分钟、五分钟、十五分钟内系统的平均负载,即平均任务数。

3、vmstat r, b, si, so, bi, bo 这几列表示什么含义呢?

执行命令vmstat,结果如下图。
在这里插入图片描述

r:表示running,表示正在跑的任务数
b:表示blocked,表示被阻塞的任务数
si:表示有多少数据从交换分区读入内存
so:表示有多少数据从内存写入交换分区
bi:表示有多少数据从磁盘读入内存
bo:表示有多少数据从内存写入磁盘

简记:
i --input,进入内存
o --output,从内存出去
s --swap,交换分区
b --block,块设备,磁盘。单位都是KB。

4、linux系统里,您知道buffer和cache如何区分吗?

buffer和cache都是内存中的一块区域,当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。

5、使用top查看系统资源占用情况时,哪一列表示内存占用呢?
在这里插入图片描述
如上图所示:

VIRT:虚拟内存用量
RES:物理内存用量
SHR:共享内存用量
%MEM:内存用量
%CPU:cpu用量

6、如何实时查看网卡流量为多少?如何查看历史网卡流量?

安装sysstat包,使用sar命令查看。
#安装sysstat包,获得sar命令

yum install -y sysstat 

#查看网卡流量,默认10分钟更新一次

sar -n DEV 

#一秒显示一次,一共显示10次

sar -n DEV 1 10 

#查看指定日期的流量日志

sar -n DEV -f /var/log/sa/sa22

7、如何查看当前系统都有哪些进程?

可以使用ps -aux 或者ps –elf命令。

ps –aux命令结果如下图。
在这里插入图片描述

ps –elf结果如下图
在这里插入图片描述

8、ps 查看系统进程时,有一列为STAT, 如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义?
S表示正在休眠;s表示主进程;Z表示僵尸进程。
示例如下图。
在这里插入图片描述

9、如何查看系统都开启了哪些端口?

命令:netstat -lnp
在这里插入图片描述

10、如何查看网络连接状况?

命令:netstat –an
在这里插入图片描述

11、想修改ip,需要编辑哪个配置文件,修改完配置文件后,如何重启网卡,使配置生效?

使用vi或者vim编辑器编辑网卡配置文件/etc/sysconfig/network-scripts/ifcft-eth0(如果是eth1文件名为ifcft-eth1),内容如下:

DEVICE=eth0
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.140.130
NETMASK=255.255.255.0
GATEWAY=192.168.140.2
DNS1=192.168.140.2
DNS2=8.8.8.8

修改网卡后,可以使用命令重启网卡:

ifdown eth0
ifup eth0

也可以重启网络服务:

service network restart

12、能否给一个网卡配置多个IP? 如果能,怎么配置?

可以给一个网卡配置多个IP,配置步骤如下:
(1)查看eth0的配置,命令如下。

cat /etc/sysconfig/network-scripts/ifcfg-eth0 

例如ifcfg-eth0 文件内容如下:

DEVICE=eth0
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.140.130
NETMASK=255.255.255.0
GATEWAY=192.168.140.2
DNS1=192.168.140.2
DNS2=8.8.8.8

(2)新建一个ifcfg-eth0:1文件,命令如下。

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1

(3)使用vi编辑器修改其内容。

vi /etc/sysconfig/network-scripts/ifcfg-eth0:1

多绑定一个ip192.168.140.131,内容如下。

DEVICE=eth0:1
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.140.131
NETMASK=255.255.255.0
GATEWAY=192.168.140.2
DNS1=192.168.140.2
DNS2=8.8.8.8

(4)重启网络服务:

service network restart

13、如何查看某个网卡是否连接着交换机?

使用命令mii-tool,例如查询网卡eth0

mii-tool eth0

14、如何查看当前主机的主机名,如何修改主机名?要想重启后依旧生效,需要修改哪个配置文件呢?

(1)查看主机名:hostname
(2)修改主机名:hostname centos-db

永久生效需要修改配置文件network:

vi /etc/sysconfig/network

将HOSTNAME等号后面改成新的主机名。

NETWORKING=yes
HOSTNAME= centos-db

15、设置DNS需要修改哪个配置文件?

(1)在文件 /etc/resolv.conf 中设置DNS
(2)在文件 /etc/sysconfig/network-scripts/ifcfg-eth0 中设置DNS

16、使用iptables 写一条规则:把来源IP为192.168.1.101访问本机80端口的包直接拒绝

iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT

17、要想把iptable的规则保存到一个文件中如何做?如何恢复?

使用iptables-save重定向到文件中:

iptables-save > 1.ipt

使用iptables-restore反重定向回来:

iptables-restore < 1.ipt

18、如何备份某个用户的任务计划?

将/var/spool/cron/目录下指定用户的任务计划拷贝到备份目录cron_bak/下即可:

cp /var/spool/cron/rachy /tmp/bak/cron_bak/

19、任务计划格式中,前面5个数字分表表示什么含义?

依次表示:分、时、日、月、周

20、如何可以把系统中不用的服务关掉?

(1)使用可视化工具:ntsysv
(2)使用命令:chkconfig servicename off

21、如何让某个服务(假如服务名为 nginx)只在3,5两个运行级别开启,其他级别关闭?

先关闭所有运行级别:chkconfig nginx off
然后打开35运行级别:chkconfig --level 35 nginx on

22、rsync 同步命令中,下面两种方式有什么不同呢?

(1) rsync -av /dira/ ip:/dirb/
(2) rsync -av /dira/ ip::dirb
其中(1)是通过ssh方式同步的,(2)后者是通过rsync服务的方式同步的。

23、rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?

同步源文件需要加-L选项

24、某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?

用户身份验证过程记录在/var/log/secure中,登录成功的信息记录在/var/log/wtmp。

25、网卡或者硬盘有问题时,我们可以通过使用哪个命令查看相关信息?

使用命令dmesg
在这里插入图片描述

26、分别使用xargs和exec实现这样的需求,把当前目录下所有后缀名为.txt的文件的权限修改为777

使用xargs :

find ./ -type f -name "*.txt" |xargs chmod 777

使用exec :

find ./ -type f -name "*.txt" -exec chmod 777 {} \;

27、有一个脚本运行时间可能超过2天,如何做才能使其不间断的运行,而且还可以随时观察脚本运行时的输出信息?

使用screen工具

28、在Linux系统下如何按照下面要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?

使用tcpdump命令:

tcpdump -nn -s0 host 192.168.0.111 and port 80 -c 1000 -w 1.cap

29、rsync 同步数据时,如何过滤出所有.txt的文件不同步?

加上–exclude选项:–exclude=“*.txt”

30、rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做?

保留更新使用-u或者–update选项

31、想在Linux命令行下访问某个网站,并且该网站域名还没有解析,如何做?

在/etc/hosts文件中增加一条从该网站域名到其IP的解析记录即可,或者使用curl -x

32、自定义解析域名的时候,我们可以编辑哪个文件?是否可以一个ip对应多个域名?是否一个域名对应多个ip?

编辑 /etc/hosts 文件,可以一个ip对应多个域名,不可以一个域名对多个ip。

33、我们可以使用哪个命令查看系统的历史负载(比如说两天前的)?

#例如查看22号的系统负载

sar -q -f /var/log/sa/sa22  

34、在Linux下如何指定dns服务器,来解析某个域名?

使用dig命令,例如使用谷歌DNS解析百度

dig @8.8.8.8 www.baidu.com 

35、使用rsync同步数据时,假如我们采用的是ssh方式,并且目标机器的sshd端口并不是默认的22端口,那我们如何做?

方式1:

rsync "--rsh=ssh -p 10022"

方式2:

rsync -e "ssh -p 10022"

36、rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?

加上–delete选项即可。

37、使用free查看内存使用情况时,哪个数值表示真正可用的内存量?

free命令后第二列的值,如下图。
在这里插入图片描述

38、有一天你突然发现公司网站访问速度变的很慢很慢,你该怎么办呢?

可以从系统负载和网卡流量方面入手分析。分析系统负载,使用w命令或者uptime命令查看系统负载,如果负载很高,则使用top命令查看CPU,MEM等占用情况,要么是CPU繁忙,要么是内存不够,如果这二者都正常,再去使用sar命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。

39、rsync使用服务模式时,如果我们指定了一个密码文件,那么这个密码文件的权限应该设置成多少才可以?

600或400

40、给您一台最小化安装的linux机器,如何进行基础优化?

(1)更新yum官方源
(2)关闭不需要的服务
(3)关闭不需要的TTY
(4)对TCP/IP网络参数进行调整。例如:优化Linux下的内核TCP参数以提高系统性能。
(5)设置时间同步
(6)优化最大文件数限制
(7)关闭SELINUX
(8)修改SSH登录配置
(9)清理登陆的时候显示的系统及内核版本
(10)删除不必要的系统用户和群组
(11)关闭重启ctl-alt-delete组合键
(12)设置一些全局变量
(13)设置history历史记录
(14)centos6.4最小化安装后启动网卡
(15)添加普通用户,设置sudo权限
(16)禁止root远程用户登录
(17)sed修改远程端口
(18)防火墙iptables配置。
(19)修改默认DNS
(20)安装必要软件,更新yum源 [epel源]
(21)更新内核和软件到最新版本
(22)去除上次登录的信息

41、请说出内核调优配置文件名字?举例几个内核需要优化的参数配置?

文件名称:/etc/sysctl.conf

以下表示开启TCP连接中TIME-WAIT sockets的快速收回功能,默认为 0 ,表示关闭。

net.ipv4.tcp_tw_recycle = 1

以下表示开启重用。允许将TIME-WAIT sockets重新用于新的 TCP 连接,默认为 0 表示关闭。

net.ipv4.tcp_tw_reuse = 1

在内核放弃建立连接之前发送SYN包的数量。 默认6(即时间为2^7-1 =127s)

net.ipv4.tcp_syn_retries = 6

#允许系统打开的端口范围

net.ipv4.ip_local_port_range = 1024 65000

最大打开文件数,单个进程可分配的最大文件数

fs.nr_open = 10000000 

表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的

fs.file-max = 11000000 

42、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?

可以使用bind命令,bind可以很方便地在shell中实现宏或按键的绑定。在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。
例如获取F12的字符序列获取方法如下:
先按下Ctrl+V,然后按下F12 .我们就可以得到F12的字符序列 ^[[24~。
接着使用bind进行绑定。

bind ‘”\e[24~":"date"'

注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。也可以使用showkey -a命令查看按键对应的字符序列。

43、如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?

使用命令compgen -c,可以打印出所有支持的命令列表。如下图。
在这里插入图片描述

44、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?

使用Linux 命令dirs可以将当前的目录栈打印出来。

45、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?

使用Linux命令disown -r可以将所有正在运行的进程移除。

46、bash shell 中的hash 命令有什么作用?

linux命令hash管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。

47、哪一个bash内置命令能够进行数学运算?

bash shell 的内置命令let可以进行整型数的数学运算。

48、怎样一页一页地查看一个大文件的内容呢?

通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要.

cat file_name.txt | more

49、数据字典属于哪一个用户的?

数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的。

50、怎样查看一个linux命令的概要与用法?

使用命令whatis 可以先出显示出这个命令的用法简要。

例如:可以使用whatis netstat 去查看netstat命令的介绍以及使用简要。如下图。
在这里插入图片描述

51、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?

使用命令repquota能够显示出一个文件系统的配额信息

52、如何查看 http 的并发请求数与其 TCP 连接状态?

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

53、如何修改系统打开最大句柄数?

ulimit -n 查看 linux 系统打开最大的文件描述符,这里默认 1024,不修改这里 web 服务器修改再大也没用。
修改/etc/security/limits.conf文件,修改内容如下。

* soft nofile 10240
* hard nofile 10240

54、用 tcpdump 嗅探 80 端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -5

55、查看当前系统每个 IP 的连接数

netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn

56、shell 下 32 位随机密码生成

cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

57.如何查看二进制文件的内容?

我们一般通过 hexdump 命令 来查看二进制文件的内容。
例如hexdump -C XXX(文件名), -C 是参数,不同的参数有不同的意义。

简单例举几个参数:

-C  是比较规范的 十六进制和 ASCII 码显示
-c  是单字节字符显示
-b  单字节八进制显示
-o  是双字节八进制显示
-d  是双字节十进制显示
-x  是双字节十六进制显示

58、ps aux 中的 VSZ 代表什么意思,RSS 代表什么意思

VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间

59、如何检测并修复/dev/hda5?

fsck 用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用 fsck 命令对文件系统进行检查。

60、描述Linux 系统的开机启动顺序

加载 BIOS–>读取 MBR–>Boot Loader–>加载内核–>用户层 init 一句 inittab 文件来设定系统运行的等级(一般 3 或者 5,3 是多用户命令行,5 是界面)–>init 进程执行 rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。

61、符号链接与硬链接的区别?

我们可以把符号链接,也就是软连接 当做是 windows 系统里的 快捷方式。
硬链接就好像是又复制了一份。

例如下述命令,这是硬链接,相当于复制,不可以跨分区,但修改 3.txt,4.txt会跟着变,若删除 3.txt,4.txt不受任何影响。

ln 3.txt 4.txt

例如下述命令, 这是软连接,相当于快捷方式。修改 4.txt,3.txt也会跟着变,若删除3.txt,4.txt就坏掉了。不可以用了。

ln -s 3.txt 4.txt

62、如何保存当前磁盘分区的分区表?

dd 命令是以个强大的命令,在复制的同时进行转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512

63、说说FTP 的主动模式和被动模式

FTP 协议有两种工作方式,PORT 方式和 PASV 方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:
客户端向服务器的 FTP 端口(默认是 21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT 命令告诉服务器:“我打开了 XX 端口,你过来连接我”。于是服务器从 20 端口向客户端的 XX 端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:
客户端向服务器的 FTP 端口(默认是 21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV 命令告诉客户端:“我打开了 XX 端口,你过来连接我”。于是客户端向服务器的 XX 端口 发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完 全不同。

64、怎么把脚本添加到系统服务里,即用 service 来调用?

在脚本里加入如下内容,第一行脚本自带,第三行为脚本描述,无实际意义。

#!/bin/bash
#chkconfig: 2345 85 15
#description: httpd

65、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0

方式一:

iptables-tnat -A PREROUTING -d 192.168.16.1 -p tcp –dport 80 -j DNAT –to192.168.16.1:8080

方式二:

iptables-t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080

66、什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?

SNAT,DNAT,MASQUERADE都是NAT。
MASQUERADE是SNAT的一个特例。
SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。
MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。
DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B,因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的。

67、包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?

包过滤防火墙是根据包头进行的过滤,并且是处于网络层的,根据包的源ip地址,目标ip地址,协议类型,端口号,进行过滤;代理应用防火墙工作在应用层,他使用代理服务器技术,将内网对外网的访问,变为防火墙对外网的访问,可以对包的内容进行分辨,从而过滤。
代理应用防火墙:天融信GFW4000
包过滤防火墙:华为NE 16E

68、iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。

支持。需要增加相关支持的内核补丁,并且要重新编译内核。
或者使用crontab配合iptables:
首先:vi /deny.bat 输入以下命令后保存退出。

/sbin/iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

打开crontab-e输入以下内容:

00 21* * * /bin/sh /deny.bat

69、说出你知道的几种linux/unix发行版本。

Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP等等。

70、列出linux常见打包工具并写相应解压缩参数(至少三种)

tar、gz、bz三个打包工具。
Tar -xvzf
gzip -d
bzip2 -d

71、计划每星期天早8点服务器定时重启,如何实现?
执行以下命令:

crontab -e

输入以下内容:

0008 * * 7 /sbin/init 6

72、列出作为完整邮件系统的软件,至少二类。

Sendmail,postfix,qmail

73、当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。

(1)用户输入网址到浏览器;
(2)浏览器发出DNS请求信息;
(3)计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
(4)计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
(5)合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
(6)返回IP结果给浏览器;
(7)浏览器根据IP信息,获取页面;

74、我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?

这个题需要理解的东西比较的多,分以下两个方面:
(1)从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字 解释器通常使用TCP从发原来的请求。
(2)从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP。

75、一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。

两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode耗尽了。

76、我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。
因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

77、编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下

该问题主要是考察awk的用法:

#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk ‘$5>10240 {print $9}`
do
mv $FileName /tmp
done
ls -la /tmp
echo “Done!

78、apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候加参数–with-mpm- worker选择工作模式)
prefork的特点是:
(1)这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销
(2)可以防止意外的内存泄漏
(3)在服务器负载下降的时候会自动减少子进程数
worker的特点是:
支持混合的多线程多进程的多路处理模块。如果对于一个高流量的HTTP服务器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。

79、名词解释:请解释以下词的含义?

例如解释以下名词:HDLC,VTP,OSPF,RIP,DDOS,systemV,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。

HDLC:高级链路控制;
VTP:vlan 传输协议;
OSPF:开放最短路径优先;
RIP:路由信息协议;
DDOS:分布式拒绝服务攻击;
system V:UNIX版本V;
GNU:非UNIX,开放源码软件工程;
netscreen:国际著名防火墙厂家之一,04年后被juniper收购,变为其防火墙的一个系列;
ssh:安全外壳,防止中间人攻击的一种连接方式;
smartd:硬盘检测工具s.m.a.r.t的进程;
Apache:web服务器软件;
WAIT_TIME:netstat命令显示的参数,客户端正在等待。

80、编写shell脚本获取本机的网络地址。比如:本机的ip地址是:
192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0

方法一:

#!/bin/bash
#This script print ip and network
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }`
MASK=`grep “NETMASK” $file|awk-F”=” ‘{ print $2 }`
echo$IP/$MASKexit 1
fi

方法二:

#!/bin/bash
#This programm will printf ip/network
#
IP=`ifconfig eth0 |grep ‘inet ‘ |sed ’s/^.*addr://g’|sed ’s/ Bcast.*$//g’`
NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ’s/^.*Mask://g’`
echo$IP/$NETMASKexit

81、在命令行下发一邮件,发件人:123@abc.com,收信人:abc@xyz.com

使用mail命令

mail -s "hello" abc@xyz.com

82、linux下如何改IP、主机名、DNS?

setup命令:
可以修改IP 和DNS ,修改完后执行重启网络使用命令service network restart,临时修改即时生效,重启后失效。
Hostname命令:
修改主机名
Ifconfig命令修改IP:
Ifconfig eth0 IP netmask 掩码
永久修改主机名:
修改:/etc/sysconfig/network 文件,修改HOSTNAME=主机名
永久修改IP地址:
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,修改完后执行重启网络命令service network restart

83、linux下如何添加路由?

添加到主机路由

route add –host 192.168.168.110 dev eth0
route add –host 192.168.168.119 gw 192.168.168.1

添加到网络的路由

route add –net IP netmask MASK  deveth0
route add –net IP netmask MASK gw IP

添加默认网关

route add default gw IP

删除路由

route del –host 192.168.168.110 dev eth0

84、简述linux下编译内核的意义与步骤

编译内核的意义在于让硬件设备更稳定的发挥其应有的效能;
内核编译:
(1)内核裁减
(2)打补丁
(3)添加新功能/模块
步骤:
(1)下载新内核源代码
(2)配置内核编译参数:make menuconfig
(3)选择需要添加的模块
(4)开始编译
(5)安装编译好到模块和内核
(6)修改GRUB启动菜单,增加使用新内核启动到项目

85、简述DDOS攻击的原理

黑客劫持大量傀儡主机,对目标服务器进行合理的资源请求,导致服务器资源耗尽而不能进行正常的服务。

86、简述Tcp三次握手的过程

第一次握手,建立连接,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手,服务器收到SYN,同时自己也发送一个SYN包和一个ACK包来确认客户端的SYN,并进入SYN_RECV;
第三次握手,客户端收到服务器发来的SYN+ACK后,回复服务器端一个ACK确认,发送完毕后,双方进入ESTABLISHED状态。
三次握手成功后,开始传输数据。

87、简述VPN,常见有哪几种?

VPN是指在公共的网络上建立专用网络的技术,但是两个节点间并没有物理上的专用的端到端链路,而是通过广域网或者运营商提供的网络平台之上的逻辑网络,用户数据在逻辑链路中传输,它可以有效的节省一般需要达到DDN专线所能达到的同样的目的,而且VPN采用身份验证和加密技术,充分保证了安全性。常见的VPN有:ipsec vpn、PPTPvpn、L2TP vpn、SSL vpn

88、解释下什么是GPL,GNU,自由软件?

GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。
GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。
自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。

89、如何选择Linux操作系统版本?

一般来讲,桌面用户首选Ubuntu;服务器首选RHEL或CentOS,两者中首选CentOS。
根据具体要求:
(1)安全性要求较高,则选择Debian或者FreeBSD。
(2)需要使用数据库高级服务和电子邮件网络应用的用户可以选择SUSE。
(3)想要新技术新功能功能可以选择Feddora,Feddora是RHEL和CentOS的一个测试版和预发布版本。
(4)根据现有状况,绝大多数互联网公司选择CentOS。现在比较常用的是6系列,现在市场占有大概一半左右。另外的原因是CentOS更侧重服务器领域,并且无版权约束。

90、初学者在Linux系统的开机启动项如何选择?

建议选择五个开机启动项:
(1)crond: 该服务用于周期地执行系统及用户配置的计划任务。有要周期性执行的任务计划需要开启,此服务是生产场景必须要用的一个软件。
(2)iptables: iptables包过滤防火墙,有外网IP时,考虑开启。
(3)network: 启动系统时,若想激活/关闭启动时的各个网络接口,则应(必须)考虑开启。
(4)sshd: 远程连接Linux服务器时需要用到这个服务程序,所以必须要开启,否则将无法远程连接到Linux服务器。
(5)rsyslog: 是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog将各种信息收集写入到系统日志文件中,CentOS6以前此服务的名字为syslog。
(6)sysstat: 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于Linux系统性能数据很有帮助,比如CPU使用率、硬盘和网络吞吐数据等,这些数据的分析,有利于判断系统运行是否正常,所以它是提高系统运行效率、安全运行服务的助手。

91、请描述Linux系统优化的12个步骤。

(1)登录系统:不使用root登录,通过sudo授权管理,使用普通用户登录。
(2)禁止SSH远程:更改默认的远程连接SSH服务及禁止root远程连接。
(3)时间同步:定时自动更新服务器时间。
(4)配置yum更新源,从国内更新下载安装rpm包。
(5)关闭selinux及iptables(iptables工作场景如有wan ip,一般要打开,高并发除外)
(6)调整文件描述符数量,进程及文件的打开都会消耗文件描述符。
(7)定时自动清理/var/spool/clientmquene/目录垃圾文件,防止节点被占满(c6.4默认没有sendmail,因此可以不配。)
(8)精简开机启动服务(crond、sshd、network、rsyslog)
(9)Linux内核参数优化/etc/sysctl.conf,执行sysct -p生效。
更改字符集,支持中文,但是还是建议使用英文,防止乱码问题出现。
(10)锁定关键系统文件(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后,把chatter改名,就更安全了。)
(11)清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。

92、描述Linux运行级别0-6的各自含义

0:关机模式
1:单用户模式<==破解root密码
2:无网络支持的多用户模式
3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有网络支持的X-windows支持多用户模式(桌面)
6: 重新引导系统,即重启

93、描述Linux系统从开机到登陆界面的启动过程

(1)开机BIOS自检,加载硬盘。
(2)读取MBR,MBR引导。
(3)grub引导菜单(Boot Loader)。
(4)加载内核kernel。
(5)启动init进程,依据inittab文件设定运行级别
(6)init进程,执行rc.sysinit文件。
(7)启动内核模块,执行不同级别的脚本程序。
(8)执行/etc/rc.d/rc.local
(9)启动mingetty,进入系统登陆界面。

94、描述Linux下软链接和硬链接的区别

在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。
(1)默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。
(2)硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,
(3)ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。
(4)删除软链接文件,对源文件和硬链接文件无任何影响。
(5)删除文件的硬链接文件,对源文件及软链接文件无任何影响。
(6)删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
(7)同时删除源文件及其硬链接文件,整个文件才会被真正的删除。
(8)很多硬件设备的快照功能,使用的就是类似硬链接的原理。
(9)软链接可以跨文件系统,硬链接不可以跨文件系统。

95、生产场景如何对linux系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:
(1)单机服务器:如8G内存,300G硬盘
分区: /boot 100-200M,swap 16G,内存大小8G*2,/ 80G,/var 20G(也可不分),/data 180G(存放web及db数据)
优点:数据盘和系统盘分开,有利于出问题时维护。
RAID方案:视数据及性能要求,一般可采用raid5折中。
(2)负载均衡器(如LVS等)
分区:/boot 100-200M,swap 内存的1-2倍,/ ,
优点:简单方便,只做转发数据量很少。
RAID方案:数据量小,重要性高,可采用RAID1
(3)负载均衡下的RS server
分区: /boot 100-200M,swap 内存的1-2倍,/
优点:简单方便,因为有多机,对数据要求低。
RAID方案:数据量大,重要性不高,有性能要求,数据要求低,可采用RAID0
(4)数据库服务器mysql及oracle如16/32G内存
分区:/boot 100-200M,swap 16G,内存的1倍,/ 100G,/data 剩余(存放db数据)
优点:数据盘和系统盘分开,有利于出问题时维护,及保持数据完整。
RAID方案:视数据及性能要求主库可采取raid10/raid5,从库可采用raid0提高性能(读写分离的情况下。)
(5)存储服务器
分区:/boot 100-200M,swap 内存的1-2倍,/ 100G,/data(存放数据)
优点:此服务器不要分区太多。只做备份,性能要求低。容量要大。
RAID方案:可采取sata盘,raid5
(6)共享存储服务器(如NFS)
分区:/boot 100-200M,swap 内存的1-2倍,/ 100G,/data(存放数据)
优点:此服务器不要分区太多。NFS共享比存储多的要求就是性能要求。
RAID方案:视性能及访问要求可以raid5,raid10,甚至raid0(要有高可用或双写方案)
(7)监控服务器cacti,nagios
分区:/boot 100-200M,swap 内存的1-2倍,/
优点:重要性一般,数据要求也一般。
RAID方案:单盘或双盘raid1即可。三盘就RAID5,看容量要求加盘即可。

96、描述Linux下文件删除的原理

Linux系统是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说每个文件两个link计数器来控制i_count和i_nlink。当一个文件被一个程序占用的时候i_count就加1。当文件的硬链接多一个的时候i_nlink也加1。删除一个文件,就是让这个文件,没有进程占用,同时i_link数量为0。

97、请简单描述VI编辑器的使用

(1)vi编辑器是linux系统下最最基本和最常用的标准文本编辑器。
(2)vi编辑器有三种工作模式:普通模式、编辑模式、命令模式。
(3)普通模式下的键盘输入任何字符都是当作命令来执行的,也可以输入命令进行光标的移动,字符、单词、行的复制、粘帖以及删除等操作。
(4)编辑模式主要用于文本的输入。在该模式下,用户输入的任何字符都被作为文件的内容保存起来。
(5)命令模式下,用户可以对文件进行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式的。
(6)在普通模式下输入冒号即可进入命令模式,此时vi窗口的状态行会显示出冒号,等待用户输入命令。“i”插入模式,即可以进行编辑。用户输入完成后,按【Esc】之后编辑器又返回到普通模式下,在命令模式下,保存退出,可以使用的命令为wq和x。前面加!表示强制退出,强制保存等。

98、请简单说出用户管理的相关命令及用途

(1)组管理命令
groupadd #添加组
groupdel #删除用户组
groupmod #修改用户组
groups #显示当前用户所属的用户组
grpck #检查用户组及密码文件的完整性(etc/group以及/etc/gshadow文件)
grpconv #通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv #通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件 。
(2)用户管理命令
useradd #添加用户
adduser #添加用户
passwd #为用户设置密码
usermod #修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等
pwcov #同步用户从/etc/passwd 到/etc/shadow
pwck #pwck是校验用户配置文件/etc/passwd 和/etc/shadow文件内容是否合法或完整
pwunconv #执行pwunconv指令可以关闭用户投影密码,它会把密码从shadow文件内,重回存到passwd文件里。
finger #查看用户信息工具(危险命令,一般不用)
id #查看用户的UID、GID及所归属的用户组
chfn #更改用户信息工具
su #用户切换工具

99、请简述基础正则表达式grep高级参数的使用

常用参数:
“-v”排除匹配内容,
“-e”支持扩展的正则表达式,
“-i”忽略大小写,
“-o”输出匹配的内容(只是一块,不是行),
“–color=auto” 匹配内容显示颜色,
“-n” 在行首显示行号。
特殊字符注意事项:
“^”(尖括号)word ,表示搜索以word开头的内容。
word$ 表示搜索以word结尾的内容。
“^$ ”表示的是空行,不是空格。
“.” 代表且只能代表任意一个字符。非正则表达式其他功能(当前目录,加载文件)
\ 转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型。例如.只表示原始小数点意义。
“* ” 表示重复0个或多个前面的一个字符。不代表所有。
“.* ” 表示匹配所有的字符。^.*表示以任意字符开头。
[任意字符如abc] 匹配字符集内任意一个字符[a-z]。 [^abc] ^在中括号里面是非的意思,不包含之意。意思就是不包含a或b或c的行。
{n,m} 表示重复n到m次前一个字符。{n}至少n次,多了不限。{n}N次,{,m}至多m次,少了不限。

注:使用grep或sed要对{}转义。即\{\}.egrep就不需要转义了。

100、请简述基础正则表达式sed高级参数的使用

解答:
-n取消默认输出
-p 打印
-d删除
-e允许多项编辑
sed取行,要特别注意sed -n ‘s###g’ filename 的使用,sed的的功能可以记住正则表达式的一部分,其中,\1为第一个记住的模式即第一个小括号中的匹配内容,\2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。
实际字符的选取最好要唯一,正则表达式是贪婪的,总是尽可能的匹配更远的符合匹配的内容。另外注意字符串中的空格。

101、请给出查看当前哪些用户在线的Linux命令

w #显示目前系统登录用户
who #显示目前已登录用户信息
last #列出目前与过去登入系统的用户相关信息
lastlog #检查某特定用户上次登录时间
whoami #打印与当前生效的用户ID关联的用户名
finger #用户信息查找程序
id #显示指定用户或当前用户的用户与组信息

102、请你描述下crontab的作用和语法,以及书写定时任务注意的要点。

设置crontab后我们可以使得Linux主动执行的在固定的间隔时间,执行指定的系统指令或 shell script脚本。生产环境可以用来日志分析或生产备份等。
语法格式:
crontab [ -u user ] file ===》-u的意思就是指定用户
crontab [ -u user ] { -l 显示文件内容| -r全部删除crontab文件 | -e 编辑crontab文件| -i删除crontab文件前确认提示}
举例:

*/5 10,12 * 3-8 * * /usr/sbin/ntpdate 10.0.0.155  >/dev/null  2>&1

前五段是时间间隔的设定,单位分别是分钟、小时、日、月、周(尽量避免使用日月和周同时出现,以免造成系统误判)。
第一个时间段 分钟 范围0-59
第二个时间段 小时 范围0-23
第三个世间段 日 范围1-31
第四个时间段 月 范围1-12
第五个时间段 周 范围0-7

“*”星号代表任何时间都接受命令
“,”逗号,表示隔开。代表分隔的时间都适用此命令。
“-”减号,两个时间段之间,代表在此时间段内执行定时任务。
/n斜线和n(数字)表示每隔n段时间执行一次。

注意要点分为:书写基本要领与书写注意事项,掌握7个基本要领:
第一、为定时任务规则加必要的注释
第二、定时任务命令或程序最好写到脚本里执行
第三、定时任务执行的脚本要规范路径,如:/server/scripts
第四、执行shell脚本任务时前加/bin/sh
执行定时任务时,如果是执行脚本,尽量在脚本前面带上/bin/sh命名
第五、定时任务结尾加 >/dev/null 2>&1
第六、/dev/null为特殊的字符设备文件,表示黑洞设备或空设备。
第七、有关重定向的说明
“>或1> ” 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。
“>>或1>>” 追加重定向:把前面输出的东西追加到后边的文件中,不会删除文件原有内容。
“<或<0 ” 输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
“<<或<<0” 输入重定向:后跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
“2>” 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。
“2>>” 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。
标准输入(stdin):代码为0,使用<或<<。
标准输出(stdout):代码为1,使用>或>>。正常的输出。
标准错误输出(sederr):代码为2,使用2>或2>>。
特殊记忆:
“2>&1”就是把标准错误重定向到标准输出(>&)。

>/dev/null 2>&1 等价于 1>/dev/null  2>/dev/null

103、请列出Linux中你认为重要的文件夹及包含内容

(1)/目录下的文件夹里面分别是以下内容:
/usr 包含所有的命令和程序库、文档和其他文件及当前linux发行版的主要应用程序
/var 包含正在操作的文件,还有记录文件、加密文件、临时文件等
/home 除了root用户外的所有用户的配置文件,个性化文件和主目录,即家目录
/proc 虚拟目录,该目录实际上指向内存而不是硬盘
/bin 系统执行文件(二进制文件)普通用户可以使用
/sbin 系统执行文件(二进制文件)不能被普通用户使用,通常由root用户使用
/etc 操作系统的配置文件
/root root用户的家目录
/dev 系统设备文件,linux所有设备都是以文件的形式被处理,该目录不包含驱动程序
/lib 程序和核心模块共享库(仅限于/下的程序)
/boot 系统引导、启动文件,通常grub也在这里
/opt 可选应用程序目录
/tmp 临时文件,系统会自动清理
/lost+found 恢复文件(类似回收站)
/media 所有的磁盘(有时有光盘)将以文件夹的形式挂载,光盘镜像也可以挂载
/cd-rom 挂载光盘的地方

(2) /usr目录下的文件比较重要,其作用下面分类列出:
/usr/X11 X-windows桌面环境
/usr/doc linux系统的文档资料
/usr/share 独立于当前计算机的数据结构,如字典中的词
/usr/bin 类似/bin但是不参与启动,大部分命令都在这里
/usr/local 本地管理员安装的应用程序
/usr/local/bin 用户安装的应用程序(部分)

(3) /proc目录的内容
/proc/cpuinfo 处理器的信息
/proc/devices 当前运行内核的所有设备清单
/proc/dma 当前正在使用中的DMA通道
/proc/filesystem 当前运行内核所配置的文件系统
/proc/interrupts 当前使用的中断和曾经有多少个中断
/proc/ioports 正在使用的I/O端口

104、给出正确的关机和重启服务器的命令

(1)shutdown
[-t] 指定在多长时间之后关闭系统 [-r] 重启系统 [-k] 并不真正关机,只是给每个登录用户发送警告信号 [-h] 关闭系统(halt)
(2)halt
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启 [-i] 关机或重新启动之前,关掉所有的网络接口 [-p] 关机时调用poweroff,此选项为缺省选项
(3)reboot
reboot工作过程与halt类似,作用是重新启动,而halt是关机。其参数与halt类似。
(4)init
init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动。

105、请简述修改/etc/sudoers配置文件的注意事项

(1)别名的名称可以包含大写字母。数字、下划线。如果是字母必须要大写,(别名为一群拥有相同属性的集合)。
(2)一个别名下面可以有多个成员,成员间通过半角(,)逗号隔开。成员必须有效实际存在。
别名成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias制约,定义什么类型的别名,就要有相什么类型的成员匹配。
(3)用户组前面必须加%号。命令别名下的成员必须是文件或目录的绝对路径。
(4)指定切换用户要用()括号括起来,如果省略,则默认root用户,如果括号里是ALL,则代表能切换到所有用户。
(5)命令路径要使用全路径。
(6)别名规则每行算一个规则,一行容不下时用\续行。另外超过一行,用反斜线换行。
(7)一般不建议先给all权限,后面排除。用什么权限,就给什么权限。(注意权限,语法)。
如果不需要密码直接运行命令的应该加NOPASSWD参数。
(8)禁止某类程序或命令执行,要在命令动作前面加上“!”号,并放在允许执行命令之后。

106、请描述如何实现linux系统集权分治的权限分级精细管理?

(1)收集以及制定用户和权限的匹配信息,原则是给于最小权限,但是又能完成所承担的工作职责。
(2)各个用户组设置对应权限,用什么给什么,精细到每一条指令上根据分组情况。
(3)创建规划权限分组的用户.添加相关用户组。并修改etc/sudoers配置文件。
(4)增加sudo的权限开放,确定相关用户加入如soduers权限列表,并详细设置所开放权限内容,并选择是否需要密码的相关执行权限开放。(注意ALL权限,以及密码修改权限设置)。
(5)不建议先给all权限,后面排除。建议使用白名单。
(6)实战调试测试相关权限是否正确配置完成。
(7)编写操作说明,及相关注意事项。
(8)调试完毕,邮件周知所有相关人员系统权限设置生效,并附带操作说明及相关注意事项。

107、请写出下面Linux SecureCRT命令行快捷键命令的功能?

Ctrl + a 光标到开头
Ctrl + c 中断当前程序
Ctrl + d 退出当前窗口或当前用户
Ctrl + e 光标到结尾
Ctrl + l 清屏 相当与clear
Ctrl + u 剪切、删除(光标以前的)内容
Ctrl + k 剪切、删除(光标以后的)内容
Ctrl + r 查找(最近用过的命令)
tab 所有路径以及补全命令
Ctrl+shift+c 命令行复制内容
Ctrl+shift+v 命令行粘贴内容
Ctrl + q 取消屏幕锁定
Ctrl + s 执行屏幕锁定

108、请描述服务器账户日志审计的4种解决方案。

(1)通过环境变量syslog对全部全部日志进行审计(信息量太大,不推荐)
(2)sudo配合syslog服务,进行sudo操作日志进行审计(信息较少,效果不错)
(3)在bash解释器嵌入一个监视器,让所有用户使用修改过的bash程序,作为解释程序。
(4)齐治的堡垒机(商业产品)。

109、如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?

(1)首先确定物理链路是否联通正常。
(2)查看本机IP,路由,DNS的设置情况是否达标。
(3)telnet检查服务器的WEB有没有开启以及防火墙是否阻拦。
(4)ping一下网关,进行最基础的检查,通了,表示能够到达服务器。
(5)测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。
(6)测试ping公网ip的通常情况(记住几个外部IP),
(7)测试DNS的通畅。ping出对应IP。
(8)通过以上检查后,还在网管的路由器上进行检查。

110、描述Linux shell中单引号、双引号及不加引号的简单区别?

单引号:所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就输出什么。
双引号:把双引号里面的内容给输出出来,如果内容中有命令、变量等,会先把,变来那个、命令解析出结果,然后输出最终内容。
双引号内的命令或者变量写法’命令或变量’或$(命令或变量)
无引号:把内容输出出来,可能不会键含有空格的字符串,视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出来,然后输出最终内容,如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引号。一般连续的字符串,数字,路径等可以用,不过最好用双引号,替代之。

111、请简述Linux启动过程中几个重要配置文件的执行过程

Linux登录后,配置执行顺序为(Debian Serials Capable):
/etc/environment -> /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
关于各个文件的作用说明:
(1)/etc/environment:此配置文件设置基本的PATH变量,及系统当前语言变量,虽然比较短,但却在系统启动中占据举足轻重的作用,比如如下是我的系统中的内容:
(2)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(3)/etc/bash.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
(4)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
(5)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(6)~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。
(7)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

112、请描述下列路径的内容是做什么的?

/var/log/messages 系统日志文件
/var/log/secure 系统安全文件(显示登录信息的文件)
/var/spool/clientmqueue 例行性任务回执邮件存放文件
/proc/interrupts 当前系统中断报告文件
/etc/fstab 开机自动挂载磁盘的配置文件
/etc/profile 环境变量存放的文件

113、请给出Linux中eth0的IP地址和广播地址的指令,需使用cut、awk、grep、sed指令。

第一种方法:使用grep和cut取值
第二种方法:使用grep和awk(默认分隔符为空格)取值
第三种方法:使用grep和awk(多分隔符)
第四种方法:使用sed和awk
第五种方法:使用grep和awk(多分隔符与加号+)
第六种方法:awk (分隔符及取行)
第七种方法:grep 网卡文件
第八种方法:head取行 awk分割

114、请输出你知道的20 个LINUX 命令及作用

cp 复制 -a(drp),-r拷贝目录 -p保持属性
mv 移动文件或目录
mkdir 创建目录 -p递归创建目录 mkdir /a/b/c
touch 创建文件,
cd 切换目录(~当前用户家目录,-上一次的目录)
cat 查看文件内容 -n显示行号
ls 查看目录下文件,-l长格式,-d查看目录**********
rm 删除文件或目录 -r目录 -f强制删除(慎用,mv,find)
find 查找文件或目录 -type 类型(f,d,l,c,b),-name名字 -exec执行动作*****
alias 查看及设置别名
unalias 取消别名
seq 打印序列 -s指定分割符 -w数字前面加0补齐位数
head 查看文件前N行,默认10行,-n指定行数
tail 查看文件后N行,默认10行,-n指定行数,-f实时跟踪文件结尾的变化
sed linux三剑客老二,文件增删改查,*****
pwd打印当前工作目录
rmdir 删除空目录
echo 显示输出
xargs (配合find,ls)等查找到的内容处理,-n分组
tree -L层数 -d目录
rpm -q query查询 -a all
uname -r内核 -m32位还是64位 -a所有信息, -n主机名(hostname)
hostname 主机名
whoami 查看当前用户
useradd 添加用户
passwd 改密码,–stdin 非交互设置密码
su 切换用户角色,-切换环境变量

115、什么是运维?什么是游戏运维?

(1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,
在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术
运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等
(2)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
开发运维:是给应用运维开发运维工具和运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等
总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑
开发运维、应用运维和系统运维他们的工作是环环相扣的

116、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

游戏运营要做的一个事情除了协调工作以外,还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划

117、现在给你三百台服务器,你怎么对他们进行管理?

管理三百台服务器的方式:
(1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
(2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
(3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

118、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,一块坏了数据就全没有了
RAID 1,只能2块盘,盘的大小可以不一样,以小的为准
10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高
RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘
特点,读写性能一般,读还好一点,写不好
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别

119、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

LVS: 是基于四层的转发。
HAproxy: 是基于四层和七层的转发,是专业的代理服务器。
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发。
区别:
LVS由于是基于四层的转发所以只能做端口的转发而基于URL的、基于目录的这种转发LVS就做不了。
工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器配置简单,所以中小型企业推荐使用HAproxy
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器
什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你
如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网
区别:
(1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业
但是本身不支持特性挺多,只能缓存静态文件
(2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成
(3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术
在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。
还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存
它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
(4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境
工作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。

120、Tomcat和Resin有什么区别,工作中你怎么选择?

区别:
Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好
工作中选择:
现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容

121、什么是中间件?什么是jdk?

中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯
是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口
但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递
通过中间件,应用程序可以工作于多平台或OS环境。
jdk:
jdk是Java的开发工具包。它是一种用于构建在Java平台上发布的应用程序、applet和组件的开发环境

122、讲述一下Tomcat8005、8009、8080三个端口的含义?

8005:关闭时使用
8009:为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口
8080:一般应用使用

123、什么叫CDN?

CDN是内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度。

124、什么叫网站灰度发布?

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。
AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

125、简述DNS进行域名解析的过程?

例如用户要访问http://www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.http://baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站http://www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端。

126、RabbitMQ是什么东西?

RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用。
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地。

127、讲一下Keepalived的工作原理?

在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息。

128、讲述一下LVS三种模式的工作过程?

LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)
(1)NAT模式(VS-NAT)
原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP,将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈
因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时
大量的数据包都交汇在负载均衡器那,速度就会变慢!
(2)、IP隧道模式(VS-TUN)
原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大
那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS
RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过
负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持
IPTUNNEL协议,所以,在RS的内核中,必须编译支持IPTUNNEL这个选项
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户
所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量
这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”
(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上
(3)、直接路由模式(VS-DR)
原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应
所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR
而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)
并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户
则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端
由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域
也可以简单的理解为在同一台交换机上
优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端
与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

129、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10

130、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log

tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

131、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1

iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

132、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID 0:
带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。
RAID 1:
镜像卷,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,不能提升写数据效率。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1 可以提高读取性能,RAID 1 是磁盘阵列中单位成本最高的,镜像卷可用容量为总容量的1/2,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
RAID5:
至少由3块硬盘组成,分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上。任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据(最多允许1块硬盘损坏)。所以raid5可以实现数据冗余,确保数据的安全性,同时raid5也可以提升数据的读写性能。

133、你对现在运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失
。因此,运维工程师的工作需要严谨及富有创新精神。

134、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80 

135、Linux系统中病毒怎么解决?

(1)最简单有效的方法就是重装系统。
(2)要查的话就是找到病毒文件然后删除。中毒之后一般机器cpu、内存使用率会比较高。可以先用top 命令找到cpu使用率最高的进程,一般病毒文件命名都比较乱,可以用 ps aux命令找到病毒文件位置,然后执行rm -f命令删除病毒文件,最后检查计划任务、开机启动项和病毒文件目录有无其他可以文件等。
(3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下。

136、说说TCP/IP的七层模型?

应用层 (Application):
网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP。
表示层(Presentation Layer):
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等。
会话层(Session Layer):
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话。
传输层 (Transport):
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层 (Network):
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层 (Link):
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层(Physical Layer):
是计算机网络OSI模型中最低的一层,物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层,物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础,物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境,如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”。

137、请列出你了解的web服务器负载架构?

Nginx
Haproxy
Keepalived
LVS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3000.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 ADC+定时器+DMA+FFT

本次实现的功能为单片机DAC输出一个正弦波&#xff0c;然后ADC定时采样用DMA输出&#xff0c;最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1&#xff0c;采用DMA输出&#xff0c;定时器3触发定时器时钟64M&#xff0c;分频后为102.4KHzADC采…

Scrapy的callback进入不了回调方法

一、前言 有的时候&#xff0c;Scrapy的callback方法直接被略过了&#xff0c;不去执行其中的回调方法&#xff0c;可能排查好久都排查不出来&#xff0c;我来教大家集中解决方法。 yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法 1…

基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建

基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建 文章目录基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建一、环境搭建1、虚拟机Ubuntu系统安装2、docker镜像导入3、下载EDK2源码4、容器创建和代码编译4.1 容器创建4.2 代码编译5、运行QEMU_EFI.fd6、VSCODE配置7、日常工作8、不同项目的…

数据结构——二叉树与堆

作者&#xff1a;几冬雪来 时间&#xff1a; 内容&#xff1a;二叉树与堆内容讲解 目录 前言&#xff1a; 1.完全二叉树的存储&#xff1a; 2.堆的实现&#xff1a; 1.创建文件&#xff1a; 2.定义结构体&#xff1a; 3.初始化结构体&#xff1a; 4.扩容空间与扩容…

学习黑客十余年,如何成为一名高级的安全工程师?

1. 前言 说实话&#xff0c;一直到现在&#xff0c;我都认为绝大多数看我这篇文章的读者最后终究会放弃&#xff0c;原因很简单&#xff0c;自学终究是一种适合于极少数人的学习方法&#xff0c;而且非常非常慢&#xff0c;在这个过程中的变数过大&#xff0c;稍有不慎&#…

win32api之文件系统管理(七)

什么是文件系统 文件系统是一种用于管理计算机存储设备上文件和目录的机制。文件系统为文件和目录分配磁盘空间&#xff0c;管理文件和目录的存储和检索&#xff0c;以及提供对它们的访问和共享&#xff0c;以下是常见的两种文件系统&#xff1a; NTFSFAT32磁盘分区容量2T32G…

C/C++之while(do-while)详细讲解

目录 while循环有两个重要组成部分&#xff1a; while 是一个预测试循环 无限循环 do-while 循环 while循环有两个重要组成部分&#xff1a; 进行 true 值或 false 值判断的表达式&#xff1b;只要表达式为 true 就重复执行的语句或块&#xff1b;图 1 显示了 while 循环的…

GIS开源库GEOS库学习教程(一):编译及示例代码

1、介绍 GEOS库是一个集合形状的拓扑关系操作实用库&#xff0c;简单得说&#xff0c;就是判断两个几何形状之间关系和对两个几何形状进行操作以形成新的几何形状的库。GEOS是仿照JTS库做的&#xff0c;是JTS的C实现。下面是JTS Topology Suite (JTS) 拓扑运算函数库的介绍&…

Android 自定义View 之 Mac地址输入框

Mac地址输入框前言正文一、什么是View?二、什么是自定义View三、自定义View① 构造方法② XML样式③ 测量④ 绘制1. 绘制方框2. 绘制文字⑤ 输入1. 键盘布局2. 键盘接口3. 键盘弹窗4. 显示键盘5. 处理输入四、使用自定义View五、源码前言 在日常工作开发中&#xff0c;我们时长…

Ubuntu下载、配置、安装和编译opencv

1 安装相关依赖安装opencv前&#xff0c;需要先准备好编译器、相关依赖sudo apt-get install gcc g cmake vim sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev sudo apt-get install libgtk2.0-…

MySQL数据库实现主从同步

安装MySQL数据库8.0.32 前言 今天来学习数据库主从同步的原理及过程&#xff0c;数据库主要是用来存储WEB数据&#xff0c;在企业当中是极为重要的&#xff0c;下面一起来看下。 1.1 数据库做主从的目的 MySQL主从复制在中小企业&#xff0c;大型企业中广泛使用&#xff0c…

类和对象 - 下

本文已收录至《C语言》专栏&#xff01; 作者&#xff1a;ARMCSKGT 目录 前言 正文 初始化列表 成员变量的定义与初始化 初始化列表的使用 变量定义顺序 explicit关键字 隐式类型转换 自定义类型隐式转换 explicit 限制转换 关于static static声明类成员 友元 友…

重构类关系-Push Down Method函数下移四

重构类关系-Push Down Method函数下移四 1.函数下移 1.1.使用场景 超类中的某个函数只与部分&#xff08;而非全部&#xff09;子类有关。将这个函数移到相关的那些子类去。 Push Down Method (328)与Pull Up Method (322)恰恰相反。当我有必要把某些行为从超类移至特定的子…

maven的profiles功能介绍、maven自定义插件plugin

profiles maven配置文件的profiles功能类似于springboot的spring.profiles.active配置&#xff0c;指定不同的环境来读取相应的配置内容。 <profiles>标签的子标签可以包含<repository> <plugin> <dependencies> <distributionManagement>等。 …

go语言gin框架学习

让框架去做http解包封包等&#xff0c;让我们的精力用在应用层开发 MVC模式 M: model&#xff0c;操作数据库gorm view 视图 处理模板页面 contoller 控制器 路由 逻辑函数 解决gin相关代码飘红的问题 记得启用gomodule go env -w GO111MODULEon然后到相应目录下执行 go mod i…

Karl Guttag:论相机对焦技术在AR/VR中的沿用

近期&#xff0c;AR/VR光学专家Karl Guttag介绍了两家在CES 2023展出光学传感技术的公司&#xff1a;poLight和CML&#xff08;剑桥机电一体化&#xff09;。​同时介绍两家公司的原因&#xff0c;是因为他们提供了实现AR/VR“光学微动”&#xff08;Optics Micromovement&…

5.多线程学习

作者&#xff1a;爱塔居 专栏&#xff1a;JavaEE 作者简介&#xff1a;大三学生&#xff0c;喜欢总结与分享~ 文章目录 目录 文章目录 章节回顾 一、wait 和notify 二、设计模式 2.1 单例模式 章节回顾 线程安全 1.一个线程不安全的案例&#xff08;两个线程各自自增5w次&…

PyTorch 之 基于经典网络架构训练图像分类模型

文章目录一、 模块简单介绍1. 数据预处理部分2. 网络模块设置3. 网络模型保存与测试二、数据读取与预处理操作1. 制作数据源2. 读取标签对应的实际名字3. 展示数据三、模型构建与实现1. 加载 models 中提供的模型&#xff0c;并且直接用训练的好权重当做初始化参数2. 参考 pyto…

【Linux】基于阻塞队列的生产者消费者模型

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;为何要使用…

谈谈低代码的安全问题,一文全给你解决喽

低代码是一种软件开发方法&#xff0c;通过使用图形化用户界面和可视化建模工具&#xff0c;以及自动生成代码的技术&#xff0c;使得开发人员可以更快速地构建和发布应用程序。 作为近些年软件开发市场热门之一&#xff0c;市面上也涌现了许多低代码产品&#xff0c;诸如简道云…