1. Linux系统简介
操作系统严格意义上来讲就是一个内核,是一套管理软硬件资源的软件组件。我们平时所说的操作系统其实是发行版,包括:内核 + 桌面环境 + 常用软件,常见的内核有
windows、Linux常见的操作系统:
- 桌面版:
windows系列、Ubuntu(桌面)、MacOS - 服务器:
windows server、Linux系列、Unix系列 - 移动端:
Android、iOS、Symbian、windows phone、Ali OS 
- 桌面版:
 32位和64位的区别:简单理解:就相当于4车道与8车道,本质上是寻址空间的区别。
- 32位:理论值42^102^10*2^10,即4
G,大概可用内存为3.25G - 64位:理论值2^64,现在主流的主板一般最大支持128
G 
- 32位:理论值42^102^10*2^10,即4
 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux发行版就是在内核的基础上,添加特定桌面环境和常用软件,省去了自己组装的麻烦。常见的桌面版有ubuntu(desktop)、Ubuntu kylin、deepin,服务器有debian、redhat、Ubuntu(server)、centos
Linux启动过程:Linux系统的启动过程可以分为5个阶段- 内核的引导:计算机打开电源后,首先是
BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入/boot目录下的内核文件。 - 运行
init:init进程是系统所有进程的起点,init程序首先是需要读取配置文件/etc/inittab,里面记录系统的运行级别,Linux系统级别有7个:- 0:关机模式
 - 1:单用户模式,
root权限 - 2 ~ 5:多用户模式(桌面)
 - 6:重启
 
 - 系统初始化:执行对应级别目录下的脚本,如级别5,对应
/etc/rc5.d目录;解析用户自定义的启动脚本,如,/etc/rc.local - 建立终端:
rc执行完毕后,返回init,init会打开6个终端,以便用户登录系统 - 用户登录系统:命令行登录、
ssh登录、图形界面登录 
- 内核的引导:计算机打开电源后,首先是
 
