操作系统面试
操作系统简介
什么是进程和线程?它们有哪些区别和联系?
进程是正在运行的程序,其占用系统资源是独立的。
线程是系统调度的最小单位,其使用系统资源是共享的。
死锁是什么?如何预防和避免死锁?
互斥
占有并等待
不可强占
循环依赖
线程间有哪些通信方式?
共享内存
MQ
RPC
锁
管程(synchronized)
信号量
Linux 命令 Cheat Sheet
常见命令分类
- 查看 Linux 命令帮助信息 - 关键词:
help
,whatis
,info
,which
,whereis
,man
- Linux 文件目录管理 - 关键词:
cd
,ls
,pwd
,mkdir
,rmdir
,tree
,touch
,ln
,rename
,stat
,file
,chmod
,chown
,locate
,find
,cp
,mv
,rm
- Linux 文件内容查看命令 - 关键词:
cat
,head
,tail
,more
,less
,sed
,vi
,grep
- Linux 文件压缩和解压 - 关键词:
tar
,gzip
,zip
,unzip
- Linux 用户管理 - 关键词:
groupadd
,groupdel
,groupmod
,useradd
,userdel
,usermod
,passwd
,su
,sudo
- Linux 系统管理 - 关键词:
reboot
,exit
,shutdown
,date
,mount
,umount
,ps
,kill
,systemctl
,service
,crontab
- Linux 网络管理 - 关键词:关键词:
curl
,wget
,telnet
,ip
,hostname
,ifconfig
,route
,ssh
,ssh-keygen
,firewalld
,iptables
,host
,nslookup
,nc
/netcat
,ping
,traceroute
,netstat
- Linux 硬件管理 - 关键词:
df
,du
,top
,free
,iotop
- Linux 软件管理 - 关键词:
rpm
,yum
,apt-get
定时任务 - crontab
环境:CentOS
通过 crontab
命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
crond 服务
Linux 通过 crond 服务来支持 crontab。
检查 crond
服务
使用 systemctl list-unit-files
命令确认 crond
服务是否已安装。
防火墙 - Firewalld
firewalld 服务命令
systemctl enable firewalld.service # 开启服务(开机自动启动服务)
systemctl disable firewalld.service # 关闭服务(开机不会自动启动服务)
systemctl start firewalld.service # 启动服务
systemctl stop firewalld.service # 停止服务
systemctl restart firewalld.service # 重启服务
systemctl reload firewalld.service # 重新载入配置
systemctl status firewalld.service # 查看服务状态
时间服务器 - NTP
NTP 简介
网络时间协议(英语:Network Time Protocol,缩写:NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议,位于 OSI 模型的应用层。自 1985 年以来,NTP 是目前仍在使用的最古老的互联网协议之一。NTP 由特拉华大学的 David L. Mills(英语:David L. Mills)设计。
NTP 意图将所有参与计算机的协调世界时(UTC)时间同步到几毫秒的误差内。
NTP 要点:
Iptables 应用
iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。 可以直接配置,也可以通过许多前端和图形界面配置。
iptables 也经常代指该内核级防火墙。iptables 用于 ipv4,ip6tables 用于 ipv6。
nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。
环境:CentOS7
Systemd 应用
oh-my-zsh 应用
Zsh 简介
Zsh 是什么
使用 Linux 的人都知道:*Shell* 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。_Shell* 既是一种命令语言,又是一种程序设计语言。
Shell 的类型有很多种,linux 下默认的是 bash,虽然 bash 的功能已经很强大,但对于以懒惰为美德的程序员来说,bash 的提示功能不够强大,界面也不够炫,并非理想工具。
Zsh 也是一种 Shell(据传说 99% 的 Bash 操作 和 Zsh 是相同的),它的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,出现了一个名叫 oh-my-zsh 的开源项目,使用 zsh 就变得十分简易了。