网站首页 > 编程文章 正文
奇虎360:
1. 写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。
find / -name “*.log” -ctime +3 -exec rm -f {} \;
2.写一个脚本将某目录下大于 100k 的文件移动至/tmp下
for i in `find /test -type f -size +100k`;do cd /test && mv $i /tmp;done
3.写一个脚本将数据库备份并打包至远程服务器192.168.1.1 /backup目录下
mount 192.168.1.1:/backup /mnt
cd /mnt
/usr/local/mysql/bin/mysqldump -hlocalhost -uroot test >test.sql
tar czf test.sql.tar.gz test.sql
rm -f test.sql
4.写一个防火墙配置脚本,只允许远程主机访问本机的80端口
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -P INPUT DROP
5.写一个脚本进行nginx日志统计,得到访问ip最多的前10个(nginx日志路径:/home/logs/nginx/default/access.log
awk ‘{a[$1]++}END{for (j in a) print a[j],j}’ /home/logs/nginx/default/access.log|sort -nr|head -10
6.写出下列配置的含义
(1)MaxKeepAliveRequests 100
(2)Options FollowSymLinks
Order Deny Allow
Deny from all
Allow from 192.168.1.1
(1)MaxKeepAliveRequests — 100 连接的最大请求数
(2)Options FollowSymLinks — 允许192.168.1.1可以列目录
Order Deny Allow
Deny from all
Allow from 192.168.1.1
7.写一个脚本把指定文件里的/usr/local替换为别的目录
sed ‘s:/user/local:/tmp:g’ filename
8.简要描述 Linux 的启动过程?
BIOS 启动引导(从 mbr 中装载启动管理器 grub)→ GRUB 启动引导(装载 kernel 和 initrd 到内存)→ 内核启动参数 → sys init 初始化
9.简要叙述下列端口所运行的服务
21: ftp
22: ssh
23: telnet
25: SMTP
110: pop3
143: IMAP
873: rsync
3306: MySQL
10.TCP 头最小长度是多少字节?
64字节
11.让某普通用户能进行 cp /dir1/file1 /dir2 的命令时,请说明 dir1 file1 最小具有什么权限
读取和执行权限 rx
12.简述 TCP 三次握手的过程
13.请简单阐述运维工程师的职责
新浪:
1.请写出以下命令执行的结果
bash$ echo “sinaops” | read a ; echo $a
bash$ echo “sinaops” | while read a ;do echo $a ;done
第一行为空
第二行:sinaops
2.什么是 Linux 的 daemon 进程?和一般进程有什么区别?
daemon 进程又称为守护 进程,是在系统 启动就运行,系统关闭才停止的进程,独立于终端之外,不与客户端交互。一般进程在关闭终端后就停止了,而 daemon 进程不会停止。
3.通过 free 命令查看内存是,看到的 buffer 和 cache 各表示什么含义?
使用内存是实际当前使用内存减去 buffers/cache 之和;空闲内存是实际空闲内存加上 buffers/cache 之和。
4.使用ln -s和mv对某一个文件做如下操作时bash$ ln -s /usr/afile /etc/bfile bash$ mv /etc/afile /etc/bfile对 inode 和 block 有哪些影响?
5.apache 和 nginx 这两个 web 服务器有哪些区别?
6.描述 TCP 三次握手的过程
7.请说明一下 HTTP 协议中的 keeplive 是做什么的?它的适应场景是什么?
keep-alive 主要是为了让多个 HTTP 请求共享一个 TCP 连接,以避免每个 HTTP 又新建一个 TCP 连接。每个 HTTP 服务器默认的 keep-alive 时间可能是不一样的。
客户端发送了一个 HTTP 请求,服务器响应后,判断这个 HTTP 是否是 keep-alive 模式的,如果不是则关闭连接,如果是 keep-alive,则等待 keep-alive time 后再关闭,
如果这期间再收到一个 HTTP 请求,则继续等待最后一个请求的 keep-alive time 时间,直到 keep-alive time 时间内没有收到请求,则关闭。
8.请解释 session 和 cookie 的实现原理和区别
9.将 lvs 配置为 DR 方式,发现无法正常工作,经测试直接访问 realserver 可以提供服务,请问用何种方法定位 lvs 问题
10.如何发现 Linux 系统是否出现性能瓶颈?请例举出你常用的监控命令以及参数
11.尽可能多的用不同语言打印 “hello sina”
12.bash shell 里 $0.$?.$ 各表示什么含义
13.用任意脚本统计主机 TCP 连接数并按照连接状态分类
14.有一文件如下格式,请提取.sina.com.cn前面的主机名部分并写入到回到该文件中
1 test.sina.com.cn
2 www.sina.com.cn
…
999 z.sina.com.cn
15.同一时间脚本只能运行一个实例
16.计算出从你生日之日起到今天一共过了多少天?
17.写出一段程序,用于判断一段字符串是否是回文。
18.有一文件记录了 1-100000 之间随机的整数共 5000个,存储的格式 100, 50, 35, 89… 请取出其中最大和最小的整数。
美团点评:
1.Windows 和 Linux 常用的远程连接工具有那些
命令远程连接工具:Xshell、SecureCRT、Putty、SSH Secure Shell Client等
图形远程连接工具:xmanager(需安装配置服务并打开177端口)、VNC-Viewer(linux需安装vncserver)、windows自带的远程桌面(linux需安装xrdp和vnc)
2.Linux 系统软件安装和卸载的常见方法
- rpm 包卸载:rpm -e XXX.rpm
- yum remove xxx.rpm 这种方法非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容易造成系统缺少某些包而崩溃等问题
- 源码包卸载:cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命令即可;或者直接删除安装目录
3.如何修改 Linux 的 IP地址、网关和主机名
- 修改 IP地址、网关:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,修改里面 IPADDR 和 GATEWAY 内容,没有这两行,则添加即可,
- 添加时确保 BOOTPROTO=static,静态地址,如 IPADDR = 192.168.1.100 GATEWAY = 192.168.1.1
- 修改主机名称:编辑 /etc/sysconfig/network,修改里面的 HOSTNAME 内容,如设置主机名称为 mysql,则:HOSTNAME = mysql 即可;
4.编写脚本实现以下功能
每天早上5点开始做备份
要备份的是 /var/mylog 里所有文件和目录可以压缩进行备份
备份可以保存到别一台器上192、168、1、2 FTP帐号 aaa 密码 bbb
要示每天的备份文件要带有当天的日期标记
#!/bin/bash
#scripts for dirbakup and upload to ftp server.
bakdir=mylog
date=`date +%F`
cd /var
tar zcf ${bakdir}_${date}.tar.gz ${bakdir}
sleep 1
ftp -n <<- EOF
open 192.168.1.1 # 远程ftp服务器
user aaa bbb
put mylog_*.tar.gz
bye
EOF
rm -rf mylog_*.tar.gz
添加 crontab:
crontab -1
00 05 * * * /bin/bash /root/mylogbak.sh #每天早上5点开始执行备份脚本
5.IPTABLES 相关的命令
6.你是否对 Windows 系统打过补丁,如果有 100台你会怎么做?Windows 下怎么为 MySQL 做定时完全备份?
在局域域环境中,应该是将一台服务器作为域控补丁的update服务器,利用“发布与指派”的功能,将补丁批量更新到内网其他服务器;
批处理+计划任务+ftp上传至远程服务器
7.新安装 MySQL 后怎样提升 MySQL 的安全级别?
- 修改 MySQL 默认端口
- Linux 下可以通过 iptables 来限制访问 MySQL 端口的 IP地址
- 对所有用户设置较复杂密码并严格指定对应账号的访问 IP(可在 MySQL 库中 user 表中指定用户的访问可访问 IP地址)
- root 特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)
- 开启二进制查询日志和慢查询日志
- MySQL 安装目录及数据存储目录权限控制:给 MySQL 安装目录读取权限,给 MySQL 日志和数据所在目录读取和写入权限
- 删除无用 MySQL 账号和删除无用的数据库(安装好的 MySQL 默认会有个 test 库,可将其删除)
8.MySQL 的主从原理,怎么配置文件?
- master 将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
- slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
- slave 重做中继日志中的事件,将改变反映它自己的数据。
MySQL 复制的基本原理过程如下:
(1)slave 上面的 IO 线程连接上 master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
(2)master 接收到来自 slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 slave 端的 IO 线程。
返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 master 端 binary log 文件的名称以及在 binary log 中的位置;
(3)slave 的 IO 线程收到信息后,将接收到的日志内容依次写入到 slave 端的 RelayLog 文件(mysql-relay-lin.xxxxx)的最末端,
并将读取到的 master 端的 bin-log 的文件名和位置记录到 master-info 文件中,以便在下一次读取的时候能够清楚的告诉 master
“我需要从某个 bin-log 的哪个位置开始往后的日志内容,请发给我”
(4)slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 master 端真实执行时候的那些可执行的查询或操作语句,
并在自身执行那些查询或操作语句,这样,实际上就是在 master 端和 slave 端执行了同样的查询或操作语句,所以两端的数据是完全一样的。
MySQL 主从复制的优点如下:
<1> 如果主服务器出现问题, 可以快速切换到从服务器提供的服务;
<2> 可以在从服务器上执行查询操作, 降低主服务器的访问压力;
<3> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。
9.如何为 MySQL 添加一个用户?
mysql> grant select,insert,update,delete on book.* to test2@localhost identified by “abc”;
#增加test2用户,密码为abc。并只能在localhost这台主机上登录,并且只能访问book这个库中的表,具有查询,插入,更新,删除权限;
语法:mysql> GRANT <权限> ON <库>.<表> TO ‘用户’@’主机名’ identified by “密码”;
10.显示 /test 目录下的所有目录
四种方法:
ls -d */
find .n-typem-d -maxdepth 1
ls -F | grep '/