2. Linux目录结构及vim
文件系统:操作管理存储设备或分区上的文件的方法和数据结构,也就是存储设备上组织文件的方式。操作系统中负责管理和存储文件信息的软件机构叫文件管理系统,简称为文件系统。常见的文件系统有:
fat16(MS-DOS 6.X),分区最大2Gfat32(windows 95),单个文件最大4G,性能较弱,容易产生碎片ntfs(window nt),提升了fat32文件系统的稳定性ext4(Linux),扩展型日志文件系统hfs[+] (Mac),苹果设备的文件系统exfat(win/mac),可以支持4G以上的单个文件,适合于闪存
根目录结构:
目录 说明 /根目录 /bin大多数的操作命令 /boot系统启动相关文件 /cdrom挂在光盘 /dev设备文件( linux下有一切设备皆文件之称)/etc配置文件目录(经常使用) /home所有普通用户的家目录,一个用户对应该目录下的一个文件夹 /lib库文件 /lib6464位库文件 /lost+found系统出现异常时保存信息以便恢复,平时是空的 /media自动识别设备的挂载点 /mntmount,专门用于挂载的目录/optoption,用于安装可选软件/proc虚拟的文件系统,可以映射硬件信息 /root超级用户( root)的家目录/run存放系统运行时的文件,如:进程文件 /sbin超级用户使用的命令存放目录 /snapUbuntu自己搞的一个包管理系统/srvservice,存储本机提供的数据或服务/sys类似于 proc,可以映射内核信息/tmp保存随时可能销毁的临时文件 /usr之前的功能同 home,现在是unix system resource,用户安装软件的目录/var系统产生的不会自动销毁的文件,如:日志文件 隐藏文件:以’.’开头的文件就是隐藏文件
‘.’:表示当前目录
‘..’:表示上一级目录
‘~’:表示当前用户的家目录VIM编辑器:vi发展出来的一个文本编辑器,被誉为”终端编辑器之神”,可以直接使用sudo apt-get install vim进行安装,有三种工作模式:正常模式(命令模式):使用vim打开的默认模式
命令/操作 说明 vim filename打开/新建一个文件 ESC切换到正常模式 ZZ(shift + zz)保存退出…… !v打开最后使用 vim打开的文件光标定位 vim filename +n打开文件,将光标定位到第 n行vim filename +打开文件,将光标定位到尾行 gg定位到首行 G定位到尾行 ngg定位到第 n行^/0定位到行首 $定位到行尾 k↑j↓h←l→ctrl + f下翻一页 ctrl + b上翻一页 ctrl + d下翻半页 ctrl + u上翻半页 内容处理 x向右删除一个字符 nx向右删除 n个字符,n表示个数X向左删除一个字符 nX向左删除 n个字符,n表示个数dd删除光标所在行 ndd删除光标开始的 n行粘贴剪切板中的内容 yy复制光标所在行 nyy复制光标开始的 n行u撤销 ctrl + r反撤销 插入模式(输入模式):可以完成文件内容的输入编辑等,输入一下字符可以进入该模式:
命令 说明 i在光标位置插入 I在第一个非空字符插入 a在光标的下一个字符输入 A在行尾插入 o在光标所在的行下面插入空行 O在光标所在的行上面插入空行 s删除光标所在字符,并进入输入模式 S删除光标所在行,并进入输入模式 单行模式(编辑模式):可以完成文件的整体编辑保存等操作,输入’:’即可进入
命令 说明 :w保存 :q退出 :wq保存退出 :x保存退出 :w!强制保存 :q!强制退出,不保存修改 :e!放弃修改,恢复到修改之前的状态 :w newfile文件另存为 :set nu[mber]显示行号 :set nonu[mber]隐藏行号 :set tabstop=4设置一个tab缩进4个字符 :set mouse=a启用鼠标的点击功能 [:]/内容查找指定内容, n下翻,N上翻[:]?内容查找指定内容, N下翻,n上翻:%s/原内容/新内容/[g]所有行内容替换, g表示全局(默认只能替换一行中第一处):m,ns/原内容/新内容/[g]m到n行内容替换,g用法同上光标定位 :n将光标定位到第 n行,n表示行号若非正常关闭了
vim,可能会产生临时的交换文件,再次打开时会出现特定的界面,可以根据提示进行内容的恢复以及交换文件的删除,也可以手动将交换文件删除,下次就OK了。交换文件时隐藏的(ls -a)
vim配置文件:打开文件后的配置是临时的,关闭后就失效了- 在用户家目录创建一个文件
.vimrc - 将
vim相关的配置写在文件中 - 若文件没有生效,需要重新加载一次
source ~/.vimrc 
- 在用户家目录创建一个文件
 
