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)
,分区最大2G
fat32(windows 95)
,单个文件最大4G
,性能较弱,容易产生碎片ntfs(window nt)
,提升了fat
32文件系统的稳定性ext4(Linux)
,扩展型日志文件系统hfs[+] (Mac)
,苹果设备的文件系统exfat(win/mac)
,可以支持4G
以上的单个文件,适合于闪存
根目录结构:
目录 说明 /
根目录 /bin
大多数的操作命令 /boot
系统启动相关文件 /cdrom
挂在光盘 /dev
设备文件( linux
下有一切设备皆文件之称)/etc
配置文件目录(经常使用) /home
所有普通用户的家目录,一个用户对应该目录下的一个文件夹 /lib
库文件 /lib64
64位库文件 /lost+found
系统出现异常时保存信息以便恢复,平时是空的 /media
自动识别设备的挂载点 /mnt
mount
,专门用于挂载的目录/opt
option
,用于安装可选软件/proc
虚拟的文件系统,可以映射硬件信息 /root
超级用户( root
)的家目录/run
存放系统运行时的文件,如:进程文件 /sbin
超级用户使用的命令存放目录 /snap
Ubuntu
自己搞的一个包管理系统/srv
service
,存储本机提供的数据或服务/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
指定shell
userdel
删除用户, -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 group
groups
查看指定用户的组信息 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.log
chmod
:修改文件9个属性,chmod [-R] [身份] [操作] [权限] 文件
,-R
表示进行递归(recursive
)的持续变更,亦即连同次目录下的所有文件都会变更。该设置可通过数字或符号来进行设置。命令 选项 操作 权限 文件或目录 chmod
u
(所有者)+
(加入)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
:文件后缀为.zip
1
2
3
4压缩
zip 123.zip *.txt
解压
unzip 123.zipgzip/gunzip
:文件后缀为.gz
1
2
3
4
5压缩,会生成1.txt.gz压缩文件
gzip 1.txt
解压
gunzip 1.txt.gz
gzip -d 1.txt.gzbzip2/bunzip2
:文件后缀为.bz2
1
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 -ef
ps 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
:查看软件安装目录示例:安装
wps
1
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
执行失败才会执行cmd2
cmd1 && 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
目录,启动:./nginx
html
:默认站点目录- 测试:在浏览器中输入
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 许可协议。转载请注明出处!