1) 简述Linux权限划分原则
--权限分离。Linux的系统、数据库等不同功能服务器需分类分人管理。
--在满足使用的前提下,权限最小原则。
--减少使用root,日常使用sudo。
--重要的系统文件用chattr +i进行锁定。
--使用脚本监测新增的SUID、SGID文件。
--开启SSH密钥对登陆,修改SSH服务端口。
2)Linux系统优化的措施
--用ntsysv命令,禁用不需要的服务。
--避免直接使用root,尽量用sudo授权。
--用chattr +i锁定重要文件。
--配置国内yum源和epel源,加快下载速度。
--配置系统的同时打开最大文件数。
vim /etc/profile
ulimit -SHn 65535
--同步时间服务器,并写入定时任务。
crontab -e
/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
--开启SSH密钥对登陆,修改SSH服务端口。
--配置合理的iptables防火墙规则和selinux安全规则。
--指定合理的监控策略,优化监控项。
--定时备份系统重要文件。
3)简述NFS分布式存储原理
4)僵尸进程的含义、查找与解决
在Linux系统中,一个进程通过调用fork
函数,生成新的进程,原进程就是父进程,新进程就是子进程。父子进程都是独立运行,因此父进程无法判断子进程何时结束。
正常情况下:
当子进程先于父进程退出,父进程就会调用`wait`或`waitpid`函数回收子进程的资源,并获得子进程的终止状态。
当子进程晚于父进程退出,子进程就会成为孤儿进程,被进程号为1的init进程领养,完成子进程的状态收集任务。
但是,当子进程先于父进程退出,父进程此时十分繁忙,无法回收子进程的资源,子进程的残余资源PCB就会存放于内核中,变成僵尸进程。
查看僵尸进程ps -al|awk '{print $2,$4}'|grep Z
由于僵尸进程是”已经死过一次“的进程,无法再次被杀死。它本质上是父进程没有回收的残留资源,因此只需要杀死父进程,就可以使得`init`进程对其进行资源回收。
如果父进程PID是6789,那么kill -9 6789
即可.
但如果父进程是PID 1
(init进程),那么就不能如此操作,否则系统直接重启。
5)程序、进程和线程
程序是计算机语言编写的代码,是静止的。需要将其加载到内存中,由系统分配资源才能执行。
进程是CPU分配资源的最小单位,
进程 | 线程 |
---|---|
CPU分配资源的最小单位 | CPU调度的最小单位 |
一个程序会有一个或以上的进程 | 一个进程会有一个或以上的线程 |
涉及(释放)资源管理信息,创建(终止)的速度慢 | 共享资源管理信息,创建和终止的速度快 |
有不同的页表,进程之间切换速度慢 | 同一页表(虚拟内存共享)进程切换速度快 |
相互独立,某个子进程崩溃不影响其他进程 | 某个线程崩溃会影响整个进程 |