help的使用:查看命令的帮助文档,如ls --help。man的使用:是manul的缩写,是一个命令,可以查询系统中标准的帮助文档命令 说明 man name查看指定内容(命令/函数)的帮助文档 q退出查询 ↓或enter向下翻一行 ↑向上翻一行 pageup向上翻一页 pagedown或 空格键向下翻一页 ?内容在帮助文档进行查找指定内容 
3. 文件操作
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
3.1. 常识命令
ls:查看指定目录的内容,不指定目录是查看当前工作目录选项 说明 -a显示所有文件,包括隐藏文件 -l列表显示,详细信息 -h人性化的显示大小,如: K/M/G例如,
ls -l显示的结果如下,格式为:类型及权限 引用数 用户 用户组 大小 月 日 年/时间 名称1
2
3
4
5[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……文件类型:
ls -l显示结果中的第一部分的第一列符号 类型 -普通文件 d目录文件 l链接文件 c字符设备文件 b块设备文件 s套接字文件 p管道文件 cd:切换工作目录符号 说明 .当前目录 ..上一级目录 ~当前用户的家目录 -表示上次切换之前的目录 /表示根目录 (1)使用
cd时,不指定目标地址,会切换到家目录
(2)凡是以/开头的目录都是绝对目录
(3)凡是以.或..开头的目录都是相对目录pwd:查看当前工作目录alias:给命令起别名,如l、la、ll等
3.2. 查看文件
| 命令 | 说明 | 
|---|---|
cat | 
从上到下,显示文件全部内容 | 
tac | 
从下到上,显示文件全部内容 | 
head | 
查看开头指定行数的内容,不指定时默认10行,如:head -20 filename | 
tail | 
查看文件末尾指定行数的内容,不指定时默认10行,如:tail -5 filename | 
nl | 
功能与cat相同,但是多显示了行号 | 
wc | 
统计显示,内容:行数 单词数 字符数 文件名 | 
more | 
一点一点查看内容 | 
less | 
一点一点查看内容 | 
more/less使用说明:
- 显示一屏就停止
 q退出查看enter下翻一行- 空格下翻一屏
 more查看完毕会自动退出,less不会less可以使用上下按钮上下翻看,more不可以- 经常集合管道使用:
 ls /etc | more
3.3. 文件及目录
| 命令 | 说明 | 
|---|---|
touch | 
新建文件,可以是多个 | 
rm | 
删除文件或目录(删除目录时要传递’-r’选项) | 
cp | 
拷贝文件或目录(拷贝目录是要传递’-r’选项) | 
mv | 
移动文件或目录 | 
mkdir | 
创建目录,可以是多个 | 
rmdir | 
删除空目录 | 
选项说明
-r:删除或拷贝目录时需要添加,表示递归操作-f:表示强制操作,没有提示信息*:表示模糊匹配,如:rm *.py,表示删除所有的py文件-p:创建目录时若需要创建中间目录,可以添加此选项
3.4. 用户及用户组
相关命令
命令 说明 whoami查看当前登录的用户名 useradd新建用户, -d指定家目录,-m不存在,-s指定shelluserdel删除用户, -r会删除用户家目录passwd设置指定用户的密码,没有指定用户时设置时当前用户的密码 su -切换用户,一定要加上 '-',否则只会切换家目录,但是环境没有切换,不指定用户时默认切换到root用户(记得先给root用户设置密码)sudo以指定用户(root)身份执行命令 visudo专门用于编辑 /etc/sudoers文件的命令,需要将指定用户添加进去才可以使用sudo命令,如:test ALL=(ALL:ALL) ALL;使用sudo update-alternatives --config editor可以修改系统默认编辑器(nano)groupadd新建用户组 groupdel删除用户组 gpasswd向指定组添加/删除指定的用户,如: gpasswd -a/-d user groupgroups查看指定用户的组信息 chsh修改指定用户的shell解析器,如: sudo chsh test -s /usr/sbin/nologin(禁止登陆)chown修改文件所属用户[及用户组],如: sudo chown test[:test] 1.py,递归操作需要加’-R‘选项chgrp修改文件所属用户组,如: sudo chgrp test 1.py涉及文件
/etc/passwd:系统中的用户信息/etc/group:系统中的用户组信息/etc/shadow:系统中的用户密码信息
相关名词
uid:用户唯一标识gid:用户组唯一标识
4. 文件权限
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在linux下,所有的文件都涉及权限,分为所有者、所属组、其他三组,所有文件的权限可分为可读(r)、可写(w)、可执行(x),-表示没有改权限。
在Linux下使用命令ls -l可以显示一个文件的属性及其文件所属的用户和组,如:
1  | [root@www /]# ls -l  | 

chgrp:更改文件属组,chgrp [-R] 属组名 文件名,-R表示递归更改文件属组,就是在更改某个目录文件的属组时,如果加上这个参数,那么该目录下的所有文件的属组都会更改。chown:更改文件属主,也可以同时更改文件属组,chown [-R] 属主名 文件名或chown [-R] 属主名:属组名 文件名,例如:sudo chmod root:root install.logchmod:修改文件9个属性,chmod [-R] [身份] [操作] [权限] 文件,-R表示进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更。该设置可通过数字或符号来进行设置。命令 选项 操作 权限 文件或目录 chmodu(所有者)+(加入)r(可读)g(所属组)-(去掉)w(可写)o(其他)=(设置)x(可执行)a(去除权限但不改变其他已存在的权限使用)- 例如:给其他用户添加可写的权限,
sudo chmod o+x test.py - 本质:使用一组(3位)八进制的数据来表示权限,如,0755,展开如下,可以简化
sudo chmod 0755 test.py 
1
2
3
4转化为二进制:0755 => 111 101 101
对应三组身份 所有者 所属组 其他
每一组的权限:都包括可读、可写、可执行
实例解析:所有者可读可写可执行,所属组可读可执行,其他可读可执行- 例如:给其他用户添加可写的权限,
 umask:用来限定新建文件的默认权限,权限与该值相反,umask [value],查看或设置掩码
5. 文件搜索
find:用于任意文件的搜索,格式find [目录] 条件选项
1  | -name:指定名字 sudo find / -name passwd  | 
whereis:显示命令的详细信息,如whereis ls,结果如下:
1  | ls: /bin/ls /usr/share/man/man1/ls.1.gz  | 
grep:正则表达式搜索(文件内容),-i表示忽略大小写,-n显示行号
1  | 查找/etc/passwd文件中包含/bin/bash的行,并显示行号  | 
ln:链接文件,创建一个文件或目录的链接,格式为ln [-s] 原文件 新文件,ls -l结果中的第一列第一个为l就表示链接文件软链接和硬链接的区别:
- 硬链接:使用
ln时不加-s选项创建的链接,相当于一个文件多起了一个名字而已,极少用到- 不能给目录创建
 - 不能跨文件系统
 
 - 软链接:使用
ln是添加-s选项创建的链接,相当于windows中的快捷方式,比较常用- 可以给目录创建
 - 可以跨文件系统
 
 
- 硬链接:使用
 
6. 系统服务
6.1. 压缩与解压
zip/unzip:文件后缀为.zip1
2
3
4压缩
zip 123.zip *.txt
解压
unzip 123.zipgzip/gunzip:文件后缀为.gz1
2
3
4
5压缩,会生成1.txt.gz压缩文件
gzip 1.txt
解压
gunzip 1.txt.gz
gzip -d 1.txt.gzbzip2/bunzip2:文件后缀为.bz21
2
3
4
5压缩,会生成1.txt.bz2压缩文件
bzip2 1.txt
解压,添加'-k'选项可以保留压缩包
bunzip2 1.txt.bz2
bzip2 -d 1.txt.bz2tar:打包解包工具,后缀为.tar-c:创建新文件-x:解包
-t:查看(不解包)说明:以上三个选项不能同时使用
-f:指定操作文件-v:显示相信信息-z:调用gzip/gunzip进行压缩解压-j:调用bzip2/bunzip2进行压缩解压-C:指定解压位置--exclude:排除指定文件- 示例:
 
1
2
3
4
5
6
7
8tar -cvf 12.tar 1.txt 2.txt # 将1.txt,2.txt打包成12.tar
tar -tf 12.tar # 查看包内容
tar -xvf 12.tar # 解包12.tar文件
tar -zcvf 12.tar.gz 12.tar # 调用gzip进行压缩
tar -jcvf 12.tar.bz2 12.tar # 调用bzip2进行压缩
tar -zcvf 12.tar.gz *.txt --exclude 3.txt # 打包压缩除3.txt以外的所有txt文件
tar -zxvf 12.tar.gz # 解压
tar -jxvf 12.tar.bz2 # 解压提示:
.tar.gz可简写为.tgz;.tar.bz2可简写为.tbz2或.tbz
6.2. 网络服务
ping:检查网络连通性,-c选项指定发送测试包的次数ifconfig:查看或设置网卡信息ifup:启动网卡ifdown:关闭网卡service networking start|stop|restart:控制
6.3. 服务监测
netstat- 作用:查看网络端口占用情况
 - 使用:
netstat -tunpl 
free- 作用:查看内存使用情况
 - 使用:
free -h,-h人性化查看大小 
w- 作用:查看当前正在做的事情
 
top说明:
w的详细信息,3S会刷新一次,q退出查看结果:
1
2
3
4
5
6第一行:与`w`相同
第二行:任务信息
第三行:`CPU`使用
第四行:内存使用
第五行:交换分区
其他行:系统进程信息
6.4. 进程管理
ps- 作用:查看进行信息
 - 使用:
ps -efps aux- 说明:经常在查询进程号的时候结合
grep进行过滤 
 
kill- 作用:杀死进程
 - 示例:
kill -9 PID - 说明:强制杀死指定进程
 
6.5. 防火墙(ufw)
说明:简单版本的防火墙,底层依赖于
iptables安装:
sudo apt-get install ufw查看状态:
sudo ufw status开启/关闭:
sudo ufw enable|disable默认允许/禁止:
sudo ufw default allow|deny允许/禁止:
sudo ufw allow|deny port/服务,如:sudo ufw allow 5900删除规则:
sudo ufw delete allow 5900
6.6. 远程连接(ssh:22)
说明:默认
ubuntu是没有自带的ssh服务,需要手动安装安装:
sudo apt-get install openssh-server控制:
sudo service ssh start|stop|restart连接:
putty|xshell工具,类unix也可以是终端:ssh user@host设置
root用户远程连接:修改/etc/ssh/sshd_config文件1
2# PermitRootLogin prohibit-password
PermitRootLogin yes修改完配置文件,需要重启服务:
sudo service ssh restart
6.7. 软件安装
apt-get安装:无需考虑复杂的软件依赖关系install:安装remove:卸载update:取回更新软件包的类表信息upgrade:进行一次更新
dpkg安装:文件后缀为.deb,可能需要进行依赖包的安装-i:安装-r:卸载-l:查看软件包信息-L:查看软件安装目录示例:安装
wps1
2
3
4
5
61.安装wps
sudo dpkg -i wps-office_10.1.0.5672~a21_amd64.deb
2.安装字体库
unzip wps_symbol_fonts.zip
将字体库移动到/usr/share/fonts目录
sudo mv *.ttf *.TTF /usr/share/fonts
源码安装:需要对源文件进行编译
- 基本步骤:
- 配置:
configure - 编译:
make - 安装:
make install 
 - 配置:
 - 命令执行:
cmd1; cmd2# 执行完cmd1后,执行cmd2,无论前面的命令成功与否cmd1 || cmd2# 先执行cmd1,cmd1执行失败才会执行cmd2cmd1 && cmd2# 先执行cmd1,执行成功后才执行cmd2- 示例:
make && make install 
 - 示例演示:安装
nginx- 解压软件压缩包:
tar -zxvf nginx-1.13.7.tar.gz - 进入解压的目录:
cd nginx-1.13.7 - 编译前的配置:
./configure --prefix=/usr/local/nginx--prefix:配置安装目录- 配置出错多数是因为缺少先关的依赖库或者编译器
 - 如:
sudo apt-get install gcc libpcre3-dev zlib1g-dev 
 - 编译和安装:
make && make install- 如果没有权限常见目录,切换到
root用户 
 - 如果没有权限常见目录,切换到
 nginx介绍sbin/nginx:可执行程序,进入sbin目录,启动:./nginxhtml:默认站点目录- 测试:在浏览器中输入
localhost,看到welcome to nginx即表示成功 
 - 解压软件压缩包:
 
- 基本步骤:
 
6.8. 管道及xargs
l:将前面命令的输出作为后面命令的参数。如:ls /bin | grep '^m'xargs:有些命令无法接收管道作为参数,可以通过xargs解决。如:find -name 2.txt | xargs rm -rf
6.9. 重定向
标准输入(
stdin)、标准输出(stdout)、标准错误(stderr)在
Linux中,创建任意进程,系统会自动创建上面三个数据流及三个文件,其实就是三个文件三个文件的描述符分别是:0、1、2,都指向了终端
重定向就是改变原来默认的表现位置
演示:
1
2
3
4
5
6
7输出重定向,>会新建文件,若文件已存在会清空;>>会追加到文件末尾,若文件不存在则只创建
ls > 1.txt
ls >> 1.txt
错误重定向,2>表示将标准错误重定向
ls /xxx 2> 1.txt
同时重定向输出和错误,&>将标准输出和错误重定向
ls /xxx /home &> 1.txxt
- 本文作者: Lajos
 - 本文链接: https://www.lajos.top/2020/05/15/Linux相关知识小结/
 - 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
 
		