- 学习方向:Linux运维工程师、Linux嵌入式工程师、Linux下开发项目
Java、大数据、Python - 应用领域:个人桌面领域、服务器领域、嵌入式领域(机顶盒,数字电视,网络电话,Android,物联网等等)
- 学习阶段和方法
第一阶段:Linux环境下的基本操作命令,包括文件操作命令(rm mkdir chmod chown),编辑工具使用(vi vim),Linux用户管理(useradd userdel usermod)等;
第二阶段:Linux的各种配置(环境变量配置,网络配置,服务配置);
第三阶段:Linux下如何搭建对应语言的开发环境(大数据,JavaEE,Python等);
第四阶段:能编写shell脚本,对Linux服务器进行维护;
第五阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优;
第六阶段:深入理解Linux系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法。
特点:免费、开源、安全、高效、稳定、处理高并发非常强悍
Linux的主要发行版:(CentOS,Redhat),Ubuntu,Suse(欧洲),红旗Linux,(deepin)
贝尔实验室,Ken tompson,Dennis richres,Richard Stallman
Linux和Windows:
- Linux免费开源,Windows收费昂贵;
- 软件与支持;
- 安全性(Linux全球程序猿都能看到源代码,并且发现漏洞);
- 使用习惯(图形-命令行);
- 可定制性,Windows封闭的,Linux开源都可以定制;
- 应用场景,Windows桌面操作系统,Linux服务器。
VM安装
BIOS设置-开启虚拟化设备支持;
CentOS网络适配器设置的三种模式:
- 桥连接:Linux可以和其它的系统通信。但是可能造成ip冲突;
- NAT:网络地址转换,Linux可以访问外网,不会造成ip冲突;
- 主机模式:Linux是一个独立的主机,不能访问外网。
查看cpu核心数:
Win+R/运行 -> wmic
cpu get numberofcores
cpu get numberoflogicalprocessors
Linux查看cpu
lscpu
Linux目录结构
在Linux世界里,一切皆是文件
文件传输
终端:setup 系统服务 查看是否启用sshd 端口22
Xftp5(新建连接,协议选择sftp,端口22),Xshell5
vim
三种常见模式:正常模式、编辑模式、命令行模式
设置行号:set nu/set nonu
关机/重启/注销
shutdown
shut down -h now 立即关机
shut down -h 1 1分钟后关机
shut down -r now 立即重启
halt 关机
reboot 重启
syn 把内存的数据同步到磁盘
logout 注销 图形运行级别无效
用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
1.添加用户
useradd [选项] 用户名
2.指定密码
passwd 用户名
3.删除用户
userdel 用户名 /*保留家目录,项目中一般保留家目录,因为家目录中有用户的相关代码等*/
userdel -r 用户名 /*全部删除*/
4.查询用户信息
id 用户名 /*uid-用户id,gid-组id,组-组名*/
5.切换用户
在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户。
su - 切换用户名
高用户切换到低用户不用输入密码,反之需要密码,exit返回到原来的用户。
6.查看当前用户
whoami
在root下,输入exit,然后无法再次登录root用户,其他用户正常。打开虚拟机切换到root时出现鉴定故障。按照下面的方法重置root密码后,成功通过ssh登录。
su - root出现鉴定故障错误,解决办法:(必须要知道原始密码,先输入原密码,再输入新密码)
sudo passwd root
用户组
groupadd 组名 /*增加组*/
groupdel 组名 /*删除组*/
useradd -g 用户组 用户名 /*增加用户时添加分组*/
usermod -g 用户组 用户名 /*修改用户组*/
用户和组的相关文件
- 用户配置文件:/etc/passwd
- 组配置文件:/etc/group
- 口令配置文件,密码和登录信息(加密的):/etc/shadow
指定运行级别
划分为七个运行级别:0-关机;1-单用户(找回丢失密码);2-多用户无网络服务;3-多用户有网络服务;4-保留;5-图形界面;6-重启
系统的运行级别配置文件:/etc/inittab
init [0123456] /*切换到指定运行级别*/
如何找回root密码?
进入到单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录。
帮助指令
man [命令或配置文件]
help 命令
文件目录类
pwd指令
pwd /*显示当前工作目录的绝对路径*/
ls指令
ls [选项] [目录或是文件]
-a:显示当前目录所有的文件和目录,包括隐藏的;
-l:以列表的方式显示信息,例如:ls -al
cd指令
cd - change directory,切换目录
mkdir指令
mkdir [选项] 要创建的目录 /*-p 创建多级目录*/
rmdir指令
rmdir [选项] 要删除的空目录 /*删除空目录*/
rm -rf 要删除的目录 /*删除非空目录*/
touch指令
ouch 文件名称 /*创建空文件,可一次创建多个*/
vim 也可以创建文件
cp指令
cp [选项] source dest /*-r 递归复制整个文件夹*/
一定要注意你当前的目录位置,然后要准确的定位源目录和目标目录
\cp 强制覆盖,不会提示
rm指令
rm [选项] 要删除的文件或目录
常用选项:
-r:递归删除整个文件夹
-f:强制删除不提示
例如:rm -rf java.txt
mv指令
移动或者重命名
mv oldNameFile newNameFile /*重命名*/
mv /temp/movefile path /*移动,【移动指令 移动谁 到哪儿去】*/
cat指令
查看文件,浏览,不能修改
cat [选项] 要查看的文件
常用选项:
-n:显示行号
cat -n /etc/profile | more /结合管道符 | 和 more 使用,分页查看/
more指令
more /etc/profile
space - 向下翻一页
Enter - 向下翻一行
q - 离开
Ctrl+F - 向下滚动一屏
Ctrl+B - 返回上一屏
less指令
分屏查看文件内容,功能与more类似,比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
less 要查看的文件
PageUp PageDown
>指令和>>指令
>输出重定向,覆盖原来的内容;>>追加,追加到文件末尾
ls -l>文件 /*功能描述:列表的内容写入文件a.txt中(覆盖写)*/
ls -al>>文件 /*功能描述:列表的内容追加到文件a.txt的末尾*/
cat 文件1>文件2 /*功能描述:将cat 文件1的显示内容覆盖到文件2*/
echo “内容”>>文件
例如:ls -l /home/ > /home/info.txt
cal 日历
cal >> /home/mycal
echo指令head指令tail指令
echo输出内容到控制台
head显示文件的开头部分内容,默认显示文件的前10行
tail用于输出文件中尾部的内容,默认情况下显示后10行
1.echo [选项] [输出内容]
例如:echo $PATH /*输出当前环境变量*/
2.head 文件 / head -n 5 文件
3.tail 文件 / tail -n 5 文件 / tail -f 文件(工作经常使用)
ln指令
软链接也叫符号链接,类似windows的快捷方式。pwd查看仍在当前目录。
ln -s [原文件或目录] [软链接名] /*给原文件创建一个软链接*/
例如:
ln -s /root linkToRoot
rm -rf linkToRoot
history指令
查看已经执行过的历史命令,也可以执行历史命令。
history
例如:
history /*查看所有历史命令*/
history 10 /*查看最后10行命令*/
!178 /*执行历史编号为178的指令*/
时间日期类
date指令
显示当前日期
1.date
2.date +%Y
3.date +%m
4.date +%d
5.date "+%Y-%m-%d %H:%M:%S
设置日期
date -s 字符串时间
例如:date -s "2020-01-22 11:28:28"
cal指令
cal [选项] /*不加选项,显示本月日历*/
例如:cal 2020 /*显示2020一年的日历*/
搜索查找类
find指令
从指定目录向下递归地遍历各个子目录,将满足条件的文件或目录显示在终端。
find [搜索范围] [选项]
选项说明:
-name<查询方式> /*按照指定的文件名查找文件*/
-user<用户名> /*查找属于指定用户的所有文件*/
-size<文件大小> /*按照指定的文件大小查找文件*/
例如:
1.根据名称查找/home目录下的hello.txt文件
$find /home -name jack.txt
2.查找/opt目录下,用户名称为nobody的文件
$find /ope -user nobody
3.查找整个linux系统下大于20M的文件(+n 大于;-n小于;n等于)
$find / -size +20M
locate指令
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
locate 搜索文件
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
grep指令 和 管道符号 |
grep过滤查找,管道符表示将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
常用选项:
-n 显示匹配行及行号
-i 忽略字母大小写
压缩解压缩
gzip/gunzip指令
gzip 文件 /*只能把文件压缩为*.gz文件,且不保留源文件。*/
gunzip 文件.gz /*解压缩文件*/
zip/unzip指令
zip [选项] xx.zip 压缩内容 /*压缩文件和目录*/
unzip [选项] xx.zip
==========================================================================
常用选项:
-r 递归压缩,即压缩目录
-d<目录> 指定解压后文件的存放目录,例如:unzip -d /opt/tmp/ mypakage.zip
tar指令
tar是打包指令,打包后的文件是xx.tar.gz文件。
tar [选项] xx.tar.gz 打包的内容
可用选项:
-c 产生.tar打包文件;
-v 显示详细信息;
-f 指定压缩后的文件名;
-z 打包同时压缩;
-x 解包.tar文件;
例如:
压缩
tar -zcvf xx.tar.gz 1.txt 2.txt /*打包1.txt和2.txt*/
tar -zcvf myhome.tar.gz /home/ /*打包home目录下的所有文件*/
解压
tar -zxvf myhome.tar.gz /*解压到当前文件夹*/
tar -zxvf myhome.tar.gz -C /opt/ /*解压到指定目录,指定的目录必须要存在*/
组管理和权限管理
Linux中每个用户必须属于一个组,不能独立于组外。
Linux中每个文件有:所有者,所在组,其它组的概念。
改变文件所有者和所在组
ls -ahl /*查看文件或者目录所有者*/
chown 用户名 文件名 /*修改文件所有者*/
chgrp 组名 文件名 /*修改文件所在的组*/
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 /*改变该用户登录的初始目录*/
a-all
h-human
l-list
例如:
1.新增组
groupadd police
2.新增一个用户tom并添加到police组:
useradd -g police tom
3.查看用户所在组
id jack
4.修改用户所在组
usermod -g police jack
-rw-r-----. 1 jack jack 177 1月 29 14:34 jack.txt
第0位表示【文件类型】
- 普通文件
d 目录
1 软链接
c 字符设备,例如:键盘、鼠标
b 块文件,例如:硬盘
第一个三位【属主权限】:表示所有者权限;
第二个三位【属组权限】:表示所在组的用户权限;
第三个三位【其他用户权限】:表示其它组的用户权限;
第十位的数字代表:如果是文件,表示硬链接的数量;如果是目录,表示该目录的子目录数量。
所有者,所在组,文件大小【如果是目录显示:4096】,最后修改时间,文件名。
rwx作用于文件:
r - read读权限,可查看;
w - write写权限,可修改,但不表示可以删除,删除的前提条件是对该文件所在目录有写权限;
x - execute执行权限,可以被执行。
rwx作用于目录:
r - 可读,可以读取,ls查看目录内容;
w - 可写,可以修改,目录内创建+删除+重命名目录;
x - 可执行,可以进入该目录。
可用数字代表权限:r-4;w-2;x-1
例如:rwx的数字为:4+2+1=7,rw-的数字为:4+2+0=6
chmod指令
通过chmod指令可以修改文件或者目录的权限。
第一种方式:用+,-,=变更权限
u所有者;g所在组;o其它人;a所有人(u,g,o总和)。
例如:
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
第二种方式:通过数字变更权限
例如:
chmod u=rwx,g=rx,o=x 文件/目录名
等于
chmod 751 文件/目录名
chown指令
修改文件/目录所有者。
chown newowner file /*改变所有者*/
chown newowner:newgroup file /*改变所有者和所在组*/
-R 如果是目录,则使其所有子文件或目录递归生效,例如:chown -R jack:police /jack/
chgrp指令
修改文件/目录所在组。
chgrp newgroup file /*修改文件所在组*/
最佳实践-警察和土匪
组:police,bandit
警察:jack,jerry
土匪:xh,xq
1)创建组和用户;
2)jack创建一个文件自己可以读写,本组人可以读,其他人没有任何权限;
3)jack修改该文件,让其他人可以读,本组人可以读写;
4)xh投靠警察,看看是否可以读写jack创建的文件;
综合练习
1)用root登录,建立用户mycentos,自己设定密码;
$useradd mycentos
$passwd mycentos
2)用mycentos登录,在主目录下建立目录test/t11/t1;
$mkdir -p test/t11/t1
3)在t1中建立一个文本文件aa,用vi编辑其内容为ls -al;
$vi aa
4)改变aa的权限为可执行文件【可将当前日期追加到一个文件】,运行该文件./aa;
$date >>aa
$chmod 764 aa
$./aa
5)删除新建里的目录test/t11/t1;
$rm -rf test/
6)删除用户mycentos及其主目录中的内容;
$userdel -r mycentos
可到home目录中查看是否还存在mycentos用户:
$cd home/
$ll
如果是:$userdel mycentos删除的呢???
$userdel xq
提示:userdel:组“xq”没有移除,因为它不是用户 xq 的主组
$groupdel xq
查看删除结果:
$cat /etc/passwd /*查看用户*/
$cat /etc/group /*查看组*/
还可以$id xq检查是否删除成功。
$cat /etc/passwd显示内容解读:
xh:x:1003:1001::/home/xh:/bin/bash
username:password:user id:group id:comment:home directory:shell directory
$cat /etc/passwd显示内容太多,所以:
$cat /etc/passwd|grep xq /*查找某个用户*/
对应的查找组:$cat /etc/group|grep xq
用户和组常用命令:
groups /*查看当前登录用户的组内成员*/
groups xh /*查看xh所在组的组内成员*/
7)将linux设置成进入到图形界面的;
$init 5 /*failure*/
8)重新启动linux或关机。
$reboot / $shut down -r now 立即重启
$shut down -h now 立即关机