1. 主流Linux发行版本区别-CentOS-麒麟-Ubuntu
2. 远程连接Linux系统需要知道:ip 用户名 密码 端口号 协议
3. 常见目录及含义
4. 软硬连接区别
含义:软连接是快捷方式,存放的是源文件;在同一个磁盘分区中,inode号码相同的文件互为硬链接
特点:软连接对文件目录都可以创建;硬链接一般对文件创建,无法对目录创建;硬链接可以防止一些误删除,无法防止误修改
如何创建:软连接:ln -s;硬链接:ln
咋没的:删除源文件,软连接变红无法使用;删除硬链接,软连接和源文件无影响;删除硬链接和源文件,文件无法访问
5. 添加虚拟用户mysql useradd -s /sbin/nologin -M mysql
6. 文件与目录的rwx权限
7. Linux 软件安装方式 yum/apt rpm/dpkg 二进制 编译安装
8. 单引号,双引号,反引号,不加引号区别
单引号 所见即所得,单引号里面的内容会原封不动输出。shell(bash)不会解析与运行
双引号 与单引号类似,特殊符号会被解析$,“,不会解析{}(通配符匹配文件名)
不加引号 与双引号类似,解析{}
反引号 优先执行,先运行里面的命令
9. 如何检查系统有僵尸进程,如果有怎么处理
top -bn1| grep z 查看僵尸进程父进程 ,父进程pid为1,则需要重启;
不是1,则结束父进程pstree -p kill 父进程
10. 系统负载高如何排查
uptime/w/top 负载达到cpu核心总数60-70%
top cpu us/sy wa ps aux
/iotop -o
11. 磁盘空间不足与排查方法
监控/巡检软件发现——”no space left on device“
——远程连接/堡垒机 df -h——
du -sh——lsof|grep delete
——df -i——find / -type f -size +1M
12. Linux运行级别
0 关机poweroff 1 单用户/救援模式secure,没有网络
6 重启 reboot 5 图形界面,x11,桌面模式,graphical(图形化的),vnc连接或本地连接
234 多用户模式/命令行模式/文本模式/multi-user(多用户)
13. 启动流程
开机自检 查看硬件是否与有问题
加载引导程序 选择启动方式u盘 硬盘 网络
GRUB菜单 选择内核 救援模式
加载内核 boot/目录 加载内核相关镜像
启动第一个进程systemd
读取运行级别
系统初始化 主机名 网络 自动挂载
启动并行服务 启动各种开机自启动
加载login显示登录页面
14. raid 0 1 5 10 特点与区别
最少几块硬盘 冗余 容量 性能
最少几块硬盘 | 冗余(安全) | 容量 | 性能 | 应用 | 举例 | |
raid 0 | 1/2 | 最低 | 所有 | 读写最快 | 不要安全只要速度 | 数据库从库存储从库web服务器 |
raid 1 | 只能2 | 100% | 所有硬盘的一半 | 读取ok写入慢 | 只要安全对速度没要求 | 系统盘监控服务器 |
raid 5 | 3 | 损坏一块 | 损失一块硬盘容量 | 写入不好读取ok | 对于速度安全要求都不高 | 普通数据库存储访问量不高 |
raid 10 | 4 | 损坏一半 | 所有硬盘一半 | 读写很快 | 对于安全速度都要求 | 高并发或高访问量数据库主库存储 |
15. shell 脚本中 $1 $0 $# $*$@ $? 的含义(脚本中函数中)
位置参数 | 脚本中 | 函数中 |
$n | 脚本中第n个参数 | 函数中第n个参数 |
$# | 脚本的参数个数 | 函数的参数个数 |
$0 | 脚本的名字 | 脚本的名字 |
$*/$@ | 脚本所有的参数 | 函数所有的参数 |
$? | 脚本返回值 | 函数返回值 |
16. shell 脚本中 exit return break continue含义
exit 退出 return 函数返回值 break 循环中立即退出 continue 循环中跳过,继续
17. 远程连接故障排查流程并写出对应检查命令
检查道路是否通畅 两点之间是否相通 当前位置,目标 延迟 ping IP或域名
检查是否打劫 检查防火墙 selinux 暂时不拦截 22 端口
检查服务是否可以访问 启动 检查端口是否可以访问 telnet ip/域名 端口
18. 递归修改/app/code/blog/目录所有者为 www
chown -R www.www /app/code/blog/
19. 排除/etc/ssh/sshd_config 文件中含有空行或带有#的行
egrep -v ‘^$|#’ \ sed -r ‘/^$|#/d’ \ awk ‘!/^$|#/’ \ sed -rn ‘/^$|#/!p’
20. 找出系统中以.log结尾,修改时间7天之前,大小大于10M 并删除
find / -type f -name‘*.log’ -mtime +7 -size +10M |xargs rm-f
rm -f `find / -type f -name ‘*.log’ -mtime +7 -size +10M`
find / -type f -name ‘*.log’ -mtime +7 -size +10M -exec rm -f {} \;
21. root 密码忘记如何解决?
重启Linux 在GRUB菜单选择第1个然后按e编辑(edit). root用户名,Kylin123123
找出Linux16的行修改 ro 为 rw ,在这一行的最后添加 init=/bin/bash
修改完成,按ctrl+x进入救援模式
进入系统通过root用户,然后通过passwd命令给root设置新的密码.
22. 你怀疑你的系统正在被暴力破解你要分析哪个文件?
/var/log/secure /var/log/auth.log
23. 分析文件统计每个ip 破解你主机的次数
grep -i ‘failed passwd’ /var/log/secure |awk ‘{print $(NF-3)}’ |sort |uniq -c |sort -rnk2 |head
24. 一个备份命令要很久,怕命令行断开命令结束,如何做?
后台运行 nohup xxx &
25. ip.txt存放了很多ip地址,一行1个,现在要对这个文件中每个ip 进行ping检查 ping2次并输出结果(成功或失败),写出脚本
#!/bin/bash
ip=/oldboy/ip.txt
while read line
do
ping -c2 $line >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "$line is ok"
else
echo "$line is failed"
fi
done<$ip
#!/bin/bash
ips=`cat /oldboy/ip.txt`
for ip in $ips
do
ping -c2 $ip >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "$ip is ok"
else
echo "$ip is failed"
fi
done
26. check_web.sh 是用来检测指定网站是否可以访问的脚本
#!/bin/bash
url=$1
[ -z "$url" ] &&{
echo "wangzhiweikong"
exit 1
}
curl -s -L $url >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "$url 访问成功"
else
echo "$url 访问失败"
fi
27. 批量添加10个用户oldboy01..10 并设置10位随机密码,要求用户名和密码保存到/root/pass.txt中,写出脚本
#!/bin/bash
if ! which mkpasswd >/dev/null 2>&1;then
echo "mkpasswd not found"
exit 1
fi
for name in oldboy{01..10}
do
pass=`mkpasswd -l 10`
useradd $name
echo $pass |passwd --stdin $name
echo "$name $pass">>/root/pass.txt
done
#!/bin/bash
#desc:需要判断系统 ubt系统mkpasswd.pl ubt系统没有passwd --stind 需要用chpasswd实现
#检查系统
os_life=/etc/os-release
if [ -f $os-life ];then
. $os_life
else
echo $os_file not found
exit 1
fi
#检查命令
case "$ID" in
centos|kylin)
if ! which mkpasswd >/dev/null 2>&1;then
echo "mkpasswd not found"
exit 2
fi
;;
ubuntu|debian)
if ! which mkpasswd.pl >/dev/null 2>&1;then
echo "mkpasswd.pl not found"
exit 2
fi
;;
*)
echo "os not support $ID"
exit
esac
#useradd
redhat_useradd() {
for name in oldboy{01..10}
do
local pass=`mkpass-l 10`
useradd $name
echo "$passwd --stdin $name"
echo "$name $pass" >>/root/pass.txt
done
return $?
}
debian_useradd() {
for name in oldboy{01..10}
do
local pass=`mkpass.pl -l 10`
useradd -s /bin/bash -m $name
echo "${name}:${pass}" >>/root/pass.txt
done
cat /root/pass.txt|chpasswd
return $?
}
#useradd
case "$ID" in
centos|kylin)
redhat_useradd
;;
ubuntu|debian)
debian_useradd
;;
*)
echo "os not support $ID"
exit
esac