Linux学习1
Linux入门
概述
- Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时处于个人爱好编写的一个操作系统。
- 目前市面上比较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE
安装
- Linux安装这里就做介绍了,博客在这里:Ubuntu安装 | iyheart的博客
Linux文件系统
- 一切皆文件的思想不仅是在Linux,其他操作系统也一样
- 例如我们通过鼠标键盘操作电脑,这个都会被整合成一个文件。在ubuntu中都会映射成一个文件
Linux文件
- Linux系统中一切皆文件。
Linux目录结构
- Linux有家目录和根目录,Linux的家目录就类似于Windows系统中的文件资源管理器的目录
- Linux的根目录就像Windows系统的计算机那个目录
Linux目录具体介绍
- 对Linux根目录具有的文件进行介绍
- bin目录:bin是binary即二进制的意思,在里面存放一些命令。以前该目录是存放二进制文件的,现在就是存放命令和一些脚本文件(可以被点击查看)
boot:boot目录里面存放的是ubuntu操作系统中一些核心的密钥文件或者配置文件,我们一般不会认为的操作这里面的东西
cdrom:cdrom目录是光驱目录,如果你的电脑里面有插光盘,并且光盘里面有文件,那么光盘里面的文件就会被放到这个目录来
- dev:dev目录是存放设备的目录,里面存放cpu、磁盘等,也就是将硬件也映射成了一个文件并保存起来
- etc:etc是环境目录,在这个目录主要是进行一些设置,这个目录里面有大量的系统工具比如
ssh
- home: home目录是家目录是存放用户的文件,如果有多个用户,那么家目录就有多个文件夹,每个文件夹的名字都对应一个用户名。然后点击某个用户名的文件夹就可以看到桌面那些目录。这也是默认的安装路径
- lib、lib32、lib64、libx32:这些都是依赖文件,设备依赖、文件依赖都会放到这些文件夹里面
- media:media目录是媒体设备的目录,音响、耳机这些设备都会被映射成文件放到该目录下
- mnt:mnt目录是挂载一些临时存储的设备,例如u盘,系统读取到u盘的文件就会存放到该位置
- opt:opt目录是专门提供给我们安装软件的
- proc:proc目录是其实就是内存,ubuntu将内存分成几块,然后做一个映射
- root:最高管理员。为了防止一些误操作,如删库等操作,这个一般是没有权限的。如果想使用root权限,则需要输入密码。密码正确后就可以进入该文件了,一些操作也有权限了
- run:运行的程序都会在run目录下对应
- sbin:设计到bin以前都表示二进制文件,现在基本上表示命令文件,s表示
super
表示超级命令 - snap:snap目录存放的是快照,操作系统内部也有安全设置,与VM的快照区别开
- srv、tmp、var:这三个目录都是用于存文件
- srv存的文件是系统服务自己的文件
- var主要是存运行产生的log日志
- tmp主要存放临时文件,不久会自动清除掉
- sys:sys的意思就是System系统的意思,存放操作系统的系统文件
- usr:用户的目录与home目录区别
- usr是存放用户公共的文件
- home目录是存放用户私有的文件
Linux系统管理
防火墙
- 防火墙是管理网络端口的,ubuntu默认会开启22号端口。用于远程连接。如过开启了防火墙,除了22号端口之外,其他端口都是用不了的
- 如果需要用到端口服务,这时就要关闭防火墙了,对于图形化界面的ubunutu中,如果直接从设置找是不太好找的。这时候就需要借助命令。
- 这里介绍一下,在该文件目录下,就是使用的服务
- 查看服务的方法:查看
/usr/lib/systemd/system
目录下的文件列表,该目录下每个文件都对应一个服务。 cd /usr/lib/systemd/system
- 查看服务的方法:查看
- 这里介绍
systemctl
命令
1 | systemctl start 服务名 #开启服务 |
关闭网络管理服务
- 开启和关闭网络管理服务(使用终端进行操作)
1 | sudo systemctl status NetworkManager |
- 显示为运行的转态,这时会进入到这个页面里面,如果要退出页面按
q
即可
- 关闭网络管理服务,关闭了该服务网络依然存在,只是不能很好的管理网络,因为关闭的是网络关联服务
1 | sudo systemctl stop NetworkManager |
- 启动网络管理服务
1 | sudo systemctl start NetworkManager |
关闭防火墙
- 这里继续介绍几个关于
systemctl
的命令,用于设置后台服务的自启动配置 - 基本语法:
1 | systemctl list-unit-files #查看服务开机启动状态 |
查看防火墙状态
1 | sudo systemctl status ufw |
关闭防火墙
1 | sudo systemctl stop ufw |
关闭自启动
1 | sudo systemctl disable ufw |
注意:这只是为了学习演示操作,学习过后尽量还原
关机重启操作
- 这里先介绍一个命令
sync
,功能描述:将数据由内存同步到硬盘中- 这个命令主要是在以前电脑不够智能的时候需要使用
现在电脑足够智能,在执行关机或重启命令时自动处理必要的清理和同步操作。因此绝大多数情况,直接关机重启,无需sync命令
现在介绍关机和重启的一些命令
1 | halt 关闭系统,但是电脑不会断电 |
- 但是现在的关机重启直接有图形化操作,那些命令最多是定时关机用得上
修改主机名
- 主机名,在终端中会显示出主机名
- 修改主机名的命令
hostnamectl
,使用命令修改后的主机名不会马上更改,而是要重启之后才能生效
1 | sudo hostnamectl --static set-hostname 新名称 |
- 重启之后马上生效
APT软件包管理器
- APT(Advanced Packaging Tools)是Debian及其派生Linux的软件包管理器,可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。
- 注意:ubuntu就是属于Debain系列的
如果使用的是Centos这一红帽系列的,那么其包管理器叫做
RPM
软件包和Yum
在线安装工具打开终端,输入
apt
,系统将把apt
的使用方式打印出来
- 当有些命令不存在的时候,apt软件包管理器会对其进行提示
- 告诉用户怎么安装,只要把这个命令复制一下就可以进行安装了
- 如果要删除工具,也可以使用apt命令
1 | sudo apt remove net-tools |
Linux操作使用
帮助手册
使用帮助手册后,会在命令行会出现可选命令和功能的介绍
查看手册页说明文档的方式
- 这个是查看一个完整的帮助
- 查看手册页说明文档的方式
1 | man man |
- 输入该命令后就会出现手册,但是这个手册的内容太多了
- 这时就可以添加一些选项,查找你需要使用的某个命令的具体功能
文件目录
pwd命令—绝对路径
- pwd命令是显示当前工作目录的绝对路径,pwd的全名为
print working directory
打印工作目录 - 基本语法:
pwd
- 示例:
1 | myheart@aaa:~$ pwd |
cd、ls命令—切换、查看目录
cd
命令就是切换目录cd
命令后面可以跟相对路径类似于cd ..
回到上一级目录cd
命令还可以跟绝对路径类似于cd /home/path
切换到指定目录cd ~
回到home
目录,~
表示home
目录cd -
表示回到上一次所在目录,并非上一级目录cd -P
跳转到实际物理路径,而非快捷方式路径
ls
命令就是查看当前目录的所有文件ls -l
还可以简写ll
详细展示了当前目录下所有文件的详细信息drwxr-xr-x
像这种开头为d
表示文件夹-rw-r--r--
像这种开头为-
表示的是文件
ls -a
可以展示隐藏文件- 在Linux中隐藏文件都是以
.
开头,例如.bashrc
- 在Linux中
./
表示当前文件路径,../
表示上一级文件路径
- 在Linux中隐藏文件都是以
- 还要介绍
/
表示根目录,下图就是根目录
所以
cd /
就是切换文件目录到根目录当使用
cd
已经选择了一个文件路径时,可以先不要使用ENTER
键进入到目标目录再使用ls
查看该目录下有什么,可以cd /path/
然后按一下TAB
键即可显示目标路径下的所有文件- 示例1,使用
cd /path +TAB
:
- 示例2,
ls -l
:
- 示例3:
ls -a
mkdir命令—创建目录
mkdir:
Make directory
建立目录mkdir -p: 创建多个文件夹
- 例如:
mkdir -p xiyouji/qujing/tudi
- 例如:
touch创建空文件
- 基本语法
touch + 文件名称
,例如:touch qujing/tudi/sunwukong.txt
cp复制文件
- 基本语法:
cp source dest
:复制source文件到dest
1 | cp sunwukong.txt ../ |
cp -r
:递归复制整个文件夹
1 | cp -r qujing ~/linux_learn/ |
Linux用户管理
- 用户管理一般是针对服务器,多人使用的一个电脑,对私人的电脑没太大关系
- 应用场景1:企业开发,多人协同(也会有多人使用相同的低权限用户)
- 应用场景2:框架协调,gitlab、mysql、redis
用户管理
添加新用户
添加新用户必须要有比较高等级的权限
使用
adduser
添加新用户例如:添加一个新用户
1 | sudo adduser 用户名 |
- 这时需要设置一个关于新添加用户的一个密码,用于登录该用户等
设置修改密码
- 修改用户的密码需要相对较高的权限
修改设置密码的命令:
passwd 用户名
例如:
1 | sudo passwd tangseng |
- 输入完指令后就会提示你输入密码
查看用户
- id查看用户是否存在
基本语法
id 用户名
例如:
uid=1000(myheart): 用户
myheart
的用户 ID (UID) 是 1000。gid=1000(myheart): 这是用户
myheart
的组 ID (GID),即用户默认所属的组。groups=1000(myheart): 用户属于的组列表,
myheart
组是用户的主要组。
1 | id myheart |
- 再如:
1 | id bbb |
- 如果要查看更多用户信息,可以输入下面指令查看
cat /etc/passwd
切换用户
- 切换用户的权限就相对比较小
- 格式:
su - 用户名
- 例如:
1 | su - level0 |
- 输入该命令后就会提示你输入
level0
用户的密码,输入成功后就会进入用户了 - 不同的用户区别使用的
home
目录不一样,每个用户的PATH
路径不一样
删除用户
- 格式:
1 | userdel 用户名 #删除用户单保存用户主目录 |
- 例如:
1 | sudo userdel tangseng |
- 没使用
-r
参数的时候就会出现home
文件目录下的tangseng还在
- 删除之后再使用命令
sudo adduser jinchanzi
,就会出现继承的情况
修改用户
- 格式:
1 | usermod -l 新用户名 老用户名 |
用户组管理命令
- 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同
- 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
- 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对
/etc/group
文件的更新
groupadd新增组
- 基本语法:
groupadd 组名
- 示例:
- 添加一个
xitianqujing
组
- 添加一个
1 | sudo groupadd xitianqujing |
groupdel删除组
基本语法:
groupdel 组名
示例:
1 | sudo groupdel xintianqujing |
groupmod修改组
- 基本语法:
groupmod -n 新组名 老组名
- 示例:
1 | sudo groupmod -n xitian xitianqujing |
usermode 修改用户组
- 在Linux和Unix系统中,每个用户都有一个组和可能的多个附加组
- 用户的主组在用户创建时被指定,默认与用户名称相同,当创建一个新文件或目录时,默认情况下,这些文件或目录会被分配给用户的组
- 示例:
1 | sudo usermod -g xitian wukong |
将用户添加到附加组
- 这个冒号后面就代表了附加组
- 基本语法:
1 | usermod -aG 组名 用户名 |
sudo设置普通用户具有root权限
sudo
命令首先是借用root权限,是将对应的命令给到root用户去执行一般只有创建系统时的用户可以使用sudo,如果别的用户需要使用sudo命令就需要给该用户sudo组的权限才能执行
可以查看一下配置文件,发现使用sudo可以执行任何命令
- 使用
sudo vim /etc/sudoers
,滑动到该位置
- 使用命令将用户添加进sudo组,这样就可以执行sudo命令了
1 | sudo usermod -aG sudo wukong |
- 可以在配置文件下填写,这样使用sudo命令时就不用输入密码了