一.学习思考
1.学习linux有啥用?为啥学?
-
因为大部分公司都在用,在这上面开发运行,你必须学。
-
学习linux更加安全高效,能更好的防止网络攻击,可以更好的转行网络安全,嵌入式,运维等岗位。
-
能帮你回顾以前的知识,计算机网络,计算机组成原理
2.linux的思考
二、linux基础
1.用户目录结构
#cd是切换路径
cd .. ----------代表返回根目录
cd - ----------代表返回
bin -------放的是一些二进制文件
boot -------放的是启动linux系统的一些二进制文件
dev -------外部设备连接
etc -------系统管理所需配置文件
home -------用户目录
lib -------动态文件共享库
media-------自动识别外部设备并提供cd挂载的文件
mnt -------系统提供的一个外部设备临时挂载文件
opt -------给主机安装额外软件包的放置目录
proc -------虚拟文件系统
root -------系统管理员信息存放路径
run -------系统运行过程中产生的一些运行文件
sbin -------超级用户的二进制文件
srv -------service,表示服务启动之后需要提取的数据
sys -------对于进程处理所需要的文件系统
tmp -------临时文件存储
usr -------应用程序存放路径
var -------不断扩展的数据,比如日志
2.liunx用户和用户组
2.1 基本用户类型
MYSQL 用户:mysql用户可能在执行sql查询语句
ROOT用户: 查看系统日志,对系统进行操作
FTP用户:ftp用户可能上传软件到服务器
2.2 用户相关命令
2.2.1 增加用户
useradd 选项 参数
-d 指定用户的家目录
-e 账户到期时间
-u 用户指定UID
-g 指定一个初始用户组
-G 指定一个或者多个拓展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认shell解释器
#创建一个uid=8888,放在/home/linux目录下的叫百战的用户
cd /home
useradd -d /home/linux -u 8888 baizhan
ll
#查看创建用户的标签
id 用户名
id baizhan
2.2.2 修改用户参数
usermod 选项 参数
-c 修改用户备注
-d 修改用户登入时的目录
-e 修改账号的有效期限
-f 修改密码过期后多少天即关闭该账号
-g 修改用户所属群组
-G 修改用户所属的附加群组
-l 修改用户账号名称
-L 锁定用户密码,使密码无效
-s 修改用户登录后使用的shell
-u 修改用户ID
-U 解除密码锁定
#修改baizhan的用户id
usermod -c '没交钱' -u 1001 baizhan
2.2.3 用户密码操作
passwd 选项 参数
-d 删除密码,仅有系统管理者才能使用
-f 强制执行
-k 设置只有在密码过期失效后,方能更新
-l 锁住密码
-s 列出密码的相关信息,仅有系统管理者才能使用
-u 解开已上锁的账号
#创建相应的密码,并删除
passwd baizhan
passwd -d baizhan
2.2.4 删除用户
userdel 选项 用户名
-f 强制删除用户
-r 同时删除用户及用户家目录
#删除baizhan用户
userdel -rf baizhan
2.3 用户组相关命令
2.3.1 添加新组
groupadd 选项 参数
-g 指定新建工作组的id
-r 创建系统工作组,系统工作组的id小于500
-K 覆盖配置文件
-o 允许添加组id号不唯一的工作组
#添加一个新的web组
groupadd -g 334 web
2.3.2 修改群组
groupmod 选项 参数
-g 设置想要使用的群组id码
-o 重复使用群组识别码
-n 设置想要使用的群组名称
#修改群组的id号和名称
groupmod -g 506 -n web java2
2.3.3 删除群组
groupdel java2
2.4 超级,伪及普通用户
2.4.1 定义:
超级用户(uid=0)管理一切权限
普通用户(uid在500-6000)
伪用户(uid在1-499)
2.4.2 切换用户权限
#root管理员目录下创建一个文件,普通用户是没有办法进行修改的,su来转换用户权限
vim a.info
su baizhan
cat a.info
#修改用户配置文件,提升用户权限,由root管理员颁发相应管理权限
su root
visudo
之后回车,找到99行,用:set nu 开启序号,方便查找,之后:set nonu 关闭序号
sudo rm -rf a.info
#设置免密登录
visudo --------------找到baizhan ALL=NOPASSWD: ALL
3. 文件的基本属性
3.1 查看文件及属性
#01-----------------查看目录下所有文件
ls 参数
-a 显示所有文件及目录
-l 除文件名外,把文件形态,权限,拥有者,文件大小等
-r 讲文件以相反次序显示(按照英文字母依次列出)
-t 将文件依照建立时间先后次序列出
-A 同a,但是不列出当前目录及父目录
-F 在列出的文件名加一符号,比如 *,/
-R 若目录下有文件,则以下文件都按照序列列出
#例子
ls -a
ll
ls -l
#02-----------------正倒序查看文件内容
#正序查看文件 cat 文件名
cat -A 可列出一些特殊字符而不是空白而已
cat -b 列出行号,仅针对非空白行做行号显示
cat -E 将结尾的断行字节$显示出来
cat -n 列印出行号,连同空白行也会有相应的行号
cat -T 将tab按键以^|显示出来
cat -v 列出一些看不出来的特殊字符
例子:cat a.info
#倒序查看文件 tac 文件名
例子:tac a.info
#查看文件并显示相应行号 nl 文件名
- b 指定行号的指定方式,有如下两种
-ba 无论是否空行,都列出相应序号
-bt 如果有空行,空行的哪一行不列出来
-n 列出行号表示的方法有如下三种
-n ln 行号在荧幕的最左方显示
-n rn 行号在自己栏位的最右方显示,且不加0
-n rz 行号在自己栏位的最右方显示,且加0
例子:nl a.info
#分页查看文件内容 more 文件路径
空格键为下一页
enter 为下一行
/ 字符串 搜索字符串
:f 显示文档名及目前的行数
q 代表立即离开more,不再显示该文件内容
b 代表往回翻页
例子:more a.info
#搜索功能的分页查看 less 文件名
空白键 向下翻动一页
pgdn 向下翻动一页
pgup 向上翻动一页
/ 字符串 向下搜寻字符串
? 字符串向上搜寻字符串
q 离开当前程序
n 重复前一个搜寻
N 反向重复前一个搜寻
#查看文件的头部几行 head -n 3 a.info
#查看文件的尾部几行 tail -n 3 a.info
3.2 文件基本类型
普通文件 -开头 数据程序等信息文件
目录文件 d开头 目录文件
链接文件 i开头 在不同文件系统中建立链接联系
设备文件 c开头 设备挂载文件
管道文件 p开头 进程间传递数据的
rw-r--r--代表文件权限(有9位,3个为一组,1-3代表所属创建者的权限,3-6代表文件所属组有何权限,6-9代表其他用户能操作的权限,r代表读,w代表写,x代表执行,-代表没有),除了第一位-
cd /opt
ll
3.3 linux 权限字与权限操作
对于文件的不同层级的权限,都是可以更改的,下面来学习一下,主要对应的是创建者权限(0-3),组内权限(3-6),其他普通用户权限(6-9)
chgrp:改变文件所属组-------命令:chgrp -R 所属组名 改的文件名
#想要改变文件所属组,想要把a.info的用户组从baizhan改成java
-rw-rw-r--. 1 baizhan baizhan 9 Aug 10 04:57 a.info
chgrp -R java a.info
chown:改变文件所有者
改变文件拥有者命令:chown -R 属性名:所属组 文件名
把baizhan的文件改成baizhan2所属
sudo chown -R baizhan2 a.info
chmod:改变文件的属性
chmod u(创建用户)或者g(组)或者o(普通用户) +或者-或者= r,w,x 文件目录
#想要改变java这个组在a.info的权限
加减法
chmod g+w a.info
ll
数字法
r:4 w:2 x:1
比如要改成 rw- rwx rw-
rw-=4+2+0=6
rwx=4+2+1=7
rw-=4+2+0=6
chmod 676 a.info
+-=来改变文件的属性权限
4.linux路径
4.1绝对路径
以/进行分割
cd /usr/local/
cd ./test.info
4.2 相对路径
以. .. ~来进行分割
cd . 当前用户所在目录
cd .. 上一级目录
cd ~ 返回根目录
cd - 返上次目录
cd ../.. 返回上两级目录
5.目录相关操作
5.1 显示当前目录(特别详细)
显示当前目录的详细绝对路径
pwd -P
5.2 创建新目录
mkdir -m -p 目录名称
-m 配置文件的权限,直接配置
-p 帮助你直接将所需目录递归创建,能帮你创建原先没有的a/b/c/d目录形式的文件
mkdir -p a/b/c/d
5.3 删除空目录
rmdir -p a/b/c/d
5.4 复制目录
cp 复制的文件 复制文件到的目标路径
-r代表递归复制,带目录的
cp a.info a/b/c/d
cp -r ./a.info a/b/c/d
5.5 删除目录
rm -r -f 文件或者目录
-r 递归删除,适用于目录
-f 强制删除
rm -rf ./a.info
5.6 移动或者重命名目录
mv -i -f -u 文件 移动到目标文件路径
-f 强制移动
-i 文件存在,询问是否覆盖
-u 更新文件
mv -if bashrc mvtest
6. 文件编辑工具
vim基本编辑模式
6.1 命令模式
vim 文件名
vi 文件名
vi和vim区别在于vim支持shell这种脚本语言
不能进行编辑
有快捷键能进行一些操作
dd 删除(剪切)光标所在的整行
5dd 删除(剪切)光标处开始的5行
yy 复制光标所在的整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到下一个字符串
N 显示搜索命令定位到上一个字符串
u 撤销上一步操作
p 将之前删除d或者复制yy过的数据粘贴到光标之后
G 文本最后面
gg 文本开始
shift+^ 移动到行头
shift+$ 移动到行尾
x 删除字符
6.2 输入模式
i a o 任意键可进入输入模式
6.3 底线命令模式
:
进入底线命令模式
:wq 保存退出
:w 保存
:q 退出
:q! 强制退出
:wq!强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
: s/one/two/g 将当前光标所在行的所有one替换成two
: %s/one/two/g 将全文中的所有one替换成two
?搜索字符 搜索相应字符
/ 搜索字符 搜索相应字符
7.打包压缩与搜索命令
7.1 文件打包压缩
tar 选项 文件
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩Gzip
-x 解包.tar文件
例子:打包a.info ,baizhan, error.log这三个文件成test.tar.gz
tar -zcvf test.tar.gz a.info baizhan error.log
#解压缩,并且用-C 文件路径 来把文件解压到目标路径
tar -zxvf test.tar.gz -C /usr/local/
#对小文件进行压缩和解压
gzip a.info
gunzip a.info.gz
7.2 搜索文件
搜索文件的内容
grep 参数 查找内容 源文件
-b 将可执行文件当作文本文件来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择--仅仅列出没有关键词的行
-E 开启拓展的正则表达式
#搜索文件里面是否有a的行
grep "a" a.info
#搜索相应的文件,所属用户者,组等
find 查找路径 寻找条件 操作
-name 匹配名称
-perm 匹配权限
-user 匹配所有者
-group 匹配所有组
-mtime 匹配修改内容的时间
find ./ -name *.info
find / -name*.info
8.系统工作命令
8.1 重启,关机,下载
关于计算机系统处理的相关命令
reboot 重启系统,仅管理员来执行
poweroff 关机,仅管理员来执行
grep 参数 查找内容 源文件
-b 将可执行文件当作文本文件来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择--仅仅列出没有关键词的行
-E 开启拓展的正则表达式
#搜索文件里面是否有a的行
grep "a" a.info
#搜索相应的文件,所属用户者,组等
find 查找路径 寻找条件 操作
-name 匹配名称
-perm 匹配权限
-user 匹配所有者
-group 匹配所有组
-mtime 匹配修改内容的时间
find ./ -name *.info
find / -name*.info
8.2 系统运行状态检测
查看系统网卡
ip addr
系统内核版本
uname -a
cat /etc/redhat-release
查看系统内存使用情况
free-h
查看系统的登录记录
last 参数
显示历史执行命令
history
查看系统负载信息
uptime
load average后面三个数值的含义是最近1分钟、最近5分钟、最近15分钟系统的负载值。这个值的意义是,单位时间段内CPU活动进程数。如果你的机器为单核,那么只要这几个值均<1,代表系统就没有负载压力,如果你的机器为N核,那么必须是这几个值均<N才可认为系统没有负载压力。
9.linux管道符,重定向,环境变量
9.1 重定向
touch baizhan 输出百战用户的详细信息
9.1.1 输入重定向
命令 < 文件 讲文件作为命令的标准输入
命令 <<分节符 从标准输入中读入,直到遇见分界符才停止
命令<文件1>文件2 将文件1作为命令的标准输入,并将标准输出到文件2
9.1.2 输出重定向
命令>文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令2>文件 将错误输出重定向到一个文件夹中(清空原有文件的数据)
命令>>文件 将标准输出重定向到一个文件夹中(追加到原有内容后面)
命令2>>文件 将错误输出重定向到一个文件夹中(追加到原有内容后面)
命令>>文件2 将标准输出与错误输出共同重定向到一个文件夹中(追加到原有内容后面)
9.2 管道符
用来连接两条命令的,以'|'作为分割,通过管道符把grep "sbin/nologin" /etc/passwd 的输出内容转入到wc-l作为输入内容
grep "sbin/nologin" /etc/passwd | wc-l
用管道符实现分页操作
ls -l /etc/ | more
可以无限加入相应的管道符来衔接命令
9.3 通配符
模糊搜索内容
*代表所有
ls -l /dev/sda* 匹配/dev/sda后面的所有字符
ls-l /dev/sda? 匹配/dev/sda后面的任意单个字符
ls -l /dev/sda[0-9] 范围在4-9内的文件
ls -l /dev/sda[^4-9] 范围不在4-9内的文件
9.4 环境变量
9.4.1 查找软件安装目录
whereis 软件名称
whereis jdj1.8
9.4.2 查看PATH
#echo $PATH -------显示PATH设置。
#env -------显示当前用户变量。
9.4.3 设置环境变量------登录的所有用户
打开系统环境变量编辑窗口
#打开系统环境变量编辑窗口
vim /etc/profile
#在最后插入相应系统级别环境变量
export JAVA_HOME=/usr/local/jdk1.8
export path=$path:$JAVA_HOME/bin/
#生效系统级环境变量,可以重启来实现,或者通过如下命令
source /etc/profile
echo $path
设置用户自己的环境变量---仅针对用户自己
#通过修改.profile文件:
vim ~/.profile
#添加相应系统路径
//在最后一行添上:
export PATH=/usr/local/mongodb/bin:$PATH
#使其生效
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.profile”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
10.磁盘管理
磁盘用来存储文件的,linux的磁盘可以添加很多个分区来防止一坏全坏的现象,同时经常需要观察磁盘的使用情况,防止某个磁盘满了导致文件报错,有如下方式查看和添加分区。
10.1 查看与创建磁盘分区
fdisk 必要参数 选择参数
-m 查看全部可用参数
-n 添加新的分区
-d 删除某个分区信息
-l 列出所有可用的分区类型
-t 改变某个分区的类型
-p 查看分区信息
-w 保存并退出
-q 不报存直接退出
10.2 添加一个磁盘分区
先查看磁盘情况
fdisk -l
例子:给/dev/mapper/centos-root磁盘添加一个分区
fdisk /dev/mapper/centos-root ------转到该磁盘下
n ------添加新的分区
p ------添加
1 ------编号
+2G ------内存大小
w -----保存退出
10.3 显示磁盘容量
df 选项 目录或文件名
-a 显示所有文件系统信息
-m 以MB为单位显示容量
-k 以KB为单位显示容量
-h 使用人民习惯的容量显示方式显示容量
-T 显示该分区的文件系统名称
-i 未使用的磁盘容量来显示,与h相反
10.4 设置链接文件
链接分为硬链接和软连接
硬链接:类似于指针,既使原文件删除,依旧能获取到文件信息
软链接:类似于快捷方式,原文件删除,快捷方式失效
ln 命令
ln 选项 目标
选项如下:
-s 创建符号链接,不带参数默认创建硬链接
-f 强制创建文件或目录链接
-i 覆盖前先询问
-v 显示创建链接文件
例子:
cat a.info
ln -s a.info b.info
cat b.info
rm -rf a.info
cat b.info
11.软件安装
11.1 源码安装
比较繁琐,需要配置操作系统,编译参数等,不推荐
11.2 rpm安装
rpm安装软件:一个安装管理软件,帮助我们更快安装的
rpm基本安装命令格式
rpm -ivh filename.rpm 安装软件命令格式,i代表安装,v代表查看详细安装信息,h以安装信息栏显示安装进度
rpm -Uvh filename.rpm 升级软件的命令格式
rpm -e filename.rpm 卸载软件的命令格式
rpm -qpi filename.rpm 查询软件描述信息
rpm -qpl filename.rpm 列出软件文件信息
rpm -qf filename.rpm 查询文件属于那个rpm
11.3 yum 安装
基于rpm的一个在线软件管理工具,能一站式服务到位
-
配置yum安装本地源,yum是国外网站,本地访问不方便
#找到yum源
vim /etc/yum.repos.d/CenOS-Base.repo
#备份
mv CenOS-Base.repo CenOS-Base.repo.bak
#下载阿里云源文件
wget -o CenOS-Base.repo
http://mirrors.aliyun.com/repo/CenOS-7.repo
#加载yum源
yum clean all
yum makecache
#检查是否是阿里的
cat /etc/yum.repos.d/CenOS-Base.repo
#参考yum安装手册进行相应安装操作
基础内容就到这里啦,想学习更多内容,可以进入高级篇