Linux
RedHat公司已经宣布停止维护CentOS服务器操作系统,可以选择华为开源的欧拉系统、阿里开源的龙蜥系统和腾讯开源的TencentOS系统
面试
几个基本的Linux命令
pwd #查看当前绝对路径 结果/home/stu
touch / vi编辑器 #创建文件
mkdir -p /home/stu/test #当前绝对路径创建test的文件夹
cd /home/stu #切换目录 回到当前绝对路径
cd ~ 进入用户主目录 cd .. 返回上一级目录;cd ../..返回上两级目录
ls #查看当前目录的文件名称,明确是否创建成功
ll #罗列出当前目录中所有文件和文件夹的详细信息
rm(-rf) #用来删除文件或文件夹
du #当前目录、所有子目录大小(以**KB**为计数单位)
du -h #查看当前目录、所有子目录大小(以**MB**为计数单位)
按照文件大小顺序列出文件 ls-laS -S选项。 默认情况下,它以降序显示输出(从大到小)。ssh user1@192.168.10.1 用户名 IP地址或者域名 通过远程连接服务器
su root切换到root用户
du-sh 查看所有子目录的大小
cp-rf 强制递归复制
scp用于远程数据传输
uptime服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况cat #一次性显示整个文件的内容,适用于文件内容少的情况;
tac #一次性显示整个文件的内容 倒序显示
more和less #用于显示文件内容超过一屏的内容,并且提供翻页的功能。
tail 和 head #分别显示文件的后几行和前几行内容。常用于大文件的截取file word.txt #辨识文件类型 结果 word.txt: ASCII text
file -b word.txt #辨识文件类型不显示文件名 结果ASCII text
file -z a.tar.gz #解压文件**grep** #指定文件中搜索特定的内容,并将含有这些内容的行标准输出 给定文件中查找与设定条件相符字符串
grep "牛客" 文件名 | wc -l 统计一个文件中"牛客"出现的行数
awk的基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk '{if($4~/Brown/) print $0}' tab2
cut: 从数据文件或者命令的输出中截取(也就是剪出)各种各样的数据域,cut –cchars filenohup命令:在你退出帐户/关闭终端之后继续运行相应的进程alias [别名]=[指令名称] 用于设置指令的别名:find #按照文件名/类型 搜索文件netstat #用来本机的网络连接及端口占用情况的
netstat -ntlp /查看当前所有tcp端口 t-tcp相关,u-udp相关,n-拒绝显示别名,l-列出监听的服务状态,p-建立相关链接的程序名
netstat -ntulp | grep 80 /查看所有80端口使用情况
lsof -i:8080:查看8080端口占用 但是需要root权限ifconfig # 查看ip地址和**网络接口**linux环境下 ipconfig是在cmd的dos下用的
**ps 用来列出系统中当前运行的那些进程
jobs 查看后台进程作业ID的指令**
pg提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的
top 可以查看进程的CPU和内存占用情况
free是查看内存情况和交换空间
df指令:系统磁盘使用情况。 对磁盘的更改parted(对指定的硬盘进行分区) resize2fs(放大或者缩小没有挂载的文件系统的大小) umount(卸除目前挂在Linux目录中的文件系统)**tcpdump** 在Linux系统上抓取网卡上的网络数据包
lsblk | grep sdb ;fdisk -l | grep sdb 查看当前挂载块设备sdb多大/etc 存放系统主要配件
/etc/hosts:主机名到 IP 地址的映射关系
/etc/resolv.conf:DNS 服务的配置文件
/etc/gateways:建立动态路由
/etc/services:定义了网络服务的端口 dhcpd.conf 配置文件中
option routers 192.168.0.1; 配置默认网关
option subnet-mask 255.255.255.0; 配置子网掩码
option domain-name-servers 192.168.1.1; 指定DNS服务器
option domain-name-servers; 配置多个DNS服务器lprm 将一个工作由打印机贮列中移除
lpq 命令用于查看一个打印队列的状态,
lpd 命令 是一个常驻的打印机管理程序,会根据 /etc/printcap 的内容来管理本地或远端的打印机。
lpr(line printer,按行打印)将一个或多个文件放入打印队列等待打印。> 表示输出重定向 >> 输出重定向追加
cat file1 file2 > file3 将两个文件拼接在一起生成一个新的文件
cat file1 >> file2 是将文件1直接接在文件2的结尾就可以了
文件file1复制为file2
cp file1 file2 cp指令用于复制文件或目录
cat file1 >file2 , cat < file1 >file2
dd if=file1 of=file2 将文件file1拷贝到文件file2sed -i 's/xxxx/yyyy/g' ./*.txt 将xxxx 替换为yyyy;在当前目录下的所有txt文件 -i 表示的是替换并直接修改文件
查看file1文件的第300-500行的内容
sed -n '300,500p' file1 获取指定范围的内容,其中p :列印,亦即将某个选择的数据印出
cat file1 | tail -n +300 | head -n 200 输出从第K行开始的内容,然后输出前200行
cat file1| head -n 500 | tail -n +300 输出前500行,然后输出其中从第300行开始的内容
+K是输出从第K行开始的内容 K是输出共K行的内容sed 's/AAA/BBB/g' xyz > xyz 将文件xyz中的单词AAA全部替换为BBB s表示替换命令 /g 表示一行上的替换所有的匹配ctrl+C 终止一个前台进程常用到的命令和操作
kill 关闭后台进程dd 命令用于读取、转换并输出数据
rwx权限可读、写、执行,范围分别是:拥有者(user),和拥有者同组(group),其他(others)。若是文件夹一开始为d,否则为-。r=4,w=2,x=1,三个为一组,空的用-代表
765 的文件 -rwxrw-r-x
chmod 100 /www会清空原有权限,只给u一个x权限 =chmod u+x ,g-x,o-x /www a代表所有用户
chomd 777 修改所有人读写执行的权限
chown将指定文件的拥有者改为指定的用户或组时钟表的命令:* * * * * command 分1~59 时1~23(0表示0点) 日1~31 月1~12 周0~6(0表示星期天) 命令
*/5 * * * * exam 每5分钟运行一任务exam退出
esc,在vi的插入模式或者底行命令模式下进入命令模式
exit,一般用于退出会话式程序或者交互式命令行,如ssh远程连接,切换 shell(Linux中)
q,用来退出 man 手册查看命令或者配置文件的状态,或者more、less等命令查看文件的状态
quit,一般用于图形界面的退出linux的虚拟内存模型,使得每个进程都以为自己拥有整个内存空间(每个进程看到的内存空间一致)
Vim
Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解 (biancheng.net)
是一个文本编辑器;没有菜单,只有命令;作用:建立、编辑、显示文本文件。
共有3种状态,退出编辑器的命令是:q 删除当前光标所在行开始计5行内容的命令是5dd
Vi:主要用来查看和修改文件内容;i - 插入文本 a - 追加文本 o-光标后插入新的一行
G+dd //编辑模式下 G 其实是 Shift + g,该快捷键表示跳转到最后一行,dd 表示删除一行
cc 多数unix通过此调用它们的C编译程序
yy 复制光标所在的一整行
p 将已复制的数据在光标的下一行粘贴
P 将已复制的数据在光标的上一行粘贴
基础知识
Linux进程间基本的通信方式
管道 (pipe) (包括匿名管道和命名管道、系统管道)、信号 (signal)、消息队列 (queue)、共享内存、信号量和套接字。没有临界区
孤儿进程 僵尸进程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
clone fork
fork() 函数复制时将父进程的所有资源都通过复制数据结构进行了复制,然后传递给子进程,所以 fork() 函数不带参数;
clone() 函数则是将部分父进程的资源的数据结构进行复制,复制哪些资源是可选择的,这个可以通过参数设定,所以 clone() 函数带参数,没有复制的资源可以通过指针共享给子进程
clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等等